Render wormhole exits from daemon queries
This commit is contained in:
parent
ef7abd78b8
commit
8cb1b28ea2
4 changed files with 11 additions and 27 deletions
|
|
@ -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<int> _daemonVisibleEntityIndicesSet",
|
||||
"private readonly HashSet<int> _visibleDaemonEntityIndices",
|
||||
"private readonly List<AetheriaRuntimeDaemonWormholeExit> _daemonWormholeExits",
|
||||
"public Dictionary<int, (GameObject gravity, CompassIcon icon)> 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)",
|
||||
|
|
|
|||
|
|
@ -1,7 +0,0 @@
|
|||
using float2 = CultMath.float2;
|
||||
|
||||
public class Wormhole
|
||||
{
|
||||
public float2 Position;
|
||||
public GalaxyZone Target;
|
||||
}
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: b5a943b5358a47a199ad5e7271c14032
|
||||
timeCreated: 1614907192
|
||||
|
|
@ -101,7 +101,7 @@ public class ZoneRenderer : MonoBehaviour
|
|||
private readonly List<AetheriaRuntimeDaemonWormholeExit> _daemonWormholeExits =
|
||||
new List<AetheriaRuntimeDaemonWormholeExit>();
|
||||
|
||||
public Dictionary<Wormhole, (GameObject gravity, CompassIcon icon)> WormholeInstances = new Dictionary<Wormhole, (GameObject, CompassIcon)>();
|
||||
public Dictionary<int, (GameObject gravity, CompassIcon icon)> WormholeInstances = new Dictionary<int, (GameObject, CompassIcon)>();
|
||||
private List<ItemPickup> _loot = new List<ItemPickup>();
|
||||
|
||||
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<CompassIcon>();
|
||||
icon.Icon.sprite = WormholeIcon;
|
||||
WormholeInstances.Add(wormhole, (instance.gameObject, icon));
|
||||
WormholeInstances[exit.TargetZoneIndex] = (instance.gameObject, icon);
|
||||
}
|
||||
|
||||
public void ClearZone()
|
||||
|
|
|
|||
Loading…
Reference in a new issue