36 lines
772 B
GDScript
36 lines
772 B
GDScript
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() |