Made map loading multithreaded
This commit is contained in:
@ -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()
|
||||
Reference in New Issue
Block a user