Merge pull request #64532 from madmiraal/fix-63972-2-3.x

[3.x] Fix axis mapped to DPad buttons not releasing opposite button
This commit is contained in:
Rémi Verschelde 2022-08-24 20:10:51 +02:00 committed by GitHub
commit e6f9438d2a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -847,11 +847,9 @@ void InputDefault::joy_axis(int p_device, int p_axis, float p_value) {
}
bool pressed = map.value > 0.5;
if (pressed == joy_buttons_pressed.has(_combine_device(map.index, p_device))) {
// Button already pressed or released; so ignore.
return;
if (pressed != joy_buttons_pressed.has(_combine_device(map.index, p_device))) {
_button_event(p_device, map.index, pressed);
}
_button_event(p_device, map.index, pressed);
// Ensure opposite D-Pad button is also released.
switch (map.index) {
@ -998,7 +996,7 @@ InputDefault::JoyEvent InputDefault::_get_mapped_axis_event(const JoyDeviceMappi
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;