aboutsummaryrefslogtreecommitdiff
path: root/main/input_default.cpp
diff options
context:
space:
mode:
authorhondres2016-01-08 00:40:41 +0100
committerhondres2016-01-08 00:40:41 +0100
commitc632c13c66db715b816390f0734f2b1839a7ff3e (patch)
tree01d0c5800712b9ac5bcde597edb91d9855519cb7 /main/input_default.cpp
parent79c1392d17156aeb8d6a2abca16db59b1f8312cc (diff)
downloadgodot-c632c13c66db715b816390f0734f2b1839a7ff3e.tar.gz
godot-c632c13c66db715b816390f0734f2b1839a7ff3e.tar.zst
godot-c632c13c66db715b816390f0734f2b1839a7ff3e.zip
Add some joystick functions to input. Enables manipulation of mappings at runtime
Diffstat (limited to 'main/input_default.cpp')
-rw-r--r--main/input_default.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/main/input_default.cpp b/main/input_default.cpp
index 68f7434d9..a79199580 100644
--- a/main/input_default.cpp
+++ b/main/input_default.cpp
@@ -781,3 +781,49 @@ void InputDefault::parse_mapping(String p_mapping) {
map_db.push_back(mapping);
//printf("added mapping with uuid %ls\n", mapping.uid.c_str());
};
+
+void InputDefault::add_joy_mapping(String p_mapping, bool p_update_existing) {
+ parse_mapping(p_mapping);
+ if (p_update_existing) {
+ Vector<String> entry = p_mapping.split(",");
+ String uid = entry[0];
+ for (int i=0; i<joy_names.size(); i++) {
+ if (uid == joy_names[i].uid) {
+ joy_names[i].mapping = map_db.size() -1;
+ }
+ }
+ }
+}
+
+void InputDefault::remove_joy_mapping(String p_guid) {
+ for (int i=map_db.size()-1; i >= 0;i--) {
+ if (p_guid == map_db[i].uid) {
+ map_db.remove(i);
+ }
+ }
+ for (int i=0; i<joy_names.size(); i++) {
+ if (joy_names[i].uid == p_guid) {
+ joy_names[i].mapping = -1;
+ }
+ }
+}
+
+//Defaults to simple implementation for platforms with a fixed gamepad layout, like consoles.
+bool InputDefault::is_joy_known(int p_device) {
+
+ return OS::get_singleton()->is_joy_known(p_device);
+}
+
+String InputDefault::get_joy_guid(int p_device) const {
+ return OS::get_singleton()->get_joy_guid(p_device);
+}
+
+//platforms that use the remapping system can override and call to these ones
+bool InputDefault::is_joy_mapped(int p_device) {
+ return joy_names[p_device].mapping != -1 ? true : false;
+}
+
+String InputDefault::get_joy_guid_remapped(int p_device) const {
+ return joy_names[p_device].uid;
+}
+