diff options
Diffstat (limited to 'core/os')
-rw-r--r-- | core/os/input.cpp | 16 | ||||
-rw-r--r-- | core/os/input.h | 9 |
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(); |