1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-05 12:10:55 +00:00

Fix axis mapped to DPad buttons not releasing opposite button

This commit is contained in:
Marcel Admiraal
2022-08-17 09:12:47 +01:00
parent 2e24b76535
commit 61be617571

View File

@@ -974,11 +974,9 @@ void Input::joy_axis(int p_device, JoyAxis p_axis, float p_value) {
if (map.type == TYPE_BUTTON) { if (map.type == TYPE_BUTTON) {
bool pressed = map.value > 0.5; bool pressed = map.value > 0.5;
if (pressed == joy_buttons_pressed.has(_combine_device((JoyButton)map.index, p_device))) { if (pressed != joy_buttons_pressed.has(_combine_device((JoyButton)map.index, p_device))) {
// Button already pressed or released; so ignore. _button_event(p_device, (JoyButton)map.index, pressed);
return;
} }
_button_event(p_device, (JoyButton)map.index, pressed);
// Ensure opposite D-Pad button is also released. // Ensure opposite D-Pad button is also released.
switch ((JoyButton)map.index) { switch ((JoyButton)map.index) {
@@ -1129,7 +1127,7 @@ Input::JoyEvent Input::_get_mapped_axis_event(const JoyDeviceMapping &mapping, J
value = -value; value = -value;
} }
if (binding.input.axis.range == FULL_AXIS || 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)) { (binding.input.axis.range == NEGATIVE_HALF_AXIS && value < 0)) {
event.type = binding.outputType; event.type = binding.outputType;
float shifted_positive_value = 0; float shifted_positive_value = 0;