diff options
author | bunnei <bunneidev@gmail.com> | 2021-10-14 00:15:18 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-14 00:15:18 +0200 |
commit | 2643752f9343a7464e46c813104333911ad070fb (patch) | |
tree | cd726588a3bb623c5ab0c27a0c9b504399d1e697 | |
parent | Merge pull request #7158 from ameerj/window-900p (diff) | |
parent | input_common/sdl: Fix joystick range (diff) | |
download | yuzu-2643752f9343a7464e46c813104333911ad070fb.tar yuzu-2643752f9343a7464e46c813104333911ad070fb.tar.gz yuzu-2643752f9343a7464e46c813104333911ad070fb.tar.bz2 yuzu-2643752f9343a7464e46c813104333911ad070fb.tar.lz yuzu-2643752f9343a7464e46c813104333911ad070fb.tar.xz yuzu-2643752f9343a7464e46c813104333911ad070fb.tar.zst yuzu-2643752f9343a7464e46c813104333911ad070fb.zip |
-rw-r--r-- | src/input_common/sdl/sdl_impl.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/input_common/sdl/sdl_impl.cpp b/src/input_common/sdl/sdl_impl.cpp index ab6211b29..ecb00d428 100644 --- a/src/input_common/sdl/sdl_impl.cpp +++ b/src/input_common/sdl/sdl_impl.cpp @@ -170,7 +170,8 @@ public: float GetAxis(int axis, float range, float offset) const { std::lock_guard lock{mutex}; const float value = static_cast<float>(state.axes.at(axis)) / 32767.0f; - return (value + offset) / range; + const float offset_scale = (value + offset) > 0.0f ? 1.0f + offset : 1.0f - offset; + return (value + offset) / range / offset_scale; } bool RumblePlay(u16 amp_low, u16 amp_high) { @@ -789,8 +790,8 @@ public: const std::string invert_y_value = params.Get("invert_y", "+"); const bool invert_x = invert_x_value == "-"; const bool invert_y = invert_y_value == "-"; - const float offset_x = params.Get("offset_x", 0.0f); - const float offset_y = params.Get("offset_y", 0.0f); + const float offset_x = std::clamp(params.Get("offset_x", 0.0f), -0.99f, 0.99f); + const float offset_y = std::clamp(params.Get("offset_y", 0.0f), -0.99f, 0.99f); auto joystick = state.GetSDLJoystickByGUID(guid, port); // This is necessary so accessing GetAxis with axis_x and axis_y won't crash |