diff options
| -rw-r--r-- | core/os/os.cpp | 2 | ||||
| -rw-r--r-- | doc/classes/Input.xml | 4 | ||||
| -rw-r--r-- | platform/javascript/godot_js.h | 1 | ||||
| -rw-r--r-- | platform/javascript/js/libs/library_godot_input.js | 9 | ||||
| -rw-r--r-- | platform/javascript/os_javascript.cpp | 4 | ||||
| -rw-r--r-- | platform/javascript/os_javascript.h | 2 | 
6 files changed, 20 insertions, 2 deletions
diff --git a/core/os/os.cpp b/core/os/os.cpp index b9daf6fa53..619e3eb06f 100644 --- a/core/os/os.cpp +++ b/core/os/os.cpp @@ -159,7 +159,7 @@ int OS::get_process_id() const {  }  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 { diff --git a/doc/classes/Input.xml b/doc/classes/Input.xml index e73021ead4..796a80873f 100644 --- a/doc/classes/Input.xml +++ b/doc/classes/Input.xml @@ -354,9 +354,11 @@  			<return type="void" />  			<argument index="0" name="duration_ms" type="int" default="500" />  			<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 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>  		</method>  		<method name="warp_mouse"> diff --git a/platform/javascript/godot_js.h b/platform/javascript/godot_js.h index 567b491336..1dce8035a6 100644 --- a/platform/javascript/godot_js.h +++ b/platform/javascript/godot_js.h @@ -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_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_vibrate_handheld(int p_duration_ms);  // 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)); diff --git a/platform/javascript/js/libs/library_godot_input.js b/platform/javascript/js/libs/library_godot_input.js index 1e64c260f8..51571d64a2 100644 --- a/platform/javascript/js/libs/library_godot_input.js +++ b/platform/javascript/js/libs/library_godot_input.js @@ -534,6 +534,15 @@ const GodotInput = {  			GodotRuntime.free(ptr);  		}, 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'); diff --git a/platform/javascript/os_javascript.cpp b/platform/javascript/os_javascript.cpp index 1686353229..dc81b8b4b6 100644 --- a/platform/javascript/os_javascript.cpp +++ b/platform/javascript/os_javascript.cpp @@ -177,6 +177,10 @@ String OS_JavaScript::get_name() const {  	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 {  	return "/userfs";  } diff --git a/platform/javascript/os_javascript.h b/platform/javascript/os_javascript.h index 6900a34ee3..35e13c94fc 100644 --- a/platform/javascript/os_javascript.h +++ b/platform/javascript/os_javascript.h @@ -90,6 +90,8 @@ public:  	// Implemented in javascript_main.cpp loop callback instead.  	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_config_path() const override;  	String get_data_path() const override;  |