diff --git a/Aetheria.State.Verify/Program.cs b/Aetheria.State.Verify/Program.cs index e0c79f80f..423ca52cf 100644 --- a/Aetheria.State.Verify/Program.cs +++ b/Aetheria.State.Verify/Program.cs @@ -1994,6 +1994,9 @@ static void RequireDaemonRenderQueryAuthority(string root) "private readonly List _daemonWormholeExits", "public Dictionary WormholeInstances", "AetheriaRuntimeRunCheckpointCommit daemonRun = null", + "public void ApplyDaemonFrame(", + "AetheriaRuntimeZoneSnapshotCommit daemonZone,", + "AetheriaRuntimeRunCheckpointCommit daemonRun)", "_daemonZoneSnapshot = daemonZone;", "_daemonRunSnapshot = daemonRun;", "AetheriaRuntimeDaemonRenderQueries.EvaluateGravityTerrainHeight(", @@ -7674,6 +7677,7 @@ static void RequireMainMenuContinueRunState(string root) "run.CurrentEntityKey", "CreateDaemonEntitySnapshots(runId, daemonZone)", "CanApplyDaemonEntitySnapshotsInPlace", + "ZoneRenderer?.ApplyDaemonFrame(daemonZone, run)", "ApplyDaemonEntitySnapshotsInPlace", "ReplaceZoneEntitiesFromTypedSnapshots", "RestoreChildAndDockingRelationships", @@ -7921,6 +7925,7 @@ static void RequireUnityObserverDoesNotTickLocalSimulation(string root) "observed.IsAuthoritative", "TryRestoreEntityGraphFromDaemonRun(observed.Run)", "CreateDaemonZoneConstructionBlueprint(daemonZone)", + "ZoneRenderer?.ApplyDaemonFrame(daemonZone, run)", "CreateDaemonEntitySnapshots(runId, daemonZone)", "FindCurrentDaemonZoneSnapshot()", "ResolveDaemonObserver()?.LastObservedState?.Run", diff --git a/Assets/Scripts/Gameplay/ActionGameManager.cs b/Assets/Scripts/Gameplay/ActionGameManager.cs index cdfe17b5d..da78e86d9 100644 --- a/Assets/Scripts/Gameplay/ActionGameManager.cs +++ b/Assets/Scripts/Gameplay/ActionGameManager.cs @@ -2229,6 +2229,7 @@ public class ActionGameManager : MonoBehaviour if (CanApplyDaemonEntitySnapshotsInPlace(runId, run.CurrentZoneIndex, entitySnapshots, currentEntityKey)) { + ZoneRenderer?.ApplyDaemonFrame(daemonZone, run); RestoreDroppedPickupsFromDaemonZoneState(daemonZone); return true; } @@ -2243,6 +2244,7 @@ public class ActionGameManager : MonoBehaviour .Where(binding => binding != null) .ToArray() ?? Array.Empty(); ReplaceZoneEntitiesFromTypedSnapshots(entitySnapshots, currentEntityKey, actionBarBindings); + ZoneRenderer?.ApplyDaemonFrame(daemonZone, run); RestoreDroppedPickupsFromDaemonZoneState(daemonZone); _lastAppliedAuthoritativeDaemonRunId = runId; _lastAppliedAuthoritativeDaemonZoneIndex = run.CurrentZoneIndex; diff --git a/Assets/Scripts/Zone Display/ZoneRenderer.cs b/Assets/Scripts/Zone Display/ZoneRenderer.cs index 63e1585ed..a0ee0256f 100644 --- a/Assets/Scripts/Zone Display/ZoneRenderer.cs +++ b/Assets/Scripts/Zone Display/ZoneRenderer.cs @@ -201,14 +201,7 @@ public class ZoneRenderer : MonoBehaviour { ClearZone(); Zone = zone; - _daemonRunSnapshot = daemonRun; - _daemonZoneSnapshot = daemonZone; - var zoneRenderRadius = (float)AetheriaRuntimeDaemonRenderQueries.ResolveZoneRenderRadius( - _daemonZoneSnapshot, - zone.Radius); - SectorBrushes.localScale = zoneRenderRadius * 2 * Vector3.one; - SlimeGravityCamera.orthographicSize = zoneRenderRadius; - SlimeRenderer.ZoneRadius = zoneRenderRadius; + ApplyDaemonFrame(daemonZone, daemonRun); RefreshDaemonBodyPoses(); RefreshDaemonAsteroidBeltPoses(); var beltPosesByBodyKey = _daemonAsteroidBeltPoses @@ -248,14 +241,28 @@ public class ZoneRenderer : MonoBehaviour } } + foreach (var exit in _daemonWormholeExits) + AddWormhole(exit); + } + + public void ApplyDaemonFrame( + AetheriaRuntimeZoneSnapshotCommit daemonZone, + AetheriaRuntimeRunCheckpointCommit daemonRun) + { + _daemonRunSnapshot = daemonRun; + _daemonZoneSnapshot = daemonZone; + var zoneRenderRadius = (float)AetheriaRuntimeDaemonRenderQueries.ResolveZoneRenderRadius( + _daemonZoneSnapshot, + Zone?.Radius ?? 2000); + SectorBrushes.localScale = zoneRenderRadius * 2 * Vector3.one; + SlimeGravityCamera.orthographicSize = zoneRenderRadius; + SlimeRenderer.ZoneRadius = zoneRenderRadius; AetheriaRuntimeDaemonRenderQueries.QueryWormholeExits( _daemonRunSnapshot, _daemonZoneSnapshot, zoneRenderRadius, Settings.WormholeDistanceRatio, _daemonWormholeExits); - foreach (var exit in _daemonWormholeExits) - AddWormhole(exit); } public void AddWormhole(AetheriaRuntimeDaemonWormholeExit exit)