Browse Source

Support touch/mouse indistinctly

REMOVED: IsTouchDetected()
pull/1092/head
Ray 5 years ago
parent
commit
954f029118
2 changed files with 9 additions and 35 deletions
  1. +9
    -34
      src/core.c
  2. +0
    -1
      src/raylib.h

+ 9
- 34
src/core.c View File

@ -427,7 +427,6 @@ static pthread_t gamepadThreadId; // Gamepad reading thread id
static char gamepadName[64]; // Gamepad name holder static char gamepadName[64]; // Gamepad name holder
#endif #endif
bool touchDetected = false;
//----------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------
// Timming system variables // Timming system variables
@ -2441,16 +2440,11 @@ bool IsMouseButtonPressed(int button)
{ {
bool pressed = false; bool pressed = false;
// TODO: Review, gestures could be not supported despite being on Android platform!
#if defined(PLATFORM_ANDROID) #if defined(PLATFORM_ANDROID)
if (IsGestureDetected(GESTURE_TAP)) pressed = true; if (IsGestureDetected(GESTURE_TAP)) pressed = true;
#else #else
if ((currentMouseState[button] != previousMouseState[button]) && (currentMouseState[button] == 1)) pressed = true;
#endif
#if defined(PLATFORM_WEB)
if (IsTouchDetected()) pressed = true; // There was a touch!
// NOTE: On PLATFORM_DESKTOP and PLATFORM_WEB IsMouseButtonPressed() is equivalent to GESTURE_TAP
if (((currentMouseState[button] != previousMouseState[button]) && (currentMouseState[button] == 1)) || IsGestureDetected(GESTURE_TAP)) pressed = true;
#endif #endif
return pressed; return pressed;
@ -2464,7 +2458,8 @@ bool IsMouseButtonDown(int button)
#if defined(PLATFORM_ANDROID) #if defined(PLATFORM_ANDROID)
if (IsGestureDetected(GESTURE_HOLD)) down = true; if (IsGestureDetected(GESTURE_HOLD)) down = true;
#else #else
if (GetMouseButtonStatus(button) == 1) down = true;
// NOTE: On PLATFORM_DESKTOP and PLATFORM_WEB IsMouseButtonDown() is equivalent to GESTURE_HOLD or GESTURE_DRAG
if ((GetMouseButtonStatus(button) == 1) || IsGestureDetected(GESTURE_HOLD) || IsGestureDetected(GESTURE_DRAG)) down = true;
#endif #endif
return down; return down;
@ -2519,16 +2514,12 @@ Vector2 GetMousePosition(void)
{ {
Vector2 position = { 0.0f, 0.0f }; Vector2 position = { 0.0f, 0.0f };
#if defined(PLATFORM_ANDROID)
#if defined(PLATFORM_ANDROID) || defined(PLATFORM_WEB)
position = GetTouchPosition(0); position = GetTouchPosition(0);
#else #else
position = (Vector2){ (mousePosition.x + mouseOffset.x)*mouseScale.x, (mousePosition.y + mouseOffset.y)*mouseScale.y }; position = (Vector2){ (mousePosition.x + mouseOffset.x)*mouseScale.x, (mousePosition.y + mouseOffset.y)*mouseScale.y };
#endif #endif
#if defined(PLATFORM_WEB)
if (IsTouchDetected()) position = GetTouchPosition(0);
#endif
return position; return position;
} }
@ -2575,16 +2566,6 @@ int GetMouseWheelMove(void)
#endif #endif
} }
// Detect if a touch has happened
bool IsTouchDetected(void)
{
#if defined(PLATFORM_ANDROID) || defined(PLATFORM_WEB)
return touchDetected;
#else // PLATFORM_DESKTOP, PLATFORM_RPI
return false;
#endif
}
// Returns touch position X for touch point 0 (relative to screen size) // Returns touch position X for touch point 0 (relative to screen size)
int GetTouchX(void) int GetTouchX(void)
{ {
@ -2627,14 +2608,12 @@ Vector2 GetTouchPosition(int index)
position.y = position.y*((float)renderHeight/(float)displayHeight) - renderOffsetY/2; position.y = position.y*((float)renderHeight/(float)displayHeight) - renderOffsetY/2;
} }
#endif #endif
#elif defined(PLATFORM_RPI)
#endif
#if defined(PLATFORM_RPI)
position = touchPosition[index]; position = touchPosition[index];
#else // PLATFORM_DESKTOP
#endif
#if defined(PLATFORM_DESKTOP)
// TODO: GLFW is not supporting multi-touch input just yet // TODO: GLFW is not supporting multi-touch input just yet
// https://www.codeproject.com/Articles/668404/Programming-for-Multi-Touch // https://www.codeproject.com/Articles/668404/Programming-for-Multi-Touch
// https://docs.microsoft.com/en-us/windows/win32/wintouch/getting-started-with-multi-touch-messages // https://docs.microsoft.com/en-us/windows/win32/wintouch/getting-started-with-multi-touch-messages
@ -3745,8 +3724,6 @@ static void PollInputEvents(void)
previousMouseWheelY = currentMouseWheelY; previousMouseWheelY = currentMouseWheelY;
currentMouseWheelY = 0; currentMouseWheelY = 0;
touchDetected = false;
#endif #endif
#if defined(PLATFORM_DESKTOP) #if defined(PLATFORM_DESKTOP)
@ -4393,8 +4370,6 @@ static EM_BOOL EmscriptenMouseCallback(int eventType, const EmscriptenMouseEvent
// Register touch input events // Register touch input events
static EM_BOOL EmscriptenTouchCallback(int eventType, const EmscriptenTouchEvent *touchEvent, void *userData) static EM_BOOL EmscriptenTouchCallback(int eventType, const EmscriptenTouchEvent *touchEvent, void *userData)
{ {
touchDetected = true;
#if defined(SUPPORT_GESTURES_SYSTEM) #if defined(SUPPORT_GESTURES_SYSTEM)
GestureEvent gestureEvent; GestureEvent gestureEvent;

+ 0
- 1
src/raylib.h View File

@ -1013,7 +1013,6 @@ RLAPI void SetMouseScale(float scaleX, float scaleY); // Set mouse scali
RLAPI int GetMouseWheelMove(void); // Returns mouse wheel movement Y RLAPI int GetMouseWheelMove(void); // Returns mouse wheel movement Y
// Input-related functions: touch // Input-related functions: touch
RLAPI bool IsTouchDetected(void); // Detect if a touch has happened
RLAPI int GetTouchX(void); // Returns touch position X for touch point 0 (relative to screen size) RLAPI int GetTouchX(void); // Returns touch position X for touch point 0 (relative to screen size)
RLAPI int GetTouchY(void); // Returns touch position Y for touch point 0 (relative to screen size) RLAPI int GetTouchY(void); // Returns touch position Y for touch point 0 (relative to screen size)
RLAPI Vector2 GetTouchPosition(int index); // Returns touch position XY for a touch point index (relative to screen size) RLAPI Vector2 GetTouchPosition(int index); // Returns touch position XY for a touch point index (relative to screen size)

Loading…
Cancel
Save