diff --git a/zzre/game/Game.cs b/zzre/game/Game.cs index 0cd448c2..e8cbc583 100644 --- a/zzre/game/Game.cs +++ b/zzre/game/Game.cs @@ -18,6 +18,7 @@ public class Game : BaseDisposable, ITagContainer private readonly GameTime time; private readonly DefaultEcs.World ecsWorld; private readonly Camera camera; + private readonly OnceAction onceUpdate = new(); private readonly ISystem updateSystems; private readonly ISystem renderSystems; private readonly systems.SyncedLocation syncedLocation; @@ -156,7 +157,7 @@ public Game(ITagContainer diContainer, Savegame savegame) //camera.Location.LocalPosition = -worldBuffers.Origin; ecsWorld.Set(worldLocation); - LoadOverworldScene(savegame.sceneId, () => FindEntryTrigger(savegame.entryId)); + onceUpdate.Next += () => LoadOverworldScene(savegame.sceneId, () => FindEntryTrigger(savegame.entryId)); } protected override void DisposeManaged() @@ -178,6 +179,7 @@ private void HandleResize() public void Update() { + onceUpdate.Invoke(); updateSystems.Update(time.Delta); }