37 lines
1.0 KiB
GDScript
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
|
|
|
|
|
|
|