diff --git a/Aetheria.State.Verify/Program.cs b/Aetheria.State.Verify/Program.cs index 619f0dd4e..c2182b1dd 100644 --- a/Aetheria.State.Verify/Program.cs +++ b/Aetheria.State.Verify/Program.cs @@ -7476,7 +7476,7 @@ static void RequireMenuDockingUsesManagedTypedSnapshot(string root) string.Join(", ", directDockingOffenders)); } - Console.WriteLine("Menu docking state: Unity menus read managed reactive typed docking snapshots"); + Console.WriteLine("Menu docking state: Unity menus sample managed typed docking documents through native current access"); } static bool HasManagedDockingSnapshotAccess(string source) @@ -7508,16 +7508,17 @@ static bool HasManagedDockingSnapshotAccess(string source) } return source.Contains("public sealed class AetheriaUnityObservedDockingIndex", StringComparison.Ordinal) && - source.Contains("CultMeshReactiveDocument _currentEntity", StringComparison.Ordinal) && - source.Contains("CultMeshReactiveDocument _currentDocking", StringComparison.Ordinal) && - source.Contains("CultMeshReactiveDocument _stationRefit", StringComparison.Ordinal) && source.Contains("TryReadDockingSnapshots(", StringComparison.Ordinal) && - source.Contains("AetheriaUnityRuntimeClientProvider", StringComparison.Ordinal) && - source.Contains(".ReactiveCurrentEntity(\"unity-observed-docking\")", StringComparison.Ordinal) && - source.Contains(".ReactiveCurrentDocking(\"unity-observed-docking\")", StringComparison.Ordinal) && - source.Contains(".ReactiveStationRefit(\"unity-observed-docking\")", StringComparison.Ordinal) && - source.Contains("_currentDocking?.Current", StringComparison.Ordinal) && - source.Contains("_stationRefit?.Current", StringComparison.Ordinal) && + source.Contains("AetheriaUnityRuntimeClientProvider.RuntimeState()", StringComparison.Ordinal) && + source.Contains("state.CurrentDockingState()", StringComparison.Ordinal) && + source.Contains("state.CurrentStationRefit()", StringComparison.Ordinal) && + source.Contains("state.CurrentEntityState()", StringComparison.Ordinal) && + !source.Contains("CultMeshReactiveDocument", StringComparison.Ordinal) && + !source.Contains("CultMeshReactiveDocument", StringComparison.Ordinal) && + !source.Contains("CultMeshReactiveDocument", StringComparison.Ordinal) && + !source.Contains(".ReactiveCurrentEntity(\"unity-observed-docking\")", StringComparison.Ordinal) && + !source.Contains(".ReactiveCurrentDocking(\"unity-observed-docking\")", StringComparison.Ordinal) && + !source.Contains(".ReactiveStationRefit(\"unity-observed-docking\")", StringComparison.Ordinal) && !source.Contains("state.Latest()", StringComparison.Ordinal) && !source.Contains("state.Latest()", StringComparison.Ordinal) && !source.Contains("state.Latest()", StringComparison.Ordinal) && @@ -13720,16 +13721,11 @@ static void RequireMainMenuContinueRunState(string root) var requiredObservedDockingSymbols = new[] { "public sealed class AetheriaUnityObservedDockingIndex", - "CultMeshReactiveDocument _currentEntity", - "CultMeshReactiveDocument _currentDocking", - "CultMeshReactiveDocument _stationRefit", "TryReadDockingSnapshots(", - "AetheriaUnityRuntimeClientProvider", - ".ReactiveCurrentEntity(\"unity-observed-docking\")", - ".ReactiveCurrentDocking(\"unity-observed-docking\")", - ".ReactiveStationRefit(\"unity-observed-docking\")", - "_currentDocking?.Current", - "_stationRefit?.Current", + "AetheriaUnityRuntimeClientProvider.RuntimeState()", + "state.CurrentDockingState()", + "state.CurrentStationRefit()", + "state.CurrentEntityState()", "public bool IsEntityUndocked(Entity entity)", "public bool TryResolveDockingBay(", "out AetheriaRuntimeCurrentDockingDocument docking", @@ -13748,6 +13744,12 @@ static void RequireMainMenuContinueRunState(string root) var forbiddenObservedDockingSymbols = new[] { + "CultMeshReactiveDocument", + "CultMeshReactiveDocument", + "CultMeshReactiveDocument", + ".ReactiveCurrentEntity(\"unity-observed-docking\")", + ".ReactiveCurrentDocking(\"unity-observed-docking\")", + ".ReactiveStationRefit(\"unity-observed-docking\")", "state.Latest()", "state.Latest()", "state.Latest()", @@ -13765,7 +13767,7 @@ static void RequireMainMenuContinueRunState(string root) if (observedDockingHits.Length > 0) { throw new InvalidOperationException( - "Observed docking state composition must use owned managed reactive typed documents in AetheriaUnityObservedDockingIndex: " + + "Observed docking state composition must sample native current typed documents in AetheriaUnityObservedDockingIndex: " + string.Join(", ", observedDockingHits)); } diff --git a/Assets/Scripts/Gameplay/ActionGameManager.cs b/Assets/Scripts/Gameplay/ActionGameManager.cs index ec50bbc55..77aabe406 100644 --- a/Assets/Scripts/Gameplay/ActionGameManager.cs +++ b/Assets/Scripts/Gameplay/ActionGameManager.cs @@ -297,7 +297,6 @@ public class ActionGameManager : MonoBehaviour { _gameplayInputShell?.Dispose(); _observedTargetQuery?.Dispose(); - _observedDocking?.Dispose(); _observedTargetQuery = null; _observedDocking = null; AetheriaUnityRuntimeClientProvider.Dispose(); diff --git a/Assets/Scripts/Gameplay/AetheriaUnityObservedDockingIndex.cs b/Assets/Scripts/Gameplay/AetheriaUnityObservedDockingIndex.cs index a8ec51c64..e54d73548 100644 --- a/Assets/Scripts/Gameplay/AetheriaUnityObservedDockingIndex.cs +++ b/Assets/Scripts/Gameplay/AetheriaUnityObservedDockingIndex.cs @@ -5,14 +5,10 @@ using System; using System.Linq; using GameCult.Aetheria.State.Verse; -using GameCult.Mesh; -public sealed class AetheriaUnityObservedDockingIndex : IDisposable +public sealed class AetheriaUnityObservedDockingIndex { private readonly AetheriaUnityObservedEntityIndex _observedEntityIndex; - private CultMeshReactiveDocument _currentEntity; - private CultMeshReactiveDocument _currentDocking; - private CultMeshReactiveDocument _stationRefit; public AetheriaUnityObservedDockingIndex(AetheriaUnityObservedEntityIndex observedEntityIndex) { @@ -175,13 +171,13 @@ public sealed class AetheriaUnityObservedDockingIndex : IDisposable refit = null; try { - EnsureDockingDocuments(); - docking = _currentDocking?.Current; - refit = _stationRefit?.Current; + var state = AetheriaUnityRuntimeClientProvider.RuntimeState(); + docking = state.CurrentDockingState(); + refit = state.CurrentStationRefit(); if (docking == null || refit == null) return false; - entity = _currentEntity?.Current; + entity = state.CurrentEntityState(); return true; } catch @@ -198,27 +194,4 @@ public sealed class AetheriaUnityObservedDockingIndex : IDisposable ? entity.EntityKey : docking?.CurrentEntityKey ?? ""; } - - private void EnsureDockingDocuments() - { - if (_currentEntity != null && _currentDocking != null && _stationRefit != null) - return; - - _currentEntity ??= AetheriaUnityRuntimeClientProvider - .ReactiveCurrentEntity("unity-observed-docking"); - _currentDocking ??= AetheriaUnityRuntimeClientProvider - .ReactiveCurrentDocking("unity-observed-docking"); - _stationRefit ??= AetheriaUnityRuntimeClientProvider - .ReactiveStationRefit("unity-observed-docking"); - } - - public void Dispose() - { - _currentEntity?.Dispose(); - _currentEntity = null; - _currentDocking?.Dispose(); - _currentDocking = null; - _stationRefit?.Dispose(); - _stationRefit = null; - } } diff --git a/Assets/Scripts/UI/Menu/InventoryMenu.cs b/Assets/Scripts/UI/Menu/InventoryMenu.cs index 9d18a0c82..4ba0238e3 100644 --- a/Assets/Scripts/UI/Menu/InventoryMenu.cs +++ b/Assets/Scripts/UI/Menu/InventoryMenu.cs @@ -67,7 +67,6 @@ public class InventoryMenu : MonoBehaviour { if (!ReferenceEquals(_observedEntityIndex, observedEntityIndex)) { - _observedDockingIndex?.Dispose(); _observedDockingIndex = null; } @@ -908,7 +907,6 @@ public class InventoryMenu : MonoBehaviour _playerSettings?.Dispose(); _currentEntity?.Dispose(); _stationRefit?.Dispose(); - _observedDockingIndex?.Dispose(); _inventory?.Dispose(); _catalog = null; _playerSettings = null; diff --git a/Assets/Scripts/UI/Menu/InventoryPanel.cs b/Assets/Scripts/UI/Menu/InventoryPanel.cs index d46bb2a8d..969e1e865 100644 --- a/Assets/Scripts/UI/Menu/InventoryPanel.cs +++ b/Assets/Scripts/UI/Menu/InventoryPanel.cs @@ -91,7 +91,6 @@ public class InventoryPanel : MonoBehaviour, IPointerClickHandler { if (!ReferenceEquals(_observedEntityIndex, observedEntityIndex)) { - _observedDockingIndex?.Dispose(); _observedDockingIndex = null; } @@ -1466,7 +1465,6 @@ private void Update() _currentEntity?.Dispose(); _stationRefit?.Dispose(); _loadoutFrame?.Dispose(); - _observedDockingIndex?.Dispose(); _inventory?.Dispose(); _catalog = null; _playerSettings = null; diff --git a/Assets/Scripts/UI/Menu/LocalMenu.cs b/Assets/Scripts/UI/Menu/LocalMenu.cs index b75042640..727592d91 100644 --- a/Assets/Scripts/UI/Menu/LocalMenu.cs +++ b/Assets/Scripts/UI/Menu/LocalMenu.cs @@ -32,7 +32,6 @@ public class LocalMenu : MonoBehaviour { if (!ReferenceEquals(_observedEntityIndex, observedEntityIndex)) { - _observedDockingIndex?.Dispose(); _observedDockingIndex = null; } @@ -247,7 +246,6 @@ public class LocalMenu : MonoBehaviour AetheriaEveUnitySurfaceHost.DestroyDocument(_surfaceDocument); _surfaceDocument = null; } - _observedDockingIndex?.Dispose(); _observedDockingIndex = null; } diff --git a/Assets/Scripts/UI/Menu/MenuPanel.cs b/Assets/Scripts/UI/Menu/MenuPanel.cs index 80614d5d7..ab73779ab 100644 --- a/Assets/Scripts/UI/Menu/MenuPanel.cs +++ b/Assets/Scripts/UI/Menu/MenuPanel.cs @@ -40,7 +40,6 @@ public class MenuPanel : MonoBehaviour { if (!ReferenceEquals(_observedEntityIndex, observedEntityIndex)) { - _observedDockingIndex?.Dispose(); _observedDockingIndex = null; } @@ -107,7 +106,6 @@ public class MenuPanel : MonoBehaviour _tabSurfaceDocument = null; } - _observedDockingIndex?.Dispose(); _observedDockingIndex = null; } diff --git a/Assets/Scripts/UI/Menu/TradeMenu.cs b/Assets/Scripts/UI/Menu/TradeMenu.cs index d633d7122..170d73f52 100644 --- a/Assets/Scripts/UI/Menu/TradeMenu.cs +++ b/Assets/Scripts/UI/Menu/TradeMenu.cs @@ -58,7 +58,6 @@ public class TradeMenu : MonoBehaviour { if (!ReferenceEquals(_observedEntityIndex, observedEntityIndex)) { - _observedDockingIndex?.Dispose(); _observedDockingIndex = null; } @@ -589,7 +588,6 @@ public class TradeMenu : MonoBehaviour { _catalog?.Dispose(); _playerSettings?.Dispose(); - _observedDockingIndex?.Dispose(); _catalog = null; _playerSettings = null; _observedDockingIndex = null;