summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorgerman77 <juangerman-13@hotmail.com>2021-10-08 03:35:30 +0200
committergerman77 <juangerman-13@hotmail.com>2021-10-11 08:03:01 +0200
commit8212a864cad67b5b3c1fb2212a637801539ba7eb (patch)
tree9fcf59baa18ee9fdee1eb1e93ec0f2d38535232a /src
parentMerge pull request #7118 from ameerj/vc-gpu-impl (diff)
downloadyuzu-8212a864cad67b5b3c1fb2212a637801539ba7eb.tar
yuzu-8212a864cad67b5b3c1fb2212a637801539ba7eb.tar.gz
yuzu-8212a864cad67b5b3c1fb2212a637801539ba7eb.tar.bz2
yuzu-8212a864cad67b5b3c1fb2212a637801539ba7eb.tar.lz
yuzu-8212a864cad67b5b3c1fb2212a637801539ba7eb.tar.xz
yuzu-8212a864cad67b5b3c1fb2212a637801539ba7eb.tar.zst
yuzu-8212a864cad67b5b3c1fb2212a637801539ba7eb.zip
Diffstat (limited to 'src')
-rw-r--r--src/input_common/sdl/sdl_impl.cpp7
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