Merge pull request #63548 from pattlebass/master-html5-vibrate

This commit is contained in:
Rémi Verschelde 2022-07-27 22:19:37 +02:00 committed by GitHub
commit 0dcf679bdc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 20 additions and 2 deletions

View file

@ -159,7 +159,7 @@ int OS::get_process_id() const {
} }
void OS::vibrate_handheld(int p_duration_ms) { void OS::vibrate_handheld(int p_duration_ms) {
WARN_PRINT("vibrate_handheld() only works with Android and iOS"); WARN_PRINT("vibrate_handheld() only works with Android, iOS and HTML5");
} }
bool OS::is_stdout_verbose() const { bool OS::is_stdout_verbose() const {

View file

@ -354,9 +354,11 @@
<return type="void" /> <return type="void" />
<argument index="0" name="duration_ms" type="int" default="500" /> <argument index="0" name="duration_ms" type="int" default="500" />
<description> <description>
Vibrate Android and iOS devices. Vibrate handheld devices.
[b]Note:[/b] This method is implemented on Android, iOS, and HTML5.
[b]Note:[/b] For Android, it requires enabling the [code]VIBRATE[/code] permission in the export preset. [b]Note:[/b] For Android, it requires enabling the [code]VIBRATE[/code] permission in the export preset.
[b]Note:[/b] For iOS, specifying the duration is supported in iOS 13 and later. [b]Note:[/b] For iOS, specifying the duration is supported in iOS 13 and later.
[b]Note:[/b] Some web browsers such as Safari and Firefox for Android do not support this method.
</description> </description>
</method> </method>
<method name="warp_mouse"> <method name="warp_mouse">

View file

@ -58,6 +58,7 @@ extern void godot_js_input_mouse_move_cb(void (*p_callback)(double p_x, double p
extern void godot_js_input_mouse_wheel_cb(int (*p_callback)(double p_delta_x, double p_delta_y)); extern void godot_js_input_mouse_wheel_cb(int (*p_callback)(double p_delta_x, double p_delta_y));
extern void godot_js_input_touch_cb(void (*p_callback)(int p_type, int p_count), uint32_t *r_identifiers, double *r_coords); extern void godot_js_input_touch_cb(void (*p_callback)(int p_type, int p_count), uint32_t *r_identifiers, double *r_coords);
extern void godot_js_input_key_cb(void (*p_callback)(int p_type, int p_repeat, int p_modifiers), char r_code[32], char r_key[32]); extern void godot_js_input_key_cb(void (*p_callback)(int p_type, int p_repeat, int p_modifiers), char r_code[32], char r_key[32]);
extern void godot_js_input_vibrate_handheld(int p_duration_ms);
// Input gamepad // Input gamepad
extern void godot_js_input_gamepad_cb(void (*p_on_change)(int p_index, int p_connected, const char *p_id, const char *p_guid)); extern void godot_js_input_gamepad_cb(void (*p_on_change)(int p_index, int p_connected, const char *p_id, const char *p_guid));

View file

@ -534,6 +534,15 @@ const GodotInput = {
GodotRuntime.free(ptr); GodotRuntime.free(ptr);
}, false); }, false);
}, },
godot_js_input_vibrate_handheld__sig: 'vi',
godot_js_input_vibrate_handheld: function (p_duration_ms) {
if (typeof navigator.vibrate !== 'function') {
GodotRuntime.print('This browser does not support vibration.');
} else {
navigator.vibrate(p_duration_ms);
}
},
}; };
autoAddDeps(GodotInput, '$GodotInput'); autoAddDeps(GodotInput, '$GodotInput');

View file

@ -177,6 +177,10 @@ String OS_JavaScript::get_name() const {
return "HTML5"; return "HTML5";
} }
void OS_JavaScript::vibrate_handheld(int p_duration_ms) {
godot_js_input_vibrate_handheld(p_duration_ms);
}
String OS_JavaScript::get_user_data_dir() const { String OS_JavaScript::get_user_data_dir() const {
return "/userfs"; return "/userfs";
} }

View file

@ -90,6 +90,8 @@ public:
// Implemented in javascript_main.cpp loop callback instead. // Implemented in javascript_main.cpp loop callback instead.
void add_frame_delay(bool p_can_draw) override {} void add_frame_delay(bool p_can_draw) override {}
void vibrate_handheld(int p_duration_ms) override;
String get_cache_path() const override; String get_cache_path() const override;
String get_config_path() const override; String get_config_path() const override;
String get_data_path() const override; String get_data_path() const override;