2
0
Эх сурвалжийг харах

Merge pull request #51713 from maiself/fix-input-methods-returning-zero-strength-master

Fix input methods returning zero strength when pressed status not requested (master)
Rémi Verschelde 4 жил өмнө
parent
commit
67881168d8

+ 12 - 8
core/input/input_event.cpp

@@ -431,10 +431,11 @@ bool InputEventKey::action_match(const Ref<InputEvent> &p_event, bool *p_pressed
 		match = get_keycode() == key->get_keycode() && (!key->is_pressed() || (code & event_code) == code);
 		match = get_keycode() == key->get_keycode() && (!key->is_pressed() || (code & event_code) == code);
 	}
 	}
 	if (match) {
 	if (match) {
+		bool pressed = key->is_pressed();
 		if (p_pressed != nullptr) {
 		if (p_pressed != nullptr) {
-			*p_pressed = key->is_pressed();
+			*p_pressed = pressed;
 		}
 		}
-		float strength = (p_pressed != nullptr && *p_pressed) ? 1.0f : 0.0f;
+		float strength = pressed ? 1.0f : 0.0f;
 		if (p_strength != nullptr) {
 		if (p_strength != nullptr) {
 			*p_strength = strength;
 			*p_strength = strength;
 		}
 		}
@@ -587,10 +588,11 @@ bool InputEventMouseButton::action_match(const Ref<InputEvent> &p_event, bool *p
 
 
 	bool match = mb->button_index == button_index;
 	bool match = mb->button_index == button_index;
 	if (match) {
 	if (match) {
+		bool pressed = mb->is_pressed();
 		if (p_pressed != nullptr) {
 		if (p_pressed != nullptr) {
-			*p_pressed = mb->is_pressed();
+			*p_pressed = pressed;
 		}
 		}
-		float strength = (p_pressed != nullptr && *p_pressed) ? 1.0f : 0.0f;
+		float strength = pressed ? 1.0f : 0.0f;
 		if (p_strength != nullptr) {
 		if (p_strength != nullptr) {
 			*p_strength = strength;
 			*p_strength = strength;
 		}
 		}
@@ -998,10 +1000,11 @@ bool InputEventJoypadButton::action_match(const Ref<InputEvent> &p_event, bool *
 
 
 	bool match = button_index == jb->button_index;
 	bool match = button_index == jb->button_index;
 	if (match) {
 	if (match) {
+		bool pressed = jb->is_pressed();
 		if (p_pressed != nullptr) {
 		if (p_pressed != nullptr) {
-			*p_pressed = jb->is_pressed();
+			*p_pressed = pressed;
 		}
 		}
-		float strength = (p_pressed != nullptr && *p_pressed) ? 1.0f : 0.0f;
+		float strength = pressed ? 1.0f : 0.0f;
 		if (p_strength != nullptr) {
 		if (p_strength != nullptr) {
 			*p_strength = strength;
 			*p_strength = strength;
 		}
 		}
@@ -1291,10 +1294,11 @@ bool InputEventAction::action_match(const Ref<InputEvent> &p_event, bool *p_pres
 
 
 	bool match = action == act->action;
 	bool match = action == act->action;
 	if (match) {
 	if (match) {
+		bool pressed = act->pressed;
 		if (p_pressed != nullptr) {
 		if (p_pressed != nullptr) {
-			*p_pressed = act->pressed;
+			*p_pressed = pressed;
 		}
 		}
-		float strength = (p_pressed != nullptr && *p_pressed) ? 1.0f : 0.0f;
+		float strength = pressed ? 1.0f : 0.0f;
 		if (p_strength != nullptr) {
 		if (p_strength != nullptr) {
 			*p_strength = strength;
 			*p_strength = strength;
 		}
 		}

+ 3 - 2
core/input/input_map.cpp

@@ -222,11 +222,12 @@ bool InputMap::event_get_action_status(const Ref<InputEvent> &p_event, const Str
 
 
 	Ref<InputEventAction> input_event_action = p_event;
 	Ref<InputEventAction> input_event_action = p_event;
 	if (input_event_action.is_valid()) {
 	if (input_event_action.is_valid()) {
+		bool pressed = input_event_action->is_pressed();
 		if (p_pressed != nullptr) {
 		if (p_pressed != nullptr) {
-			*p_pressed = input_event_action->is_pressed();
+			*p_pressed = pressed;
 		}
 		}
 		if (p_strength != nullptr) {
 		if (p_strength != nullptr) {
-			*p_strength = (p_pressed != nullptr && *p_pressed) ? input_event_action->get_strength() : 0.0f;
+			*p_strength = pressed ? input_event_action->get_strength() : 0.0f;
 		}
 		}
 		return input_event_action->get_action() == p_action;
 		return input_event_action->get_action() == p_action;
 	}
 	}