Browse Source

Fixes left/up axis not mappable as actions

Gilles Roudiere 7 years ago
parent
commit
7e89dc432c
2 changed files with 4 additions and 3 deletions
  1. 2 2
      core/os/input_event.cpp
  2. 2 1
      editor/project_settings_editor.cpp

+ 2 - 2
core/os/input_event.cpp

@@ -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;
 	}
 	}

+ 2 - 1
editor/project_settings_editor.cpp

@@ -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;
 				}
 				}