diff options
-rw-r--r-- | core/input_map.cpp | 30 | ||||
-rw-r--r-- | core/input_map.h | 2 | ||||
-rw-r--r-- | doc/base/classes.xml | 17 |
3 files changed, 49 insertions, 0 deletions
diff --git a/core/input_map.cpp b/core/input_map.cpp index 17e98902a1..0506233116 100644 --- a/core/input_map.cpp +++ b/core/input_map.cpp @@ -36,6 +36,7 @@ void InputMap::_bind_methods() { ObjectTypeDB::bind_method(_MD("has_action","action"),&InputMap::has_action); ObjectTypeDB::bind_method(_MD("get_action_id","action"),&InputMap::get_action_id); ObjectTypeDB::bind_method(_MD("get_action_from_id","id"),&InputMap::get_action_from_id); + ObjectTypeDB::bind_method(_MD("get_actions"),&InputMap::_get_actions); ObjectTypeDB::bind_method(_MD("add_action","action"),&InputMap::add_action); ObjectTypeDB::bind_method(_MD("erase_action","action"),&InputMap::erase_action); @@ -75,6 +76,35 @@ StringName InputMap::get_action_from_id(int p_id) const { return input_id_map[p_id]; } +Array InputMap::_get_actions() { + + Array ret; + List<StringName> actions = get_actions(); + if(actions.empty()) + return ret; + + for(const List<StringName>::Element *E=actions.front();E;E=E->next()) { + + ret.push_back(E->get()); + } + + return ret; +} + +List<StringName> InputMap::get_actions() const { + + List<StringName> actions = List<StringName>(); + if(input_map.empty()){ + return actions; + } + + for (Map<StringName, Action>::Element *E=input_map.front();E;E=E->next()) { + actions.push_back(E->key()); + } + + return actions; +} + List<InputEvent>::Element *InputMap::_find_event(List<InputEvent> &p_list,const InputEvent& p_event) const { for (List<InputEvent>::Element *E=p_list.front();E;E=E->next()) { diff --git a/core/input_map.h b/core/input_map.h index 5cd1e41922..82b650516e 100644 --- a/core/input_map.h +++ b/core/input_map.h @@ -47,6 +47,7 @@ class InputMap : public Object { List<InputEvent>::Element *_find_event(List<InputEvent> &p_list,const InputEvent& p_event) const; Array _get_action_list(const StringName& p_action); + Array _get_actions(); protected: @@ -59,6 +60,7 @@ public: bool has_action(const StringName& p_action) const; int get_action_id(const StringName& p_action) const; StringName get_action_from_id(int p_id) const; + List<StringName> get_actions() const; void add_action(const StringName& p_action); void erase_action(const StringName& p_action); diff --git a/doc/base/classes.xml b/doc/base/classes.xml index 7dee3c6267..0bea71c2bb 100644 --- a/doc/base/classes.xml +++ b/doc/base/classes.xml @@ -16566,6 +16566,7 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <argument index="0" name="action" type="String"> </argument> <description> + Whether this InputMap has an action with name "action". </description> </method> <method name="get_action_id" qualifiers="const"> @@ -16574,6 +16575,7 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <argument index="0" name="action" type="String"> </argument> <description> + Return the id of an action. </description> </method> <method name="get_action_from_id" qualifiers="const"> @@ -16582,18 +16584,28 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <argument index="0" name="id" type="int"> </argument> <description> + Return the action from an id. + </description> + </method> + <method name="get_actions"> + <return type="Array"> + </return> + <description> + Return an [Array] of all actions in the [InputMap]. </description> </method> <method name="add_action"> <argument index="0" name="action" type="String"> </argument> <description> + Add an action to the [InputMap]. </description> </method> <method name="erase_action"> <argument index="0" name="action" type="String"> </argument> <description> + Remove an action from the [InputMap]. </description> </method> <method name="action_add_event"> @@ -16602,6 +16614,7 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <argument index="1" name="event" type="InputEvent"> </argument> <description> + Add an [InputEvent] to action. This [InputEvent] will trigger the action. </description> </method> <method name="action_has_event"> @@ -16612,6 +16625,7 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <argument index="1" name="event" type="InputEvent"> </argument> <description> + Whether an action has an [InputEvent] associated with it. </description> </method> <method name="action_erase_event"> @@ -16620,6 +16634,7 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <argument index="1" name="event" type="InputEvent"> </argument> <description> + Remove an [InputEvent] from an action. </description> </method> <method name="get_action_list"> @@ -16628,6 +16643,7 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <argument index="0" name="action" type="String"> </argument> <description> + Return an [Array] of [InputEvent]s associated with an action. </description> </method> <method name="event_is_action" qualifiers="const"> @@ -16642,6 +16658,7 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </method> <method name="load_from_globals"> <description> + Clears the [InputMap] and loads it from [Globals]. </description> </method> </methods> |