class_name MapLoader extends Node3D @export var Default_Map:PackedScene @onready var loading_thread : Thread = Thread.new() signal map_loaded var current_map var loaded_scene : PackedScene func openMap(new_map=Default_Map): if new_map is PackedScene: current_map = new_map.instantiate() if new_map is String: loading_thread.start(_thread_Load.bind(new_map)) while not loaded_scene: pass current_map = loaded_scene.instantiate() add_child(current_map) emit_signal("map_loaded") func _thread_Load(path : String): var loader = load(path) if loader: loaded_scene = loader print("Map Loaded") func closeMap(): remove_child(current_map) func _ready(): openMap(GlobalSettings.current_map) func _exit_tree() -> void: loading_thread.wait_to_finish()