Fixes left/up axis not mappable as actions

This commit is contained in:
Gilles Roudiere 2018-04-18 21:38:52 +02:00
parent 9ce8d8ddda
commit 7e89dc432c
2 changed files with 4 additions and 3 deletions

View file

@ -656,10 +656,10 @@ bool InputEventJoypadMotion::action_match(const Ref<InputEvent> &p_event, bool *
if (jm.is_null()) if (jm.is_null())
return false; return false;
bool match = (axis == jm->axis && ((axis_value < 0) == (jm->axis_value < 0) || jm->axis_value == 0)); bool match = (axis == jm->axis && (((axis_value < 0) == (jm->axis_value < 0)) || jm->axis_value == 0));
if (match) { if (match) {
if (p_pressed != NULL) if (p_pressed != NULL)
*p_pressed = Math::abs(jm->get_axis_value() >= p_deadzone); *p_pressed = Math::abs(jm->get_axis_value()) >= p_deadzone;
if (p_strength != NULL) if (p_strength != NULL)
*p_strength = (*p_pressed) ? Math::inverse_lerp(p_deadzone, 1.0f, Math::abs(jm->get_axis_value())) : 0.0f; *p_strength = (*p_pressed) ? Math::inverse_lerp(p_deadzone, 1.0f, Math::abs(jm->get_axis_value())) : 0.0f;
} }

View file

@ -234,6 +234,7 @@ void ProjectSettingsEditor::_device_input_add() {
Ref<InputEventJoypadMotion> jm; Ref<InputEventJoypadMotion> jm;
jm.instance(); jm.instance();
jm->set_axis(device_index->get_selected() >> 1); jm->set_axis(device_index->get_selected() >> 1);
jm->set_axis_value(device_index->get_selected() & 1 ? 1 : -1);
jm->set_device(_get_current_device()); jm->set_device(_get_current_device());
bool should_update_event = true; bool should_update_event = true;
@ -243,7 +244,7 @@ void ProjectSettingsEditor::_device_input_add() {
Ref<InputEventJoypadMotion> aie = events[i]; Ref<InputEventJoypadMotion> aie = events[i];
if (aie.is_null()) if (aie.is_null())
continue; continue;
if (aie->get_device() == jm->get_device() && aie->get_axis() == jm->get_axis()) { if (aie->get_device() == jm->get_device() && aie->get_axis() == jm->get_axis() && aie->get_axis_value() == jm->get_axis_value()) {
should_update_event = false; should_update_event = false;
break; break;
} }