legacy-of-the-ancient-questor/scripts/loader.gd

37 lines
1.0 KiB
GDScript

extends Node
signal LOADING_PROGRESS_UPDATED
@export var loadingScene: Node = preload("res://scenes/ui/loading_screen.tscn").instantiate()
var scenePath: String
func loadScene(caller: Node, path: String):
scenePath = path
get_tree().root.add_child(loadingScene)
ResourceLoader.load_threaded_request(scenePath)
print(scenePath)
caller.queue_free()
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
if scenePath:
var progress: Array = []
var loaderStatus: ResourceLoader.ThreadLoadStatus = ResourceLoader.load_threaded_get_status(scenePath, progress)
if loaderStatus == ResourceLoader.ThreadLoadStatus.THREAD_LOAD_LOADED:
var loadedScene = ResourceLoader.load_threaded_get(scenePath).instantiate()
get_tree().root.remove_child(loadingScene)
get_tree().root.add_child(loadedScene)
scenePath = ""
elif loaderStatus == ResourceLoader.ThreadLoadStatus.THREAD_LOAD_IN_PROGRESS:
LOADING_PROGRESS_UPDATED.emit(progress[0])
else:
pass