Skip to content

Commit

Permalink
Merge pull request #64531 from madmiraal/fix-63972-2
Browse files Browse the repository at this point in the history
Fix axis mapped to DPad buttons not releasing opposite button
  • Loading branch information
akien-mga authored Aug 24, 2022
2 parents 686286e + 61be617 commit d0a2a4c
Showing 1 changed file with 3 additions and 5 deletions.
8 changes: 3 additions & 5 deletions core/input/input.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -971,11 +971,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) {
Expand Down Expand Up @@ -1126,7 +1124,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;
Expand Down

0 comments on commit d0a2a4c

Please sign in to comment.