From 89290e2fee92eb159b11ca5ea4d4c52c726a53d7 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Sun, 21 Jun 2026 16:10:38 +0100 Subject: [PATCH] Render asteroid belts from daemon pose list --- Aetheria.State.Verify/Program.cs | 6 +++--- Assets/Scripts/Zone Display/ZoneRenderer.cs | 17 +++++------------ 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/Aetheria.State.Verify/Program.cs b/Aetheria.State.Verify/Program.cs index dc65ec875..5358a05c4 100644 --- a/Aetheria.State.Verify/Program.cs +++ b/Aetheria.State.Verify/Program.cs @@ -1930,7 +1930,8 @@ static void RequireDaemonRenderQueryAuthority(string root) if (zoneRenderer.Contains("belt.OrbitPosition", StringComparison.Ordinal) || zoneRenderer.Contains("belt.Radius", StringComparison.Ordinal) || - zoneRenderer.Contains("belt.Transforms", StringComparison.Ordinal)) + zoneRenderer.Contains("belt.Transforms", StringComparison.Ordinal) || + zoneRenderer.Contains("foreach (var (key, belt) in Zone.AsteroidBelts)", StringComparison.Ordinal)) { throw new InvalidOperationException( "ZoneRenderer frame updates must read asteroid belt and instance poses from daemon render queries instead of mirrored Unity asteroid belts."); @@ -1969,7 +1970,6 @@ static void RequireDaemonRenderQueryAuthority(string root) "private readonly List _daemonBodyPoses", "private readonly Dictionary _daemonBodyPosesByBodyKey", "private readonly List _daemonAsteroidBeltPoses", - "private readonly Dictionary _daemonAsteroidBeltPosesByBodyKey", "private readonly List _daemonCompassMarkers", "private readonly Dictionary _daemonCompassMarkersByEntityIndex", "private readonly List _daemonVisibleEntityIndices", @@ -1990,13 +1990,13 @@ static void RequireDaemonRenderQueryAuthority(string root) "foreach (var entity in EntityInstances.Keys.ToArray())", "AetheriaRuntimeDaemonRenderQueries.QueryBodyPoses(_daemonZoneSnapshot, _daemonBodyPoses);", "AetheriaRuntimeDaemonRenderQueries.QueryAsteroidBeltPoses(_daemonZoneSnapshot, _daemonAsteroidBeltPoses);", + "foreach (var beltPose in _daemonAsteroidBeltPoses)", "AetheriaRuntimeDaemonRenderQueries.QueryAsteroidInstancePoses(", "AetheriaRuntimeDaemonRenderQueries.QueryCompassMarkers(", "AetheriaRuntimeDaemonRenderQueries.QueryVisibleEntityIndices(", "AetheriaRuntimeDaemonRenderQueries.QueryWormholeExits(", "_daemonCompassMarkersByEntityIndex.TryGetValue(entityInstance.Entity.DaemonEntityIndex, out var marker)", "_daemonBodyPosesByBodyKey.TryGetValue(planet.Key, out var pose)", - "_daemonAsteroidBeltPosesByBodyKey.TryGetValue(key, out var beltPose)", "pose.GravityWaveSpeed" }; var missingZoneRendererSymbols = requiredZoneRendererSymbols diff --git a/Assets/Scripts/Zone Display/ZoneRenderer.cs b/Assets/Scripts/Zone Display/ZoneRenderer.cs index e03be1b66..18928dc77 100644 --- a/Assets/Scripts/Zone Display/ZoneRenderer.cs +++ b/Assets/Scripts/Zone Display/ZoneRenderer.cs @@ -89,8 +89,6 @@ public class ZoneRenderer : MonoBehaviour new Dictionary(StringComparer.Ordinal); private readonly List _daemonAsteroidBeltPoses = new List(); - private readonly Dictionary _daemonAsteroidBeltPosesByBodyKey = - new Dictionary(StringComparer.Ordinal); private readonly List _visibleAsteroidInstancePoses = new List(); private readonly List _daemonCompassMarkers = @@ -479,9 +477,12 @@ public class ZoneRenderer : MonoBehaviour Plane[] planes = GeometryUtility.CalculateFrustumPlanes(MainCamera); bool isVisible(Bounds bounds) => GeometryUtility.TestPlanesAABB(planes, bounds); - foreach (var (key, belt) in Zone.AsteroidBelts) + foreach (var beltPose in _daemonAsteroidBeltPoses) { - if (!_daemonAsteroidBeltPosesByBodyKey.TryGetValue(key, out var beltPose)) + var key = beltPose.BodyKey; + if (string.IsNullOrWhiteSpace(key) || + !_beltMeshes.TryGetValue(key, out var meshes) || + !_beltMatrices.TryGetValue(key, out var matrices)) continue; var center = new float2((float)beltPose.CenterX, (float)beltPose.CenterZ); @@ -500,8 +501,6 @@ public class ZoneRenderer : MonoBehaviour if(beltIsVisible) { - var meshes = _beltMeshes[key]; - var matrices = _beltMatrices[key]; var tx = 0; for (int i = 0; i < meshes.Length; i++) { @@ -614,12 +613,6 @@ public class ZoneRenderer : MonoBehaviour private void RefreshDaemonAsteroidBeltPoses() { AetheriaRuntimeDaemonRenderQueries.QueryAsteroidBeltPoses(_daemonZoneSnapshot, _daemonAsteroidBeltPoses); - _daemonAsteroidBeltPosesByBodyKey.Clear(); - foreach (var pose in _daemonAsteroidBeltPoses) - { - if (!string.IsNullOrWhiteSpace(pose.BodyKey)) - _daemonAsteroidBeltPosesByBodyKey[pose.BodyKey] = pose; - } } private void RefreshDaemonCompassMarkers()