Fix pinch gestures for web (#3153)
This commit is contained in:
parent
ffe4d36e0a
commit
dd2d64e058
1 changed files with 7 additions and 5 deletions
|
@ -203,6 +203,8 @@ typedef struct {
|
||||||
Vector2 downDragPosition; // Touch drag position
|
Vector2 downDragPosition; // Touch drag position
|
||||||
Vector2 moveDownPositionA; // First touch down position on move
|
Vector2 moveDownPositionA; // First touch down position on move
|
||||||
Vector2 moveDownPositionB; // Second touch down position on move
|
Vector2 moveDownPositionB; // Second touch down position on move
|
||||||
|
Vector2 previousPositionA; // Previous position A to compare for pinch gestures
|
||||||
|
Vector2 previousPositionB; // Previous position B to compare for pinch gestures
|
||||||
int tapCounter; // TAP counter (one tap implies TOUCH_ACTION_DOWN and TOUCH_ACTION_UP actions)
|
int tapCounter; // TAP counter (one tap implies TOUCH_ACTION_DOWN and TOUCH_ACTION_UP actions)
|
||||||
} Touch;
|
} Touch;
|
||||||
struct {
|
struct {
|
||||||
|
@ -364,6 +366,9 @@ void ProcessGestureEvent(GestureEvent event)
|
||||||
GESTURES.Touch.downPositionA = event.position[0];
|
GESTURES.Touch.downPositionA = event.position[0];
|
||||||
GESTURES.Touch.downPositionB = event.position[1];
|
GESTURES.Touch.downPositionB = event.position[1];
|
||||||
|
|
||||||
|
GESTURES.Touch.previousPositionA = GESTURES.Touch.downPositionA;
|
||||||
|
GESTURES.Touch.previousPositionB = GESTURES.Touch.downPositionB;
|
||||||
|
|
||||||
//GESTURES.Pinch.distance = rgVector2Distance(GESTURES.Touch.downPositionA, GESTURES.Touch.downPositionB);
|
//GESTURES.Pinch.distance = rgVector2Distance(GESTURES.Touch.downPositionA, GESTURES.Touch.downPositionB);
|
||||||
|
|
||||||
GESTURES.Pinch.vector.x = GESTURES.Touch.downPositionB.x - GESTURES.Touch.downPositionA.x;
|
GESTURES.Pinch.vector.x = GESTURES.Touch.downPositionB.x - GESTURES.Touch.downPositionA.x;
|
||||||
|
@ -376,18 +381,15 @@ void ProcessGestureEvent(GestureEvent event)
|
||||||
{
|
{
|
||||||
GESTURES.Pinch.distance = rgVector2Distance(GESTURES.Touch.moveDownPositionA, GESTURES.Touch.moveDownPositionB);
|
GESTURES.Pinch.distance = rgVector2Distance(GESTURES.Touch.moveDownPositionA, GESTURES.Touch.moveDownPositionB);
|
||||||
|
|
||||||
GESTURES.Touch.downPositionA = GESTURES.Touch.moveDownPositionA;
|
|
||||||
GESTURES.Touch.downPositionB = GESTURES.Touch.moveDownPositionB;
|
|
||||||
|
|
||||||
GESTURES.Touch.moveDownPositionA = event.position[0];
|
GESTURES.Touch.moveDownPositionA = event.position[0];
|
||||||
GESTURES.Touch.moveDownPositionB = event.position[1];
|
GESTURES.Touch.moveDownPositionB = event.position[1];
|
||||||
|
|
||||||
GESTURES.Pinch.vector.x = GESTURES.Touch.moveDownPositionB.x - GESTURES.Touch.moveDownPositionA.x;
|
GESTURES.Pinch.vector.x = GESTURES.Touch.moveDownPositionB.x - GESTURES.Touch.moveDownPositionA.x;
|
||||||
GESTURES.Pinch.vector.y = GESTURES.Touch.moveDownPositionB.y - GESTURES.Touch.moveDownPositionA.y;
|
GESTURES.Pinch.vector.y = GESTURES.Touch.moveDownPositionB.y - GESTURES.Touch.moveDownPositionA.y;
|
||||||
|
|
||||||
if ((rgVector2Distance(GESTURES.Touch.downPositionA, GESTURES.Touch.moveDownPositionA) >= MINIMUM_PINCH) || (rgVector2Distance(GESTURES.Touch.downPositionB, GESTURES.Touch.moveDownPositionB) >= MINIMUM_PINCH))
|
if ((rgVector2Distance(GESTURES.Touch.previousPositionA, GESTURES.Touch.moveDownPositionA) >= MINIMUM_PINCH) || (rgVector2Distance(GESTURES.Touch.previousPositionB, GESTURES.Touch.moveDownPositionB) >= MINIMUM_PINCH))
|
||||||
{
|
{
|
||||||
if ((rgVector2Distance(GESTURES.Touch.moveDownPositionA, GESTURES.Touch.moveDownPositionB) - GESTURES.Pinch.distance) < 0) GESTURES.current = GESTURE_PINCH_IN;
|
if ( rgVector2Distance(GESTURES.Touch.previousPositionA, GESTURES.Touch.previousPositionB) > rgVector2Distance(GESTURES.Touch.moveDownPositionA, GESTURES.Touch.moveDownPositionB) ) GESTURES.current = GESTURE_PINCH_IN;
|
||||||
else GESTURES.current = GESTURE_PINCH_OUT;
|
else GESTURES.current = GESTURE_PINCH_OUT;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue