瀏覽代碼

Review gestures disable flag

Ray 6 年之前
父節點
當前提交
7524fdc3e1
共有 1 個文件被更改,包括 41 次插入15 次删除
  1. 41 15
      src/core.c

+ 41 - 15
src/core.c

@@ -3684,7 +3684,6 @@ static int32_t AndroidInputCallback(struct android_app *app, AInputEvent *event)
         ProcessGestureEvent(gestureEvent);
     }
 #else
-
     // Support only simple touch position
     if (flags == AMOTION_EVENT_ACTION_DOWN)
     {
@@ -3788,6 +3787,7 @@ static EM_BOOL EmscriptenTouchCallback(int eventType, const EmscriptenTouchEvent
     }
     */
 
+#if defined(SUPPORT_GESTURES_SYSTEM)
     GestureEvent gestureEvent;
 
     // Register touch actions
@@ -3822,6 +3822,17 @@ static EM_BOOL EmscriptenTouchCallback(int eventType, const EmscriptenTouchEvent
 
     // Gesture data is sent to gestures system for processing
     ProcessGestureEvent(gestureEvent);
+#else
+    // Support only simple touch position
+    if (eventType == EMSCRIPTEN_EVENT_TOUCHSTART)
+    {
+        // Get first touch position
+        touchPosition[0] = (Vector2){ touchEvent->touches[0].targetX, touchEvent->touches[0].targetY };
+
+        touchPosition[0].x /= (float)GetScreenWidth();
+        touchPosition[0].y /= (float)GetScreenHeight();
+    }
+#endif
 
     return 1;
 }
@@ -4242,9 +4253,10 @@ static void EventThreadSpawn(char *device)
 static void *EventThread(void *arg)
 {
     struct input_event event;
-    GestureEvent gestureEvent;
     InputEventWorker *worker = (InputEventWorker *)arg;
-    bool GestureNeedsUpdate = false;
+    
+    int touchAction = -1;
+    bool gestureUpdate = false;
 
     while (!windowShouldClose)
     {
@@ -4257,16 +4269,18 @@ static void *EventThread(void *arg)
                 {
                     mousePosition.x += event.value;
                     touchPosition[0].x = mousePosition.x;
-                    gestureEvent.touchAction = TOUCH_MOVE;
-                    GestureNeedsUpdate = true;
+                    
+                    touchAction = TOUCH_MOVE;
+                    gestureUpdate = true;
                 }
 
                 if (event.code == REL_Y)
                 {
                     mousePosition.y += event.value;
                     touchPosition[0].y = mousePosition.y;
-                    gestureEvent.touchAction = TOUCH_MOVE;
-                    GestureNeedsUpdate = true;
+                    
+                    touchAction = TOUCH_MOVE;
+                    gestureUpdate = true;
                 }
 
                 if (event.code == REL_WHEEL)
@@ -4282,15 +4296,17 @@ static void *EventThread(void *arg)
                 if (event.code == ABS_X)
                 {
                     mousePosition.x = (event.value - worker->absRange.x)*screenWidth/worker->absRange.width;   // Scale acording to absRange
-                    gestureEvent.touchAction = TOUCH_MOVE;
-                    GestureNeedsUpdate = true;
+                    
+                    touchAction = TOUCH_MOVE;
+                    gestureUpdate = true;
                 }
 
                 if (event.code == ABS_Y)
                 {
                     mousePosition.y = (event.value - worker->absRange.y)*screenHeight/worker->absRange.height; // Scale acording to absRange
-                    gestureEvent.touchAction = TOUCH_MOVE;
-                    GestureNeedsUpdate = true;
+                    
+                    touchAction = TOUCH_MOVE;
+                    gestureUpdate = true;
                 }
 
                 // Multitouch movement
@@ -4328,9 +4344,10 @@ static void *EventThread(void *arg)
                 if ((event.code == BTN_TOUCH) || (event.code == BTN_LEFT))
                 {
                     currentMouseStateEvdev[MOUSE_LEFT_BUTTON] = event.value;
-                    if (event.value > 0) gestureEvent.touchAction = TOUCH_DOWN;
-                    else gestureEvent.touchAction = TOUCH_UP;
-                    GestureNeedsUpdate = true;
+                    
+                    if (event.value > 0) touchAction = TOUCH_DOWN;
+                    else touchAction = TOUCH_UP;
+                    gestureUpdate = true;
                 }
 
                 if (event.code == BTN_RIGHT) currentMouseStateEvdev[MOUSE_RIGHT_BUTTON] =  event.value;
@@ -4346,22 +4363,31 @@ static void *EventThread(void *arg)
             if (mousePosition.y > screenHeight/mouseScale.y) mousePosition.y = screenHeight/mouseScale.y;
 
             // Gesture update
-            if (GestureNeedsUpdate)
+            if (gestureUpdate)
             {
+#if defined(SUPPORT_GESTURES_SYSTEM)
+                GestureEvent gestureEvent = { 0 };
+
                 gestureEvent.pointCount = 0;
+                gestureEvent.touchAction = touchAction;
+                
                 if (touchPosition[0].x >= 0) gestureEvent.pointCount++;
                 if (touchPosition[1].x >= 0) gestureEvent.pointCount++;
                 if (touchPosition[2].x >= 0) gestureEvent.pointCount++;
                 if (touchPosition[3].x >= 0) gestureEvent.pointCount++;
+                
                 gestureEvent.pointerId[0] = 0;
                 gestureEvent.pointerId[1] = 1;
                 gestureEvent.pointerId[2] = 2;
                 gestureEvent.pointerId[3] = 3;
+                
                 gestureEvent.position[0] = touchPosition[0];
                 gestureEvent.position[1] = touchPosition[1];
                 gestureEvent.position[2] = touchPosition[2];
                 gestureEvent.position[3] = touchPosition[3];
+                
                 ProcessGestureEvent(gestureEvent);
+#endif
             }
         }
         else