Files
godot-demo-projects/misc/os_test/actions.gd
Hugo Locurcio 6424e02ebf Add fallbacks and mention non-working features when using Compatibility or the Web platform (#1132)
- Make 3D lights with shadows darker when using Compatibility to better
  match the appearance of Forward+/Mobile, due to the use of sRGB blending
  for those lights.
- Silence some warnings when running projects with the Compatibility
  rendering method, such as the one about 2D MSAA not being supported.
- Rebake lightmaps in Global Illumination to improve quality and reduce
  light leaking with improvements from 4.3.
  - Increase probe density for dynamic objects, and mark the moving box
    as a dynamic object for GI purposes.

This is done to improve the experience with the web-based demos,
which always run with the Compatibility rendering method.
2025-10-02 10:31:42 -07:00

137 lines
4.9 KiB
GDScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

extends Node
func _ready() -> void:
if OS.has_feature("web"):
for button: Button in [
$GridContainer/OpenShellFolder,
$GridContainer/MoveWindowToForeground,
$GridContainer/RequestAttention,
$GridContainer/VibrateDeviceShort,
$GridContainer/VibrateDeviceLong,
$GridContainer/AddGlobalMenuItems,
$GridContainer/RemoveGlobalMenuItem,
$GridContainer/KillCurrentProcess,
]:
button.disabled = true
button.text += "\n(not supported on Web)"
func _on_open_shell_web_pressed() -> void:
OS.shell_open("https://example.com")
func _on_open_shell_folder_pressed() -> void:
var path := OS.get_environment("HOME")
if path == "":
# Windows-specific.
path = OS.get_environment("USERPROFILE")
if OS.get_name() == "macOS":
# MacOS-specific.
path = "file://" + path
OS.shell_show_in_file_manager(path)
func _on_change_window_title_pressed() -> void:
DisplayServer.window_set_title("Modified window title. Unicode characters for testing: é € × Ù ¨")
func _on_change_window_icon_pressed() -> void:
if not DisplayServer.has_feature(DisplayServer.FEATURE_ICON):
OS.alert("Changing the window icon is not supported by the current display server (%s)." % DisplayServer.get_name())
return
var image := Image.create(128, 128, false, Image.FORMAT_RGB8)
image.fill(Color(1, 0.6, 0.3))
DisplayServer.set_icon(image)
func _on_move_window_to_foreground_pressed() -> void:
DisplayServer.window_set_title("Will move window to foreground in 5 seconds, try unfocusing the window...")
await get_tree().create_timer(5).timeout
DisplayServer.window_move_to_foreground()
# Restore the previous window title.
DisplayServer.window_set_title(ProjectSettings.get_setting("application/config/name"))
func _on_request_attention_pressed() -> void:
DisplayServer.window_set_title("Will request attention in 5 seconds, try unfocusing the window...")
await get_tree().create_timer(5).timeout
DisplayServer.window_request_attention()
# Restore the previous window title.
DisplayServer.window_set_title(ProjectSettings.get_setting("application/config/name"))
func _on_vibrate_device_short_pressed() -> void:
Input.vibrate_handheld(200)
func _on_vibrate_device_long_pressed() -> void:
Input.vibrate_handheld(1000)
func _on_add_global_menu_items_pressed() -> void:
if not DisplayServer.has_feature(DisplayServer.FEATURE_GLOBAL_MENU):
OS.alert("Global menus are not supported by the current display server (%s)." % DisplayServer.get_name())
return
# Add a menu to the main menu bar.
DisplayServer.global_menu_add_submenu_item("_main", "Hello", "_main/Hello")
DisplayServer.global_menu_add_item(
"_main/Hello",
"World",
func(tag: String) -> void: print("Clicked main 1 " + str(tag)),
func(tag: String) -> void: print("Key main 1 " + str(tag)),
null,
(KEY_MASK_META | KEY_1) as Key
)
DisplayServer.global_menu_add_separator("_main/Hello")
DisplayServer.global_menu_add_item("_main/Hello", "World2", func(tag: String) -> void: print("Clicked main 2 " + str(tag)))
# Add a menu to the Dock context menu.
DisplayServer.global_menu_add_submenu_item("_dock", "Hello", "_dock/Hello")
DisplayServer.global_menu_add_item("_dock/Hello", "World", func(tag: String) -> void: print("Clicked dock 1 " + str(tag)))
DisplayServer.global_menu_add_separator("_dock/Hello")
DisplayServer.global_menu_add_item("_dock/Hello", "World2", func(tag: String) -> void: print("Clicked dock 2 " + str(tag)))
func _on_remove_global_menu_item_pressed() -> void:
if not DisplayServer.has_feature(DisplayServer.FEATURE_GLOBAL_MENU):
OS.alert("Global menus are not supported by the current display server (%s)." % DisplayServer.get_name())
return
DisplayServer.global_menu_remove_item("_main/Hello", 2)
DisplayServer.global_menu_remove_item("_main/Hello", 1)
DisplayServer.global_menu_remove_item("_main/Hello", 0)
DisplayServer.global_menu_remove_item("_main", 0)
DisplayServer.global_menu_remove_item("_dock/Hello", 2)
DisplayServer.global_menu_remove_item("_dock/Hello", 1)
DisplayServer.global_menu_remove_item("_dock/Hello", 0)
DisplayServer.global_menu_remove_item("_dock", 0)
func _on_get_clipboard_pressed() -> void:
if not DisplayServer.has_feature(DisplayServer.FEATURE_CLIPBOARD):
OS.alert("Clipboard I/O is not supported by the current display server (%s)." % DisplayServer.get_name())
return
OS.alert("Clipboard contents:\n\n%s" % DisplayServer.clipboard_get())
func _on_set_clipboard_pressed() -> void:
if not DisplayServer.has_feature(DisplayServer.FEATURE_CLIPBOARD):
OS.alert("Clipboard I/O is not supported by the current display server (%s)." % DisplayServer.get_name())
return
DisplayServer.clipboard_set("Modified clipboard contents. Unicode characters for testing: é € × Ù ¨")
func _on_display_alert_pressed() -> void:
OS.alert("Hello from Godot! Close this dialog to resume the main window.")
func _on_kill_current_process_pressed() -> void:
OS.kill(OS.get_process_id())