Fixed mouse delta issue in relative mode
Fixed a delta retrieval issue with `GetMouseDelta` when the mouse is in relative mode. Solution by @ubkp
This commit is contained in:
parent
8bb71a0930
commit
931400ea81
|
|
@ -63,6 +63,7 @@ typedef struct {
|
|||
|
||||
SDL_Joystick *gamepad;
|
||||
SDL_Cursor *cursor;
|
||||
bool cursorRelative;
|
||||
} PlatformData;
|
||||
|
||||
//----------------------------------------------------------------------------------
|
||||
|
|
@ -842,6 +843,7 @@ void EnableCursor(void)
|
|||
SDL_SetRelativeMouseMode(SDL_FALSE);
|
||||
SDL_ShowCursor(SDL_ENABLE);
|
||||
|
||||
platform.cursorRelative = false;
|
||||
CORE.Input.Mouse.cursorHidden = false;
|
||||
}
|
||||
|
||||
|
|
@ -850,6 +852,7 @@ void DisableCursor(void)
|
|||
{
|
||||
SDL_SetRelativeMouseMode(SDL_TRUE);
|
||||
|
||||
platform.cursorRelative = true;
|
||||
CORE.Input.Mouse.cursorHidden = true;
|
||||
}
|
||||
|
||||
|
|
@ -924,7 +927,8 @@ void PollInputEvents(void)
|
|||
CORE.Input.Mouse.currentWheelMove.y = 0;
|
||||
|
||||
// Register previous mouse position
|
||||
CORE.Input.Mouse.previousPosition = CORE.Input.Mouse.currentPosition;
|
||||
if (platform.cursorRelative) CORE.Input.Mouse.currentPosition = (Vector2){ 0.0f, 0.0f };
|
||||
else CORE.Input.Mouse.previousPosition = CORE.Input.Mouse.currentPosition;
|
||||
|
||||
// Reset last gamepad button/axis registered state
|
||||
CORE.Input.Gamepad.lastButtonPressed = GAMEPAD_BUTTON_UNKNOWN;
|
||||
|
|
@ -1021,9 +1025,18 @@ void PollInputEvents(void)
|
|||
CORE.Input.Mouse.currentWheelMove.y = (float)event.wheel.y;
|
||||
} break;
|
||||
case SDL_MOUSEMOTION:
|
||||
{
|
||||
if (platform.cursorRelative)
|
||||
{
|
||||
CORE.Input.Mouse.currentPosition.x = (float)event.motion.xrel;
|
||||
CORE.Input.Mouse.currentPosition.y = (float)event.motion.yrel;
|
||||
CORE.Input.Mouse.previousPosition = (Vector2){ 0.0f, 0.0f };
|
||||
}
|
||||
else
|
||||
{
|
||||
CORE.Input.Mouse.currentPosition.x = (float)event.motion.x;
|
||||
CORE.Input.Mouse.currentPosition.y = (float)event.motion.y;
|
||||
}
|
||||
} break;
|
||||
|
||||
// Check gamepad events
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user