From 8cb1b28ea2e4fb1bc6d40eca8ff9d4443345cf91 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Sun, 21 Jun 2026 16:37:31 +0100 Subject: [PATCH] Render wormhole exits from daemon queries --- Aetheria.State.Verify/Program.cs | 7 ++++++- Assets/Scripts/ServerShared/Wormhole.cs | 7 ------- Assets/Scripts/ServerShared/Wormhole.cs.meta | 3 --- Assets/Scripts/Zone Display/ZoneRenderer.cs | 21 +++++--------------- 4 files changed, 11 insertions(+), 27 deletions(-) delete mode 100644 Assets/Scripts/ServerShared/Wormhole.cs delete mode 100644 Assets/Scripts/ServerShared/Wormhole.cs.meta diff --git a/Aetheria.State.Verify/Program.cs b/Aetheria.State.Verify/Program.cs index f2cfc9f6b..db192ef40 100644 --- a/Aetheria.State.Verify/Program.cs +++ b/Aetheria.State.Verify/Program.cs @@ -1927,7 +1927,9 @@ static void RequireDaemonRenderQueryAuthority(string root) zoneRenderer.Contains("zone.PlanetInstances.TryGetValue(pose.BodyKey, out var planet)", StringComparison.Ordinal) || zoneRenderer.Contains("LoadPlanet(planet)", StringComparison.Ordinal) || zoneRenderer.Contains("zone.AsteroidBelts.TryGetValue(body.BodyKey", StringComparison.Ordinal) || - zoneRenderer.Contains("LoadAsteroidBelt(belt)", StringComparison.Ordinal)) + zoneRenderer.Contains("LoadAsteroidBelt(belt)", StringComparison.Ordinal) || + zoneRenderer.Contains("new Wormhole", StringComparison.Ordinal) || + zoneRenderer.Contains("zone.Galaxy", StringComparison.Ordinal)) { throw new InvalidOperationException( "ZoneRenderer frame updates must read body render state from daemon body poses instead of indexed mirrored Unity planets."); @@ -1988,6 +1990,7 @@ static void RequireDaemonRenderQueryAuthority(string root) "private readonly HashSet _daemonVisibleEntityIndicesSet", "private readonly HashSet _visibleDaemonEntityIndices", "private readonly List _daemonWormholeExits", + "public Dictionary WormholeInstances", "AetheriaRuntimeRunCheckpointCommit daemonRun = null", "_daemonZoneSnapshot = daemonZone;", "_daemonRunSnapshot = daemonRun;", @@ -2011,6 +2014,8 @@ static void RequireDaemonRenderQueryAuthority(string root) "AetheriaRuntimeDaemonRenderQueries.QueryCompassMarkers(", "AetheriaRuntimeDaemonRenderQueries.QueryVisibleEntityIndices(", "AetheriaRuntimeDaemonRenderQueries.QueryWormholeExits(", + "AddWormhole(exit)", + "public void AddWormhole(AetheriaRuntimeDaemonWormholeExit exit)", "private double DaemonSimulationTimeSeconds => _daemonZoneSnapshot?.SimulationTimeSeconds ?? 0;", "_daemonCompassMarkersByEntityIndex.TryGetValue(entityInstance.Entity.DaemonEntityIndex, out var marker)", "_daemonBodyPosesByBodyKey.TryGetValue(planet.Key, out var pose)", diff --git a/Assets/Scripts/ServerShared/Wormhole.cs b/Assets/Scripts/ServerShared/Wormhole.cs deleted file mode 100644 index bacc4d12f..000000000 --- a/Assets/Scripts/ServerShared/Wormhole.cs +++ /dev/null @@ -1,7 +0,0 @@ -using float2 = CultMath.float2; - -public class Wormhole -{ - public float2 Position; - public GalaxyZone Target; -} diff --git a/Assets/Scripts/ServerShared/Wormhole.cs.meta b/Assets/Scripts/ServerShared/Wormhole.cs.meta deleted file mode 100644 index 538a13036..000000000 --- a/Assets/Scripts/ServerShared/Wormhole.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: b5a943b5358a47a199ad5e7271c14032 -timeCreated: 1614907192 \ No newline at end of file diff --git a/Assets/Scripts/Zone Display/ZoneRenderer.cs b/Assets/Scripts/Zone Display/ZoneRenderer.cs index 84465d800..18b61ea56 100644 --- a/Assets/Scripts/Zone Display/ZoneRenderer.cs +++ b/Assets/Scripts/Zone Display/ZoneRenderer.cs @@ -101,7 +101,7 @@ public class ZoneRenderer : MonoBehaviour private readonly List _daemonWormholeExits = new List(); - public Dictionary WormholeInstances = new Dictionary(); + public Dictionary WormholeInstances = new Dictionary(); private List _loot = new List(); public Zone Zone { get; private set; } @@ -237,27 +237,16 @@ public class ZoneRenderer : MonoBehaviour Settings.WormholeDistanceRatio, _daemonWormholeExits); foreach (var exit in _daemonWormholeExits) - { - var target = zone.Galaxy != null && - exit.TargetZoneIndex >= 0 && - exit.TargetZoneIndex < zone.Galaxy.Zones.Length - ? zone.Galaxy.Zones[exit.TargetZoneIndex] - : null; - AddWormhole(new Wormhole - { - Target = target, - Position = AetheriaMath.ToCult(new float2((float)exit.PositionX, (float)exit.PositionZ)) - }); - } + AddWormhole(exit); } - public void AddWormhole(Wormhole wormhole) + public void AddWormhole(AetheriaRuntimeDaemonWormholeExit exit) { var instance = Instantiate(WormholePrefab); - instance.position = new Vector3(wormhole.Position.x, 0, wormhole.Position.y); + instance.position = new Vector3((float)exit.PositionX, 0, (float)exit.PositionZ); var icon = CompassIconPrototype.Instantiate(); icon.Icon.sprite = WormholeIcon; - WormholeInstances.Add(wormhole, (instance.gameObject, icon)); + WormholeInstances[exit.TargetZoneIndex] = (instance.gameObject, icon); } public void ClearZone()