summaryrefslogtreecommitdiff
path: root/src/input_common/sdl/sdl_impl.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2020-02-01 14:02:41 -0500
committerGitHub <noreply@github.com>2020-02-01 14:02:41 -0500
commit69a6796de10357947d3e0411126b13c59628cb51 (patch)
tree4478c6e702785340b1d453ed55da23448d88e8f5 /src/input_common/sdl/sdl_impl.cpp
parentc18f9898d9d155504e8d608238db9a9d12a743c6 (diff)
parent635deb70d4c7b09749d9d7edb9515ede496f7f3e (diff)
Merge pull request #3284 from CJBok/hid-fix
hid: Fix analog sticks directional states
Diffstat (limited to 'src/input_common/sdl/sdl_impl.cpp')
-rw-r--r--src/input_common/sdl/sdl_impl.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/input_common/sdl/sdl_impl.cpp b/src/input_common/sdl/sdl_impl.cpp
index d2e9d278f..a2e0c0bd2 100644
--- a/src/input_common/sdl/sdl_impl.cpp
+++ b/src/input_common/sdl/sdl_impl.cpp
@@ -342,6 +342,22 @@ public:
return std::make_tuple<float, float>(0.0f, 0.0f);
}
+ bool GetAnalogDirectionStatus(Input::AnalogDirection direction) const override {
+ const auto [x, y] = GetStatus();
+ const float directional_deadzone = 0.4f;
+ switch (direction) {
+ case Input::AnalogDirection::RIGHT:
+ return x > directional_deadzone;
+ case Input::AnalogDirection::LEFT:
+ return x < -directional_deadzone;
+ case Input::AnalogDirection::UP:
+ return y > directional_deadzone;
+ case Input::AnalogDirection::DOWN:
+ return y < -directional_deadzone;
+ }
+ return false;
+ }
+
private:
std::shared_ptr<SDLJoystick> joystick;
const int axis_x;