Made map loading multithreaded

This commit is contained in:
2024-09-03 17:37:11 -05:00
parent 54c69845f0
commit 3eb8e767bc

View File

@ -2,22 +2,35 @@ 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=GlobalSettings.current_map):
func openMap(new_map=Default_Map):
if new_map is PackedScene:
current_map = new_map.instantiate()
if new_map is String:
current_map = load(new_map).instantiate()
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 _init():
openMap()
func _ready():
openMap(GlobalSettings.current_map)
func _exit_tree() -> void:
loading_thread.wait_to_finish()