Render asteroid belts from daemon pose list
This commit is contained in:
parent
c0e60413a2
commit
89290e2fee
2 changed files with 8 additions and 15 deletions
|
|
@ -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<AetheriaRuntimeDaemonBodyPose> _daemonBodyPoses",
|
||||
"private readonly Dictionary<string, AetheriaRuntimeDaemonBodyPose> _daemonBodyPosesByBodyKey",
|
||||
"private readonly List<AetheriaRuntimeDaemonAsteroidBeltPose> _daemonAsteroidBeltPoses",
|
||||
"private readonly Dictionary<string, AetheriaRuntimeDaemonAsteroidBeltPose> _daemonAsteroidBeltPosesByBodyKey",
|
||||
"private readonly List<AetheriaRuntimeDaemonCompassMarker> _daemonCompassMarkers",
|
||||
"private readonly Dictionary<int, AetheriaRuntimeDaemonCompassMarker> _daemonCompassMarkersByEntityIndex",
|
||||
"private readonly List<int> _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
|
||||
|
|
|
|||
|
|
@ -89,8 +89,6 @@ public class ZoneRenderer : MonoBehaviour
|
|||
new Dictionary<string, AetheriaRuntimeDaemonBodyPose>(StringComparer.Ordinal);
|
||||
private readonly List<AetheriaRuntimeDaemonAsteroidBeltPose> _daemonAsteroidBeltPoses =
|
||||
new List<AetheriaRuntimeDaemonAsteroidBeltPose>();
|
||||
private readonly Dictionary<string, AetheriaRuntimeDaemonAsteroidBeltPose> _daemonAsteroidBeltPosesByBodyKey =
|
||||
new Dictionary<string, AetheriaRuntimeDaemonAsteroidBeltPose>(StringComparer.Ordinal);
|
||||
private readonly List<AetheriaRuntimeDaemonAsteroidInstancePose> _visibleAsteroidInstancePoses =
|
||||
new List<AetheriaRuntimeDaemonAsteroidInstancePose>();
|
||||
private readonly List<AetheriaRuntimeDaemonCompassMarker> _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()
|
||||
|
|
|
|||
Loading…
Reference in a new issue