summaryrefslogtreecommitdiff
path: root/core/os
diff options
context:
space:
mode:
Diffstat (limited to 'core/os')
-rw-r--r--core/os/input.cpp16
-rw-r--r--core/os/input.h9
2 files changed, 23 insertions, 2 deletions
diff --git a/core/os/input.cpp b/core/os/input.cpp
index 70733aadec..3712690cc1 100644
--- a/core/os/input.cpp
+++ b/core/os/input.cpp
@@ -53,6 +53,7 @@ void Input::_bind_methods() {
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("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_accelerometer"),&Input::get_accelerometer);
ObjectTypeDB::bind_method(_MD("get_mouse_pos"),&Input::get_mouse_pos);
ObjectTypeDB::bind_method(_MD("get_mouse_speed"),&Input::get_mouse_speed);
@@ -64,6 +65,7 @@ void Input::_bind_methods() {
BIND_CONSTANT( MOUSE_MODE_HIDDEN );
BIND_CONSTANT( MOUSE_MODE_CAPTURED );
+ ADD_SIGNAL( MethodInfo("joy_connection_changed", PropertyInfo(Variant::INT, "index"), PropertyInfo(Variant::BOOL, "connected")) );
}
Input::Input() {
@@ -193,6 +195,20 @@ float InputDefault::get_joy_axis(int p_device,int p_axis) {
}
}
+String InputDefault::get_joy_name(int p_idx) {
+
+ _THREAD_SAFE_METHOD_
+ return joy_names[p_idx];
+};
+
+void InputDefault::joy_connection_changed(int p_idx, bool p_connected, String p_name) {
+
+ _THREAD_SAFE_METHOD_
+ joy_names[p_idx] = p_connected ? p_name : "";
+
+ emit_signal("joy_connection_changed", p_idx, p_connected);
+};
+
Vector3 InputDefault::get_accelerometer() {
_THREAD_SAFE_METHOD_
diff --git a/core/os/input.h b/core/os/input.h
index cc51dbf42f..b837a1f68f 100644
--- a/core/os/input.h
+++ b/core/os/input.h
@@ -61,6 +61,9 @@ public:
virtual bool is_action_pressed(const StringName& p_action)=0;
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)=0;
+
virtual Point2 get_mouse_pos() const=0;
virtual Point2 get_mouse_speed() const=0;
@@ -71,6 +74,7 @@ public:
virtual void action_press(const StringName& p_action)=0;
virtual void action_release(const StringName& p_action)=0;
+
Input();
};
@@ -86,6 +90,7 @@ class InputDefault : public Input {
Set<int> joy_buttons_pressed;
Map<int,float> joy_axis;
Map<StringName,int> custom_action_press;
+ Map<int, String> joy_names;
Vector3 accelerometer;
Vector2 mouse_pos;
MainLoop *main_loop;
@@ -108,14 +113,14 @@ class InputDefault : public Input {
public:
-
-
virtual bool is_key_pressed(int p_scancode);
virtual bool is_mouse_button_pressed(int p_button);
virtual bool is_joy_button_pressed(int p_device, int p_button);
virtual bool is_action_pressed(const StringName& p_action);
virtual float get_joy_axis(int p_device,int p_axis);
+ String get_joy_name(int p_idx);
+ void joy_connection_changed(int p_idx, bool p_connected, String p_name);
virtual Vector3 get_accelerometer();