summaryrefslogtreecommitdiff
path: root/core/os
diff options
context:
space:
mode:
authorhondres <liu.gam3@gmail.com>2016-01-08 00:40:41 +0100
committerhondres <liu.gam3@gmail.com>2016-01-08 00:40:41 +0100
commitc632c13c66db715b816390f0734f2b1839a7ff3e (patch)
tree01d0c5800712b9ac5bcde597edb91d9855519cb7 /core/os
parent79c1392d17156aeb8d6a2abca16db59b1f8312cc (diff)
Add some joystick functions to input. Enables manipulation of mappings at runtime
Diffstat (limited to 'core/os')
-rw-r--r--core/os/input.cpp4
-rw-r--r--core/os/input.h5
-rw-r--r--core/os/os.cpp7
-rw-r--r--core/os/os.h3
4 files changed, 18 insertions, 1 deletions
diff --git a/core/os/input.cpp b/core/os/input.cpp
index d8d746c811..6e1e618d9a 100644
--- a/core/os/input.cpp
+++ b/core/os/input.cpp
@@ -53,8 +53,12 @@ void Input::_bind_methods() {
ObjectTypeDB::bind_method(_MD("is_mouse_button_pressed","button"),&Input::is_mouse_button_pressed);
ObjectTypeDB::bind_method(_MD("is_joy_button_pressed","device","button"),&Input::is_joy_button_pressed);
ObjectTypeDB::bind_method(_MD("is_action_pressed","action"),&Input::is_action_pressed);
+ ObjectTypeDB::bind_method(_MD("add_joy_mapping","mapping", "update_existing"),&Input::add_joy_mapping, DEFVAL(false));
+ ObjectTypeDB::bind_method(_MD("remove_joy_mapping","guid"),&Input::remove_joy_mapping);
+ ObjectTypeDB::bind_method(_MD("is_joy_known","device"),&Input::is_joy_known);
ObjectTypeDB::bind_method(_MD("get_joy_axis","device","axis"),&Input::get_joy_axis);
ObjectTypeDB::bind_method(_MD("get_joy_name","device"),&Input::get_joy_name);
+ ObjectTypeDB::bind_method(_MD("get_joy_guid","device"),&Input::get_joy_guid);
ObjectTypeDB::bind_method(_MD("get_accelerometer"),&Input::get_accelerometer);
//ObjectTypeDB::bind_method(_MD("get_mouse_pos"),&Input::get_mouse_pos); - this is not the function you want
ObjectTypeDB::bind_method(_MD("get_mouse_speed"),&Input::get_mouse_speed);
diff --git a/core/os/input.h b/core/os/input.h
index 57eaa973d9..2dd4496f26 100644
--- a/core/os/input.h
+++ b/core/os/input.h
@@ -63,7 +63,10 @@ public:
virtual float get_joy_axis(int p_device,int p_axis)=0;
virtual String get_joy_name(int p_idx)=0;
virtual void joy_connection_changed(int p_idx, bool p_connected, String p_name, String p_guid)=0;
-
+ virtual void add_joy_mapping(String p_mapping, bool p_update_existing=false)=0;
+ virtual void remove_joy_mapping(String p_guid)=0;
+ virtual bool is_joy_known(int p_device)=0;
+ virtual String get_joy_guid(int p_device) const=0;
virtual Point2 get_mouse_pos() const=0;
virtual Point2 get_mouse_speed() const=0;
diff --git a/core/os/os.cpp b/core/os/os.cpp
index eb5f91167a..9ff1eeb9f7 100644
--- a/core/os/os.cpp
+++ b/core/os/os.cpp
@@ -507,6 +507,13 @@ float OS::get_time_scale() const {
return _time_scale;
}
+bool OS::is_joy_known(int p_device) {
+ return true;
+}
+
+String OS::get_joy_guid(int p_device) const {
+ return "Default Joystick";
+}
OS::OS() {
last_error=NULL;
diff --git a/core/os/os.h b/core/os/os.h
index 94cb1d4ea4..670695f83a 100644
--- a/core/os/os.h
+++ b/core/os/os.h
@@ -397,6 +397,9 @@ public:
_FORCE_INLINE_ bool get_use_pixel_snap() const { return _pixel_snap; }
+ virtual bool is_joy_known(int p_device);
+ virtual String get_joy_guid(int p_device)const;
+
OS();
virtual ~OS();