You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-15 13:51:40 +00:00
Fix weak and strong joy vibration being swapped
(cherry picked from commit e5ecc392c9)
This commit is contained in:
@@ -122,13 +122,19 @@ void JoypadSDL::process_events() {
|
||||
SDL_Joystick *sdl_joy = SDL_GetJoystickFromID(joypads[i].sdl_instance_idx);
|
||||
Vector2 strength = Input::get_singleton()->get_joy_vibration_strength(i);
|
||||
|
||||
// If the vibration was requested to start, SDL_RumbleJoystick will start it.
|
||||
// If the vibration was requested to stop, strength and duration will be 0, so SDL will stop the rumble.
|
||||
/*
|
||||
If the vibration was requested to start, SDL_RumbleJoystick will start it.
|
||||
If the vibration was requested to stop, strength and duration will be 0, so SDL will stop the rumble.
|
||||
|
||||
Here strength.y goes first and then strength.x, because Input.get_joy_vibration_strength().x
|
||||
is vibration's weak magnitude (high frequency rumble), and .y is strong magnitude (low frequency rumble),
|
||||
SDL_RumbleJoystick takes low frequency rumble first and then high frequency rumble.
|
||||
*/
|
||||
SDL_RumbleJoystick(
|
||||
sdl_joy,
|
||||
// Rumble strength goes from 0 to 0xFFFF
|
||||
strength.x * UINT16_MAX,
|
||||
strength.y * UINT16_MAX,
|
||||
strength.x * UINT16_MAX,
|
||||
Input::get_singleton()->get_joy_vibration_duration(i) * 1000);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user