summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Admiraal <madmiraal@users.noreply.github.com>2022-08-17 09:12:47 +0100
committerMarcel Admiraal <madmiraal@users.noreply.github.com>2022-08-17 09:12:47 +0100
commit61be6175717091f4da5d75a4321c9fc9577a9f6c (patch)
tree5d60e5d344234739eb9d4847090d9314e2e873af
parent2e24b76535dceb9cf18ab8ece3304ed92948c1b5 (diff)
Fix axis mapped to DPad buttons not releasing opposite button
-rw-r--r--core/input/input.cpp8
1 files changed, 3 insertions, 5 deletions
diff --git a/core/input/input.cpp b/core/input/input.cpp
index e08647f5ea..d8ededf373 100644
--- a/core/input/input.cpp
+++ b/core/input/input.cpp
@@ -974,11 +974,9 @@ void Input::joy_axis(int p_device, JoyAxis p_axis, float p_value) {
if (map.type == TYPE_BUTTON) {
bool pressed = map.value > 0.5;
- if (pressed == joy_buttons_pressed.has(_combine_device((JoyButton)map.index, p_device))) {
- // Button already pressed or released; so ignore.
- return;
+ if (pressed != joy_buttons_pressed.has(_combine_device((JoyButton)map.index, p_device))) {
+ _button_event(p_device, (JoyButton)map.index, pressed);
}
- _button_event(p_device, (JoyButton)map.index, pressed);
// Ensure opposite D-Pad button is also released.
switch ((JoyButton)map.index) {
@@ -1129,7 +1127,7 @@ Input::JoyEvent Input::_get_mapped_axis_event(const JoyDeviceMapping &mapping, J
value = -value;
}
if (binding.input.axis.range == FULL_AXIS ||
- (binding.input.axis.range == POSITIVE_HALF_AXIS && value > 0) ||
+ (binding.input.axis.range == POSITIVE_HALF_AXIS && value >= 0) ||
(binding.input.axis.range == NEGATIVE_HALF_AXIS && value < 0)) {
event.type = binding.outputType;
float shifted_positive_value = 0;