Rework loading maps to be asynchronous, change debug menu so that its not completely pausing the game

This commit is contained in:
2025-09-26 14:05:05 -07:00
parent 578cde65cc
commit 9107b8c570
10 changed files with 164 additions and 95 deletions

View File

@@ -0,0 +1,41 @@
using Godot;
using System.Linq;
namespace Zennysoft.Game.Ma;
public partial class SceneLoader : Node
{
private string _sceneToLoad;
private bool _loading = false;
[Signal]
public delegate void SceneLoadedEventHandler();
public Node LoadedScene { get; private set; }
public void LoadSceneRequest(string sceneToLoad)
{
ResourceLoader.LoadThreadedRequest(sceneToLoad);
_sceneToLoad = sceneToLoad;
_loading = true;
}
private void LoadScene()
{
_loading = false;
var scene = (PackedScene)ResourceLoader.LoadThreadedGet(_sceneToLoad);
LoadedScene = scene.Instantiate();
EmitSignal(SignalName.SceneLoaded);
}
public override void _Process(double delta)
{
if (!_loading)
return;
var progress = new Godot.Collections.Array();
ResourceLoader.LoadThreadedGetStatus(_sceneToLoad, progress);
if ((double)progress.Single() == 1)
LoadScene();
}
}