mirror of
https://github.com/godotengine/godot.git
synced 2024-11-27 09:16:35 +08:00
InputDefault: Fix joypad actions when axis quickly changes direction.
The fix (inserting a fake event so actions get released properly) was already there but disregarded the case when the hardware sends values in the [0;1] range.
This commit is contained in:
parent
5052cb2b91
commit
3bea3256f5
@ -899,8 +899,14 @@ void InputDefault::joy_axis(int p_device, int p_axis, const JoyAxis &p_value) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (ABS(joy.last_axis[p_axis]) > 0.5 && joy.last_axis[p_axis] * p_value.value < 0) {
|
||||
//changed direction quickly, insert fake event to release pending inputmap actions
|
||||
//when changing direction quickly, insert fake event to release pending inputmap actions
|
||||
float last = joy.last_axis[p_axis];
|
||||
if (p_value.min == 0 && (last < 0.25 || last > 0.75) && (last - 0.5) * (p_value.value - 0.5) < 0) {
|
||||
JoyAxis jx;
|
||||
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) {
|
||||
JoyAxis jx;
|
||||
jx.min = p_value.min;
|
||||
jx.value = p_value.value < 0 ? 0.1 : -0.1;
|
||||
|
Loading…
Reference in New Issue
Block a user