From 2aee71d52dc687c8f8be1807436875eb83f7d4fb Mon Sep 17 00:00:00 2001 From: Liz Haas <27thLiz@gmail.com> Date: Sat, 1 Aug 2020 11:46:50 +0200 Subject: Input: Throw error if action doesn't exist Thow errors if requesting an unexisting InputMap action. Makes `Input.is_action_*` methods consistents with `Event.is_action_*` which already throw errors. fixes #33303 --- core/input/input.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'core/input/input.cpp') diff --git a/core/input/input.cpp b/core/input/input.cpp index 94a18b5b4f..f928ae7654 100644 --- a/core/input/input.cpp +++ b/core/input/input.cpp @@ -241,10 +241,18 @@ bool Input::is_joy_button_pressed(int p_device, int p_button) const { } bool Input::is_action_pressed(const StringName &p_action, bool p_exact) const { +#ifdef DEBUG_ENABLED + bool has_action = InputMap::get_singleton()->has_action(p_action); + ERR_FAIL_COND_V_MSG(!has_action, false, "Request for nonexistent InputMap action '" + String(p_action) + "'."); +#endif return action_state.has(p_action) && action_state[p_action].pressed && (p_exact ? action_state[p_action].exact : true); } bool Input::is_action_just_pressed(const StringName &p_action, bool p_exact) const { +#ifdef DEBUG_ENABLED + bool has_action = InputMap::get_singleton()->has_action(p_action); + ERR_FAIL_COND_V_MSG(!has_action, false, "Request for nonexistent InputMap action '" + String(p_action) + "'."); +#endif const Map::Element *E = action_state.find(p_action); if (!E) { return false; @@ -262,6 +270,10 @@ bool Input::is_action_just_pressed(const StringName &p_action, bool p_exact) con } bool Input::is_action_just_released(const StringName &p_action, bool p_exact) const { +#ifdef DEBUG_ENABLED + bool has_action = InputMap::get_singleton()->has_action(p_action); + ERR_FAIL_COND_V_MSG(!has_action, false, "Request for nonexistent InputMap action '" + String(p_action) + "'."); +#endif const Map::Element *E = action_state.find(p_action); if (!E) { return false; @@ -279,6 +291,10 @@ bool Input::is_action_just_released(const StringName &p_action, bool p_exact) co } float Input::get_action_strength(const StringName &p_action, bool p_exact) const { +#ifdef DEBUG_ENABLED + bool has_action = InputMap::get_singleton()->has_action(p_action); + ERR_FAIL_COND_V_MSG(!has_action, false, "Request for nonexistent InputMap action '" + String(p_action) + "'."); +#endif const Map::Element *E = action_state.find(p_action); if (!E) { return 0.0f; -- cgit v1.2.3