@@ -120,6 +120,8 @@ void Input::_bind_methods() {
120
120
ClassDB::bind_method (D_METHOD (" get_joy_vibration_duration" , " device" ), &Input::get_joy_vibration_duration);
121
121
ClassDB::bind_method (D_METHOD (" start_joy_vibration" , " device" , " weak_magnitude" , " strong_magnitude" , " duration" ), &Input::start_joy_vibration, DEFVAL (0 ));
122
122
ClassDB::bind_method (D_METHOD (" stop_joy_vibration" , " device" ), &Input::stop_joy_vibration);
123
+ ClassDB::bind_method (D_METHOD (" get_joy_sensors_enabled" , " device" ), &Input::get_joy_sensors_enabled);
124
+ ClassDB::bind_method (D_METHOD (" set_joy_sensors_enabled" , " device" , " enabled" ), &Input::set_joy_sensors_enabled);
123
125
ClassDB::bind_method (D_METHOD (" vibrate_handheld" , " duration_ms" ), &Input::vibrate_handheld, DEFVAL (500 ));
124
126
ClassDB::bind_method (D_METHOD (" get_gravity" ), &Input::get_gravity);
125
127
ClassDB::bind_method (D_METHOD (" get_accelerometer" ), &Input::get_accelerometer);
@@ -129,6 +131,24 @@ void Input::_bind_methods() {
129
131
ClassDB::bind_method (D_METHOD (" set_accelerometer" , " value" ), &Input::set_accelerometer);
130
132
ClassDB::bind_method (D_METHOD (" set_magnetometer" , " value" ), &Input::set_magnetometer);
131
133
ClassDB::bind_method (D_METHOD (" set_gyroscope" , " value" ), &Input::set_gyroscope);
134
+ ClassDB::bind_method (D_METHOD (" get_joy_gravity" , " device" ), &Input::get_joy_gravity);
135
+ ClassDB::bind_method (D_METHOD (" get_joy_accelerometer" , " device" ), &Input::get_joy_accelerometer);
136
+ ClassDB::bind_method (D_METHOD (" get_joy_gyroscope" , " device" ), &Input::get_joy_gyroscope);
137
+ ClassDB::bind_method (D_METHOD (" set_joy_gravity" , " device" , " value" ), &Input::set_joy_gravity);
138
+ ClassDB::bind_method (D_METHOD (" set_joy_accelerometer" , " device" , " value" ), &Input::set_joy_accelerometer);
139
+ ClassDB::bind_method (D_METHOD (" set_joy_gyroscope" , " device" , " value" ), &Input::set_joy_gyroscope);
140
+ ClassDB::bind_method (D_METHOD (" get_joy_adaptive_trigger_mode" , " device" , " axis" ), &Input::get_joy_adaptive_trigger_mode);
141
+ ClassDB::bind_method (D_METHOD (" set_joy_adaptive_trigger_mode" , " device" , " axis" , " mode" ), &Input::set_joy_adaptive_trigger_mode);
142
+ ClassDB::bind_method (D_METHOD (" get_joy_adaptive_trigger_strength" , " device" , " axis" ), &Input::get_joy_adaptive_trigger_strength);
143
+ ClassDB::bind_method (D_METHOD (" set_joy_adaptive_trigger_strength" , " device" , " axis" , " strength" ), &Input::set_joy_adaptive_trigger_strength);
144
+ ClassDB::bind_method (D_METHOD (" get_joy_adaptive_trigger_position" , " device" , " axis" ), &Input::get_joy_adaptive_trigger_position);
145
+ ClassDB::bind_method (D_METHOD (" set_joy_adaptive_trigger_position" , " device" , " axis" , " position" ), &Input::set_joy_adaptive_trigger_position);
146
+ ClassDB::bind_method (D_METHOD (" get_joy_battery_state" , " device" ), &Input::get_joy_battery_state);
147
+ ClassDB::bind_method (D_METHOD (" set_joy_battery_state" , " device" , " state" ), &Input::set_joy_battery_state);
148
+ ClassDB::bind_method (D_METHOD (" get_joy_battery_level" , " device" ), &Input::get_joy_battery_level);
149
+ ClassDB::bind_method (D_METHOD (" set_joy_battery_level" , " device" , " level" ), &Input::set_joy_battery_level);
150
+ ClassDB::bind_method (D_METHOD (" get_joy_light" , " device" ), &Input::get_joy_light);
151
+ ClassDB::bind_method (D_METHOD (" set_joy_light" , " device" , " color" ), &Input::set_joy_light);
132
152
ClassDB::bind_method (D_METHOD (" get_last_mouse_velocity" ), &Input::get_last_mouse_velocity);
133
153
ClassDB::bind_method (D_METHOD (" get_last_mouse_screen_velocity" ), &Input::get_last_mouse_screen_velocity);
134
154
ClassDB::bind_method (D_METHOD (" get_mouse_button_mask" ), &Input::get_mouse_button_mask);
@@ -160,6 +180,17 @@ void Input::_bind_methods() {
160
180
BIND_ENUM_CONSTANT (MOUSE_MODE_CONFINED);
161
181
BIND_ENUM_CONSTANT (MOUSE_MODE_CONFINED_HIDDEN);
162
182
183
+ BIND_ENUM_CONSTANT (JOY_ADAPTIVE_TRIGGER_MODE_OFF);
184
+ BIND_ENUM_CONSTANT (JOY_ADAPTIVE_TRIGGER_MODE_FEEDBACK);
185
+ BIND_ENUM_CONSTANT (JOY_ADAPTIVE_TRIGGER_MODE_WEAPON);
186
+ BIND_ENUM_CONSTANT (JOY_ADAPTIVE_TRIGGER_MODE_VIBRATION);
187
+ BIND_ENUM_CONSTANT (JOY_ADAPTIVE_TRIGGER_MODE_SLOPE_FEEDBACK);
188
+
189
+ BIND_ENUM_CONSTANT (JOY_BATTERY_STATE_UNKNOWN);
190
+ BIND_ENUM_CONSTANT (JOY_BATTERY_STATE_DISCHARGING);
191
+ BIND_ENUM_CONSTANT (JOY_BATTERY_STATE_CHARGING);
192
+ BIND_ENUM_CONSTANT (JOY_BATTERY_STATE_FULL);
193
+
163
194
BIND_ENUM_CONSTANT (CURSOR_ARROW);
164
195
BIND_ENUM_CONSTANT (CURSOR_IBEAM);
165
196
BIND_ENUM_CONSTANT (CURSOR_POINTING_HAND);
@@ -420,6 +451,14 @@ String Input::get_joy_name(int p_idx) {
420
451
return joy_names[p_idx].name ;
421
452
}
422
453
454
+ bool Input::get_joy_sensors_enabled (int p_device) const {
455
+ if (joy_motion.has (p_device)) {
456
+ return joy_motion[p_device].enabled ;
457
+ } else {
458
+ return false ;
459
+ }
460
+ }
461
+
423
462
Vector2 Input::get_joy_vibration_strength (int p_device) {
424
463
if (joy_vibration.has (p_device)) {
425
464
return Vector2 (joy_vibration[p_device].weak_magnitude , joy_vibration[p_device].strong_magnitude );
@@ -528,6 +567,33 @@ Vector3 Input::get_gyroscope() const {
528
567
return gyroscope;
529
568
}
530
569
570
+ Vector3 Input::get_joy_gravity (int p_device) const {
571
+ _THREAD_SAFE_METHOD_
572
+ if (joy_motion.has (p_device)) {
573
+ return joy_motion[p_device].gravity ;
574
+ } else {
575
+ return Vector3 ();
576
+ }
577
+ }
578
+
579
+ Vector3 Input::get_joy_accelerometer (int p_device) const {
580
+ _THREAD_SAFE_METHOD_
581
+ if (joy_motion.has (p_device)) {
582
+ return joy_motion[p_device].accelerometer ;
583
+ } else {
584
+ return Vector3 ();
585
+ }
586
+ }
587
+
588
+ Vector3 Input::get_joy_gyroscope (int p_device) const {
589
+ _THREAD_SAFE_METHOD_
590
+ if (joy_motion.has (p_device)) {
591
+ return joy_motion[p_device].gyroscope ;
592
+ } else {
593
+ return Vector3 ();
594
+ }
595
+ }
596
+
531
597
void Input::_parse_input_event_impl (const Ref<InputEvent> &p_event, bool p_is_emulated) {
532
598
// This function does the final delivery of the input event to user land.
533
599
// Regardless where the event came from originally, this has to happen on the main thread.
@@ -791,6 +857,15 @@ void Input::start_joy_vibration(int p_device, float p_weak_magnitude, float p_st
791
857
joy_vibration[p_device] = vibration;
792
858
}
793
859
860
+ void Input::set_joy_sensors_enabled (int p_device, bool p_enabled) {
861
+ joy_motion[p_device].enabled = p_enabled;
862
+ if (!p_enabled) {
863
+ joy_motion[p_device].gravity = Vector3 ();
864
+ joy_motion[p_device].accelerometer = Vector3 ();
865
+ joy_motion[p_device].gyroscope = Vector3 ();
866
+ }
867
+ }
868
+
794
869
void Input::stop_joy_vibration (int p_device) {
795
870
_THREAD_SAFE_METHOD_
796
871
VibrationInfo vibration;
@@ -829,6 +904,138 @@ void Input::set_gyroscope(const Vector3 &p_gyroscope) {
829
904
gyroscope = p_gyroscope;
830
905
}
831
906
907
+ void Input::set_joy_gravity (int p_device, const Vector3 &p_gravity) {
908
+ _THREAD_SAFE_METHOD_
909
+
910
+ joy_motion[p_device].gravity = p_gravity;
911
+ }
912
+
913
+ void Input::set_joy_accelerometer (int p_device, const Vector3 &p_accel) {
914
+ _THREAD_SAFE_METHOD_
915
+
916
+ joy_motion[p_device].accelerometer = p_accel;
917
+ }
918
+
919
+ void Input::set_joy_gyroscope (int p_device, const Vector3 &p_gyroscope) {
920
+ _THREAD_SAFE_METHOD_
921
+
922
+ joy_motion[p_device].gyroscope = p_gyroscope;
923
+ }
924
+
925
+ Input::JoyAdaptiveTriggerMode Input::get_joy_adaptive_trigger_mode (int p_device, JoyAxis p_axis) const {
926
+ _THREAD_SAFE_METHOD_
927
+
928
+ if (p_axis == JoyAxis::TRIGGER_LEFT && joy_ad_trig.has (p_device)) {
929
+ return joy_ad_trig[p_device].l_mode ;
930
+ } else if (p_axis == JoyAxis::TRIGGER_RIGHT && joy_ad_trig.has (p_device)) {
931
+ return joy_ad_trig[p_device].r_mode ;
932
+ } else {
933
+ return JOY_ADAPTIVE_TRIGGER_MODE_OFF;
934
+ }
935
+ }
936
+
937
+ void Input::set_joy_adaptive_trigger_mode (int p_device, JoyAxis p_axis, Input::JoyAdaptiveTriggerMode p_mode) {
938
+ _THREAD_SAFE_METHOD_
939
+
940
+ if (p_axis == JoyAxis::TRIGGER_LEFT) {
941
+ joy_ad_trig[p_device].l_mode = p_mode;
942
+ } else if (p_axis == JoyAxis::TRIGGER_RIGHT) {
943
+ joy_ad_trig[p_device].r_mode = p_mode;
944
+ }
945
+ }
946
+
947
+ Vector2 Input::get_joy_adaptive_trigger_strength (int p_device, JoyAxis p_axis) const {
948
+ _THREAD_SAFE_METHOD_
949
+
950
+ if (p_axis == JoyAxis::TRIGGER_LEFT && joy_ad_trig.has (p_device)) {
951
+ return joy_ad_trig[p_device].l_strength ;
952
+ } else if (p_axis == JoyAxis::TRIGGER_RIGHT && joy_ad_trig.has (p_device)) {
953
+ return joy_ad_trig[p_device].r_strength ;
954
+ } else {
955
+ return Vector2 ();
956
+ }
957
+ }
958
+
959
+ void Input::set_joy_adaptive_trigger_strength (int p_device, JoyAxis p_axis, const Vector2 &p_strength) {
960
+ _THREAD_SAFE_METHOD_
961
+
962
+ if (p_axis == JoyAxis::TRIGGER_LEFT) {
963
+ joy_ad_trig[p_device].l_strength = p_strength;
964
+ } else if (p_axis == JoyAxis::TRIGGER_RIGHT) {
965
+ joy_ad_trig[p_device].r_strength = p_strength;
966
+ }
967
+ }
968
+
969
+ Vector2 Input::get_joy_adaptive_trigger_position (int p_device, JoyAxis p_axis) const {
970
+ _THREAD_SAFE_METHOD_
971
+
972
+ if (p_axis == JoyAxis::TRIGGER_LEFT && joy_ad_trig.has (p_device)) {
973
+ return joy_ad_trig[p_device].l_position ;
974
+ } else if (p_axis == JoyAxis::TRIGGER_RIGHT && joy_ad_trig.has (p_device)) {
975
+ return joy_ad_trig[p_device].r_position ;
976
+ } else {
977
+ return Vector2 ();
978
+ }
979
+ }
980
+
981
+ void Input::set_joy_adaptive_trigger_position (int p_device, JoyAxis p_axis, const Vector2 &p_position) {
982
+ _THREAD_SAFE_METHOD_
983
+
984
+ if (p_axis == JoyAxis::TRIGGER_LEFT) {
985
+ joy_ad_trig[p_device].l_position = p_position;
986
+ } else if (p_axis == JoyAxis::TRIGGER_RIGHT) {
987
+ joy_ad_trig[p_device].r_position = p_position;
988
+ }
989
+ }
990
+
991
+ Input::JoyBatteryState Input::get_joy_battery_state (int p_device) const {
992
+ _THREAD_SAFE_METHOD_
993
+
994
+ if (joy_info.has (p_device)) {
995
+ return joy_info[p_device].batt_state ;
996
+ } else {
997
+ return JOY_BATTERY_STATE_UNKNOWN;
998
+ }
999
+ }
1000
+
1001
+ void Input::set_joy_battery_state (int p_device, Input::JoyBatteryState p_state) {
1002
+ _THREAD_SAFE_METHOD_
1003
+
1004
+ joy_info[p_device].batt_state = p_state;
1005
+ }
1006
+
1007
+ float Input::get_joy_battery_level (int p_device) const {
1008
+ _THREAD_SAFE_METHOD_
1009
+
1010
+ if (joy_info.has (p_device)) {
1011
+ return joy_info[p_device].batt_level ;
1012
+ } else {
1013
+ return 0.0 ;
1014
+ }
1015
+ }
1016
+
1017
+ void Input::set_joy_battery_level (int p_device, float p_level) {
1018
+ _THREAD_SAFE_METHOD_
1019
+
1020
+ joy_info[p_device].batt_level = p_level;
1021
+ }
1022
+
1023
+ Color Input::get_joy_light (int p_device) const {
1024
+ _THREAD_SAFE_METHOD_
1025
+
1026
+ if (joy_info.has (p_device)) {
1027
+ return joy_info[p_device].light ;
1028
+ } else {
1029
+ return Color ();
1030
+ }
1031
+ }
1032
+
1033
+ void Input::set_joy_light (int p_device, Color p_color) {
1034
+ _THREAD_SAFE_METHOD_
1035
+
1036
+ joy_info[p_device].light = p_color;
1037
+ }
1038
+
832
1039
void Input::set_mouse_position (const Point2 &p_posf) {
833
1040
mouse_pos = p_posf;
834
1041
}
0 commit comments