summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorFabio Alessandrelli <fabio.alessandrelli@gmail.com>2020-12-27 14:12:41 +0100
committerFabio Alessandrelli <fabio.alessandrelli@gmail.com>2021-01-18 12:30:38 +0100
commita1533f2c447216cbc15750782c3438eab671834f (patch)
tree5827868a2eb2efa7355e18ff0523055e3d974e4b /core
parent16fa4201f1c2f3b46c63e6d9933333e97354c753 (diff)
downloadredot-engine-a1533f2c447216cbc15750782c3438eab671834f.tar.gz
Better gamepad axis event injection.
In the core input handling code we have checks to make sure that if axis rapidly change sign we inject mid-points to release any pending inputmap action. The function though, did not correctly insert the mid-point causing dpads mapped to an axis that behaves like tri-state buttons (-1,0,1) to not be released correctly. This commit fixes that by including in the check the case where the axis swtiches from abs(1) to 0.
Diffstat (limited to 'core')
-rw-r--r--core/input/input.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/core/input/input.cpp b/core/input/input.cpp
index c96884a7b3..2e3f112ebc 100644
--- a/core/input/input.cpp
+++ b/core/input/input.cpp
@@ -886,10 +886,10 @@ void Input::joy_axis(int p_device, int p_axis, const JoyAxis &p_value) {
jx.min = p_value.min;
jx.value = p_value.value < 0.5 ? 0.6 : 0.4;
joy_axis(p_device, p_axis, jx);
- } else if (ABS(last) > 0.5 && last * p_value.value < 0) {
+ } else if (ABS(last) > 0.5 && last * p_value.value <= 0) {
JoyAxis jx;
jx.min = p_value.min;
- jx.value = p_value.value < 0 ? 0.1 : -0.1;
+ jx.value = last > 0 ? 0.1 : -0.1;
joy_axis(p_device, p_axis, jx);
}