mirror of
https://gitlab.com/MaddoScientisto/cirnogodot.git
synced 2026-06-01 09:55:35 +00:00
40 lines
1.3 KiB
GDScript
40 lines
1.3 KiB
GDScript
@tool
|
|
extends Button
|
|
|
|
const META_NAME := "test_scene"
|
|
|
|
func _on_pressed() -> void:
|
|
var current_scene := EditorInterface.get_edited_scene_root()
|
|
if current_scene.has_meta(META_NAME):
|
|
run_test_scene()
|
|
else:
|
|
show_selection_window("Select test scene path")
|
|
|
|
func _on_gui_input(event: InputEvent) -> void:
|
|
if event is InputEventMouseButton\
|
|
and event.pressed\
|
|
and event.button_index == MOUSE_BUTTON_RIGHT:
|
|
show_selection_window("Select test scene path")
|
|
|
|
func run_test_scene():
|
|
var current_scene := EditorInterface.get_edited_scene_root()
|
|
var test_scene_path := current_scene.get_meta(META_NAME)
|
|
if ResourceLoader.exists(test_scene_path):
|
|
EditorInterface.play_custom_scene(test_scene_path)
|
|
else:
|
|
current_scene.remove_meta(META_NAME)
|
|
show_selection_window("No scene exists at saved path, select new path")
|
|
|
|
func show_selection_window(message:String):
|
|
var file_dialog := FileDialog.new()
|
|
file_dialog.mode_overrides_title = true
|
|
file_dialog.title = message
|
|
file_dialog.file_mode = FileDialog.FILE_MODE_OPEN_FILE
|
|
file_dialog.filters = ["*.tscn","*.scn"]
|
|
file_dialog.connect("file_selected", set_test_scene_path)
|
|
EditorInterface.popup_dialog_centered(file_dialog, Vector2i(300, 400))
|
|
|
|
func set_test_scene_path(path:String):
|
|
var current_scene := EditorInterface.get_edited_scene_root()
|
|
current_scene.set_meta(META_NAME, path)
|
|
run_test_scene()
|