diff options
| author | Nibodhika | 2018-04-03 22:29:07 +0000 |
|---|---|---|
| committer | Nibodhika | 2018-04-07 20:08:09 +0000 |
| commit | 1e28f63bcf7b465cc940af18a08855d377370ac3 (patch) | |
| tree | 64f5c3ae1d3bf01071c9f51e07f5e26c39384ac2 /core | |
| parent | bcf5b748b52271774c0362717cab242527baf99d (diff) | |
| download | godot-1e28f63bcf7b465cc940af18a08855d377370ac3.tar.gz godot-1e28f63bcf7b465cc940af18a08855d377370ac3.tar.zst godot-1e28f63bcf7b465cc940af18a08855d377370ac3.zip | |
Diffstat (limited to 'core')
| -rw-r--r-- | core/input_map.cpp | 10 | ||||
| -rw-r--r-- | core/input_map.h | 5 |
2 files changed, 11 insertions, 4 deletions
diff --git a/core/input_map.cpp b/core/input_map.cpp index bd03d6119..ea724d259 100644 --- a/core/input_map.cpp +++ b/core/input_map.cpp @@ -35,6 +35,8 @@ InputMap *InputMap::singleton = NULL; +int InputMap::ALL_DEVICES = -1; + void InputMap::_bind_methods() { ClassDB::bind_method(D_METHOD("has_action", "action"), &InputMap::has_action); @@ -103,10 +105,10 @@ List<Ref<InputEvent> >::Element *InputMap::_find_event(List<Ref<InputEvent> > &p //if (e.type != Ref<InputEvent>::KEY && e.device != p_event.device) -- unsure about the KEY comparison, why is this here? // continue; - if (e->get_device() != p_event->get_device()) - continue; - if (e->action_match(p_event)) - return E; + int device = e->get_device(); + if (device == ALL_DEVICES || device == p_event->get_device()) + if (e->action_match(p_event)) + return E; } return NULL; diff --git a/core/input_map.h b/core/input_map.h index 84d90f6f2..9f3c13c2c 100644 --- a/core/input_map.h +++ b/core/input_map.h @@ -39,6 +39,11 @@ class InputMap : public Object { GDCLASS(InputMap, Object); public: + /** + * A special value used to signify that a given Action can be triggered by any device + */ + static int ALL_DEVICES; + struct Action { int id; List<Ref<InputEvent> > inputs; |
