summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorDoyle <[email protected]>2020-10-06 05:16:23 +1100
committerGitHub <[email protected]>2020-10-05 20:16:23 +0200
commitb29311c7cacf17b3512d837951d9e02fceae586f (patch)
tree01d7e1f1461118861c7a1439a3aa39b199bbed19 /src
parenta4ea9f872ffef9ffe66fade37e984c3cc97910cb (diff)
downloadraylib-b29311c7cacf17b3512d837951d9e02fceae586f.tar.gz
raylib-b29311c7cacf17b3512d837951d9e02fceae586f.zip
mouse: Return float movement for precise scrolling where possible (#1397)
Diffstat (limited to 'src')
-rw-r--r--src/camera.h4
-rw-r--r--src/core.c20
-rw-r--r--src/raylib.h2
3 files changed, 13 insertions, 13 deletions
diff --git a/src/camera.h b/src/camera.h
index 3b0feb43..2463200c 100644
--- a/src/camera.h
+++ b/src/camera.h
@@ -236,7 +236,7 @@ static void DisableCursor() {} // Lock cursor
static int IsKeyDown(int key) { return 0; }
static int IsMouseButtonDown(int button) { return 0;}
-static int GetMouseWheelMove() { return 0; }
+static float GetMouseWheelMove() { return 0.f; }
static Vector2 GetMousePosition() { return (Vector2){ 0.0f, 0.0f }; }
#endif
@@ -285,7 +285,7 @@ void UpdateCamera(Camera *camera)
// Mouse movement detection
Vector2 mousePositionDelta = { 0.0f, 0.0f };
Vector2 mousePosition = GetMousePosition();
- int mouseWheelMove = GetMouseWheelMove();
+ float mouseWheelMove = GetMouseWheelMove();
// Keys input detection
// TODO: Input detection is raylib-dependant, it could be moved outside the module
diff --git a/src/core.c b/src/core.c
index f08124f5..c56b6696 100644
--- a/src/core.c
+++ b/src/core.c
@@ -428,8 +428,8 @@ typedef struct CoreData {
char currentButtonState[3]; // Registers current mouse button state
char previousButtonState[3]; // Registers previous mouse button state
- int currentWheelMove; // Registers current mouse wheel variation
- int previousWheelMove; // Registers previous mouse wheel variation
+ float currentWheelMove; // Registers current mouse wheel variation
+ float previousWheelMove; // Registers previous mouse wheel variation
#if defined(PLATFORM_RPI) || defined(PLATFORM_DRM)
char currentButtonStateEvdev[3]; // Holds the new mouse state for the next polling event to grab (Can't be written directly due to multithreading, app could miss the update)
#endif
@@ -2722,12 +2722,12 @@ void SetMouseScale(float scaleX, float scaleY)
}
// Returns mouse wheel movement Y
-int GetMouseWheelMove(void)
+float GetMouseWheelMove(void)
{
#if defined(PLATFORM_ANDROID)
- return 0;
+ return 0.f;
#elif defined(PLATFORM_WEB)
- return CORE.Input.Mouse.previousWheelMove/100;
+ return CORE.Input.Mouse.previousWheelMove/100.f;
#else
return CORE.Input.Mouse.previousWheelMove;
#endif
@@ -3896,7 +3896,7 @@ static void PollInputEvents(void)
// Register previous mouse states
CORE.Input.Mouse.previousWheelMove = CORE.Input.Mouse.currentWheelMove;
- CORE.Input.Mouse.currentWheelMove = 0;
+ CORE.Input.Mouse.currentWheelMove = 0.f;
for (int i = 0; i < 3; i++)
{
CORE.Input.Mouse.previousButtonState[i] = CORE.Input.Mouse.currentButtonState[i];
@@ -3918,7 +3918,7 @@ static void PollInputEvents(void)
// Register previous mouse states
CORE.Input.Mouse.previousWheelMove = CORE.Input.Mouse.currentWheelMove;
- CORE.Input.Mouse.currentWheelMove = 0;
+ CORE.Input.Mouse.currentWheelMove = 0.f;
for (int i = 0; i < 3; i++) CORE.Input.Mouse.previousButtonState[i] = CORE.Input.Mouse.currentButtonState[i];
#endif // PLATFORM_UWP
@@ -3934,7 +3934,7 @@ static void PollInputEvents(void)
// Register previous mouse wheel state
CORE.Input.Mouse.previousWheelMove = CORE.Input.Mouse.currentWheelMove;
- CORE.Input.Mouse.currentWheelMove = 0;
+ CORE.Input.Mouse.currentWheelMove = 0.f;
#endif
// Register previous touch states
@@ -4151,7 +4151,7 @@ static void ErrorCallback(int error, const char *description)
// GLFW3 Srolling Callback, runs on mouse wheel
static void ScrollCallback(GLFWwindow *window, double xoffset, double yoffset)
{
- CORE.Input.Mouse.currentWheelMove = (int)yoffset;
+ CORE.Input.Mouse.currentWheelMove = (float)yoffset;
}
// GLFW3 Keyboard Callback, runs on key pressed
@@ -5520,7 +5520,7 @@ void UWPSetMouseSetPosFunc(UWPMouseSetPosFunc func) { uwpMouseSetPosFunc = func;
void *UWPGetCoreWindowPtr() { return uwpCoreWindow; }
void UWPSetCoreWindowPtr(void* ptr) { uwpCoreWindow = ptr; }
-void UWPMouseWheelEvent(int deltaY) { CORE.Input.Mouse.currentWheelMove = (int)deltaY; }
+void UWPMouseWheelEvent(int deltaY) { CORE.Input.Mouse.currentWheelMove = (float)deltaY; }
void UWPKeyDownEvent(int key, bool down, bool controlKey)
{
diff --git a/src/raylib.h b/src/raylib.h
index 25e0b817..f0eef587 100644
--- a/src/raylib.h
+++ b/src/raylib.h
@@ -1015,7 +1015,7 @@ RLAPI Vector2 GetMousePosition(void); // Returns mouse p
RLAPI void SetMousePosition(int x, int y); // Set mouse position XY
RLAPI void SetMouseOffset(int offsetX, int offsetY); // Set mouse offset
RLAPI void SetMouseScale(float scaleX, float scaleY); // Set mouse scaling
-RLAPI int GetMouseWheelMove(void); // Returns mouse wheel movement Y
+RLAPI float GetMouseWheelMove(void); // Returns mouse wheel movement Y
// Input-related functions: touch
RLAPI int GetTouchX(void); // Returns touch position X for touch point 0 (relative to screen size)