From 2f5a7ddcc6a5cbc16261d0cacb77ca9c0e972fc0 Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 2 Mar 2020 00:07:06 +0100 Subject: [PATCH] Added comment on IsMouseButtonDown() issue IsMouseButtonDown() does not process touch state down properly, state is reseted every frame... --- src/core.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/core.c b/src/core.c index eaea5656c..c8b7e3b78 100644 --- a/src/core.c +++ b/src/core.c @@ -2522,9 +2522,16 @@ bool IsMouseButtonDown(int button) if (IsGestureDetected(GESTURE_HOLD)) down = true; #else if (glfwGetMouseButton(CORE.Window.handle, button)) down = true; + + // WARNING: currentButtonState is filled by an event callback and + // reseted every frame (moving value to previousButtonState), consequently, + // if button is kept down, it is not properly detected using currentButtonState + // Same issue happens with touch events, they should be stycky an not reseted //if (CORE.Input.Mouse.currentButtonState[button] == 1) down = true; // Map touches to mouse buttons checking + // WARNING: currentTouchState is reseted every frame and only + // refilled on mouse event (not tracking stationary state properly!) if (CORE.Input.Touch.currentTouchState[button] == 1) down = true; #endif @@ -4008,7 +4015,7 @@ static void KeyCallback(GLFWwindow *window, int key, int scancode, int action, i static void MouseButtonCallback(GLFWwindow *window, int button, int action, int mods) { CORE.Input.Mouse.currentButtonState[button] = action; - + #if defined(SUPPORT_GESTURES_SYSTEM) && defined(SUPPORT_MOUSE_GESTURES) // Process mouse events as touches to be able to use mouse-gestures GestureEvent gestureEvent = { 0 };