diff options
author | Andreas Haas <liu.gam3@gmail.com> | 2016-07-05 14:07:46 +0200 |
---|---|---|
committer | Andreas Haas <liu.gam3@gmail.com> | 2016-07-05 14:08:02 +0200 |
commit | 45cfd199a46a6fdffb48cd367c69a336eb79590b (patch) | |
tree | a629154177841054cf8465180d5312e1a7461a37 /main/input_default.cpp | |
parent | 716dfa67a3c5a0a38205179c01676e05a718d244 (diff) | |
download | redot-engine-45cfd199a46a6fdffb48cd367c69a336eb79590b.tar.gz |
Input: add get_connected_joysticks() method.
fixes #5465
Diffstat (limited to 'main/input_default.cpp')
-rw-r--r-- | main/input_default.cpp | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/main/input_default.cpp b/main/input_default.cpp index 4fcb450bce..68356b7811 100644 --- a/main/input_default.cpp +++ b/main/input_default.cpp @@ -101,7 +101,7 @@ bool InputDefault::is_action_pressed(const StringName& p_action) { const List<InputEvent> *alist = InputMap::get_singleton()->get_action_list(p_action); if (!alist) - return NULL; + return false; for (const List<InputEvent>::Element *E=alist->front();E;E=E->next()) { @@ -220,18 +220,18 @@ void InputDefault::joy_connection_changed(int p_idx, bool p_connected, String p_ }; }; js.uid = uidname; - //printf("looking for mappings for guid %ls\n", uidname.c_str()); + js.connected = true; int mapping = fallback_mapping; for (int i=0; i < map_db.size(); i++) { if (js.uid == map_db[i].uid) { mapping = i; js.name = map_db[i].name; - //printf("found mapping\n"); }; }; js.mapping = mapping; } else { + js.connected = false; for (int i = 0; i < JOY_BUTTON_MAX; i++) { if (i < JOY_AXIS_MAX) @@ -1039,3 +1039,15 @@ bool InputDefault::is_joy_mapped(int p_device) { String InputDefault::get_joy_guid_remapped(int p_device) const { return joy_names[p_device].uid; } + +Array InputDefault::get_connected_joysticks() { + Array ret; + Map<int, Joystick>::Element *elem = joy_names.front(); + while (elem) { + if (elem->get().connected) { + ret.push_back(elem->key()); + } + elem = elem->next(); + } + return ret; +} |