Explorar el Código

Added method to clear input events of an action

AndreaCatania hace 7 años
padre
commit
c510e2586d
Se han modificado 2 ficheros con 9 adiciones y 0 borrados
  1. 8 0
      core/input_map.cpp
  2. 1 0
      core/input_map.h

+ 8 - 0
core/input_map.cpp

@@ -48,6 +48,7 @@ void InputMap::_bind_methods() {
 	ClassDB::bind_method(D_METHOD("action_add_event", "action", "event"), &InputMap::action_add_event);
 	ClassDB::bind_method(D_METHOD("action_has_event", "action", "event"), &InputMap::action_has_event);
 	ClassDB::bind_method(D_METHOD("action_erase_event", "action", "event"), &InputMap::action_erase_event);
+	ClassDB::bind_method(D_METHOD("action_erase_events", "action"), &InputMap::action_erase_events);
 	ClassDB::bind_method(D_METHOD("get_action_list", "action"), &InputMap::_get_action_list);
 	ClassDB::bind_method(D_METHOD("event_is_action", "event", "action"), &InputMap::event_is_action);
 	ClassDB::bind_method(D_METHOD("load_from_globals"), &InputMap::load_from_globals);
@@ -155,6 +156,13 @@ void InputMap::action_erase_event(const StringName &p_action, const Ref<InputEve
 		input_map[p_action].inputs.erase(E);
 }
 
+void InputMap::action_erase_events(const StringName &p_action) {
+
+	ERR_FAIL_COND(!input_map.has(p_action));
+
+	input_map[p_action].inputs.clear();
+}
+
 Array InputMap::_get_action_list(const StringName &p_action) {
 
 	Array ret;

+ 1 - 0
core/input_map.h

@@ -75,6 +75,7 @@ public:
 	void action_add_event(const StringName &p_action, const Ref<InputEvent> &p_event);
 	bool action_has_event(const StringName &p_action, const Ref<InputEvent> &p_event);
 	void action_erase_event(const StringName &p_action, const Ref<InputEvent> &p_event);
+	void action_erase_events(const StringName &p_action);
 
 	const List<Ref<InputEvent> > *get_action_list(const StringName &p_action);
 	bool event_is_action(const Ref<InputEvent> &p_event, const StringName &p_action) const;