Flatten Aetheria CultMesh reactive access

This commit is contained in:
Meta Vens 2026-06-29 02:42:08 +01:00
commit 0830588cbb
26 changed files with 306 additions and 405 deletions

View file

@ -2430,10 +2430,10 @@ static void RequireDaemonRenderQueryAuthority(string root)
"var entityIndex = view.EntityIndex[i];",
"private AetheriaDaemonObserver ResolveDaemonObserver()",
"FindAnyObjectByType<AetheriaDaemonObserver>()",
".Viewports",
"ResolveObjectsViewport(viewport)",
"private AetheriaRuntimeObjectsViewportDocument ResolveObjectsViewport(AetheriaRuntimeXzRect viewport)",
".Reactive<AetheriaRuntimeObjectsViewportDocument>(viewportBounds)",
".Document<AetheriaRuntimeObjectsViewportDocument>(viewportBounds)",
".Reactive();",
"_objectsViewport?.Current",
"foreach (var entity in objects?.Objects ?? Array.Empty<AetheriaRuntimeRtsViewportObject>())",
"_observedEntitySnapshotsByDaemonIndex.TryGetValue(entityIndex, out var entity)",
@ -2452,7 +2452,7 @@ static void RequireDaemonRenderQueryAuthority(string root)
"beltPose.InstancePoses ?? Array.Empty<AetheriaRuntimeZoneRenderAsteroidInstancePose>()",
"private void RefreshDaemonContactRows()",
".State",
".Reactive<AetheriaRuntimeZoneContactsDocument>()",
".Document<AetheriaRuntimeZoneContactsDocument>().Reactive()",
"private void RefreshDaemonCompassMarkers()",
"private void RefreshDaemonVisibleEntityInstances()",
"PowerPulse(",
@ -2561,9 +2561,9 @@ static void RequireDaemonRenderQueryAuthority(string root)
"ResolveCatalog()",
"ResolveCurrentEntityHudStatus()",
"AetheriaUnityRuntimeClientProvider.ResolveClient(",
"ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>()",
"ResolveClient().State.Reactive<AetheriaRuntimePlayerSettingsDocument>()",
"ResolveClient().State.Reactive<AetheriaRuntimeCurrentEntityDocument>()",
"ResolveClient().State.Document<AetheriaRuntimeCatalogSnapshot>().Reactive()",
"ResolveClient().State.Document<AetheriaRuntimePlayerSettingsDocument>().Reactive()",
"ResolveClient().State.Document<AetheriaRuntimeCurrentEntityDocument>().Reactive()",
"return _currentEntity?.Current?.Hud ?? new AetheriaRuntimeCurrentEntityHudStatus();",
"_currentEntity?.Dispose()",
"hud.OverrideShutdown",
@ -3213,10 +3213,10 @@ static void RequireEveRuntimeBootstrap(string root)
"AetheriaUnityRuntimeClientProvider.ResolveClient(",
"CultMeshReactiveDocument<global::Aetheria.State.Documents.EveSurfaceState>",
"ResolveReactiveDaemonSurfaceState(",
"client.State.Reactive<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.Game)",
"client.State.Reactive<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.GameTui)",
"client.State.Reactive<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.Editor)",
"client.State.Reactive<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.EditorTui)",
"client.State.Document<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.Game).Reactive()",
"client.State.Document<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.GameTui).Reactive()",
"client.State.Document<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.Editor).Reactive()",
"client.State.Document<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.EditorTui).Reactive()",
"DisposeReactiveSurfaceState()",
"AetheriaRuntimeEveSurfaceAdapter.ToEveSurfaceDocument(",
"private bool ShouldMountSurface(",
@ -4244,7 +4244,7 @@ static void RequireRuntimeInputScreenUsesEveSurface(string root)
"InputDisplayLayout",
"AetheriaRuntimePlayerSettingsDocument",
"_playerSettings",
".Reactive<AetheriaRuntimePlayerSettingsDocument>()",
".Document<AetheriaRuntimePlayerSettingsDocument>().Reactive()",
"AetheriaRuntimePlayerSettingsSession",
".ObservePlayer()");
@ -4552,9 +4552,9 @@ static void RequireSectorMapZoneDetailsUseEveSurface(string root)
"ProjectZoneDetailsSurfaceState(",
"AetheriaUnityRuntimeClientProvider.ResolveClient(",
".State",
".Reactive<AetheriaRuntimeSectorMapDocument>()",
".Details",
".Reactive<AetheriaRuntimeZoneDetailsDocument>(zoneIndex)",
".Document<AetheriaRuntimeSectorMapDocument>().Reactive()",
".Document<AetheriaRuntimeZoneDetailsDocument>(zoneIndex)",
".Reactive();",
"_zoneDetails?.Current",
"AetheriaClient",
"AetheriaRuntimeZoneDetailsSurfaceCommands.TryRead(request, out var command)",
@ -4577,7 +4577,7 @@ static void RequireSectorMapZoneDetailsUseEveSurface(string root)
"SectorRenderer",
"AetheriaRuntimeSectorMapDocument",
"_sectorMap",
".Reactive<AetheriaRuntimeSectorMapDocument>()",
".Document<AetheriaRuntimeSectorMapDocument>().Reactive()",
"AetheriaRuntimeSectorMapSession",
".ObserveSectorMap()");
RequireReactiveTypedDocumentAccess(
@ -4585,7 +4585,7 @@ static void RequireSectorMapZoneDetailsUseEveSurface(string root)
"SectorRenderer",
"AetheriaRuntimeCurrentZoneDocument",
"_currentZone",
".Reactive<AetheriaRuntimeCurrentZoneDocument>()",
".Document<AetheriaRuntimeCurrentZoneDocument>().Reactive()",
"AetheriaRuntimeCurrentZoneSession",
".ObserveZone()");
RequireReactiveTypedDocumentAccess(
@ -4593,7 +4593,7 @@ static void RequireSectorMapZoneDetailsUseEveSurface(string root)
"SectorRenderer",
"AetheriaRuntimeZoneDetailsDocument",
"_zoneDetails",
".Reactive<AetheriaRuntimeZoneDetailsDocument>(zoneIndex)",
".Document<AetheriaRuntimeZoneDetailsDocument>(zoneIndex).Reactive()",
"AetheriaRuntimeZoneDetailsSession",
".ObserveZone(zoneIndex)");
RequireReactiveTypedDocumentAccess(
@ -4601,7 +4601,7 @@ static void RequireSectorMapZoneDetailsUseEveSurface(string root)
"SectorRenderer",
"AetheriaRuntimeCatalogSnapshot",
"_catalog",
"ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>()",
"ResolveClient().State.Document<AetheriaRuntimeCatalogSnapshot>().Reactive()",
"AetheriaRuntimeCatalogSession",
"ResolveClient().State.ObserveCatalog()");
RequireReactiveTypedDocumentAccess(
@ -4609,7 +4609,7 @@ static void RequireSectorMapZoneDetailsUseEveSurface(string root)
"SectorRenderer",
"AetheriaRuntimePlayerSettingsDocument",
"_playerSettings",
".Reactive<AetheriaRuntimePlayerSettingsDocument>()",
".Document<AetheriaRuntimePlayerSettingsDocument>().Reactive()",
"AetheriaRuntimePlayerSettingsSession",
".ObservePlayer()");
@ -4770,7 +4770,7 @@ static void RequireRuntimeMenuTabsUseEveSurface(string root)
"SetObservedEntityIndex(AetheriaUnityObservedEntityIndex observedEntityIndex)",
"AetheriaRuntimeCurrentDockingDocument",
"CultMeshReactiveDocument<AetheriaRuntimeCurrentDockingDocument> _currentDocking",
"_currentDocking ??= ResolveClient().State.Reactive<AetheriaRuntimeCurrentDockingDocument>()",
"_currentDocking ??= ResolveClient().State.Document<AetheriaRuntimeCurrentDockingDocument>().Reactive()",
"docking = _currentDocking.Current",
"docking.IsDocked",
"AetheriaClient",
@ -5734,10 +5734,10 @@ static void RequireTradeCargoSelectorUseEveSurface(string root)
"SetObservedEntityIndex(AetheriaUnityObservedEntityIndex observedEntityIndex)",
"AetheriaRuntimeCurrentDockingDocument",
"CultMeshReactiveDocument<AetheriaRuntimeCurrentDockingDocument> _currentDocking",
"_currentDocking ??= ResolveClient().State.Reactive<AetheriaRuntimeCurrentDockingDocument>()",
"_currentDocking ??= ResolveClient().State.Document<AetheriaRuntimeCurrentDockingDocument>().Reactive()",
"docking = _currentDocking.Current",
"CultMeshReactiveDocument<AetheriaRuntimeStationRefitDocument> _stationRefit",
"_stationRefit = ResolveClient().State.Reactive<AetheriaRuntimeStationRefitDocument>()",
"_stationRefit = ResolveClient().State.Document<AetheriaRuntimeStationRefitDocument>().Reactive()",
"return _stationRefit?.Current",
"SetTargetCargo(",
"selection.EntityKey",
@ -7037,12 +7037,12 @@ static void RequireInventoryValidationUsesManagedTypedDocuments(string root)
}
var clientState = File.ReadAllText(clientStatePath);
if (!clientState.Contains("public CultMeshReactiveDocument<TDocument> Reactive<TDocument>(", StringComparison.Ordinal) ||
!clientState.Contains("public CultMeshReactiveDocument<TDocument> Reactive<TDocument>(", StringComparison.Ordinal) ||
!clientState.Contains("public CultMeshReactiveDocument<TDocument> Reactive<TDocument>(", StringComparison.Ordinal))
if (!clientState.Contains("public CultMeshDocumentHandle<TDocument> Document<TDocument>()", StringComparison.Ordinal) ||
!clientState.Contains("public CultMeshDocumentHandle<TDocument> Document<TDocument>(int entityOrZoneIndex)", StringComparison.Ordinal) ||
clientState.Contains("public CultMeshReactiveDocument<TDocument> Reactive<TDocument>(", StringComparison.Ordinal))
{
throw new InvalidOperationException(
"AetheriaClientState must expose direct managed reactive typed access for current entity, station refit, and indexed inventory documents.");
"AetheriaClientState must expose typed document handles for current entity, station refit, and indexed inventory documents while leaving reactivity to CultMesh handles.");
}
var sources = new Dictionary<string, string>
@ -7056,16 +7056,22 @@ static void RequireInventoryValidationUsesManagedTypedDocuments(string root)
var requiredSymbols = new[]
{
"ResolveCurrentEntity()",
".Reactive<AetheriaRuntimeCurrentEntityDocument>()",
"ResolveStationRefitDocument()",
".Reactive<AetheriaRuntimeStationRefitDocument>()",
"ResolveInventory(entityIndex)",
".Reactive<AetheriaRuntimeInventoryDocument>(entityIndex)",
"_inventory?.Current"
};
var missingSymbols = requiredSymbols
.Where(symbol => !source.Contains(symbol, StringComparison.Ordinal))
.ToArray();
var requiredCompactedSymbols = new[]
{
".Document<AetheriaRuntimeCurrentEntityDocument>().Reactive()",
".Document<AetheriaRuntimeStationRefitDocument>().Reactive()",
".Document<AetheriaRuntimeInventoryDocument>(entityIndex).Reactive()"
};
missingSymbols = missingSymbols
.Concat(requiredCompactedSymbols.Where(symbol => !compact.Contains(symbol, StringComparison.Ordinal)))
.ToArray();
if (missingSymbols.Length > 0)
{
throw new InvalidOperationException(
@ -7104,7 +7110,7 @@ static void RequireInventoryValidationUsesManagedTypedDocuments(string root)
name,
"AetheriaRuntimeCurrentEntityDocument",
"_currentEntity",
".Reactive<AetheriaRuntimeCurrentEntityDocument>()",
".Document<AetheriaRuntimeCurrentEntityDocument>().Reactive()",
"AetheriaRuntimeCurrentEntitySession",
".ObserveEntity()");
RequireReactiveTypedDocumentAccess(
@ -7112,7 +7118,7 @@ static void RequireInventoryValidationUsesManagedTypedDocuments(string root)
name,
"AetheriaRuntimeStationRefitDocument",
"_stationRefit",
".Reactive<AetheriaRuntimeStationRefitDocument>()",
".Document<AetheriaRuntimeStationRefitDocument>().Reactive()",
"AetheriaRuntimeStationRefitSession",
".ObserveStationRefit()");
RequireReactiveTypedDocumentAccess(
@ -7120,7 +7126,7 @@ static void RequireInventoryValidationUsesManagedTypedDocuments(string root)
name,
"AetheriaRuntimeInventoryDocument",
"_inventory",
".Reactive<AetheriaRuntimeInventoryDocument>(entityIndex)",
".Document<AetheriaRuntimeInventoryDocument>(entityIndex).Reactive()",
"AetheriaRuntimeInventorySession",
".ObserveInventory(entityIndex)");
}
@ -7144,8 +7150,7 @@ static void RequireMenuDockingUsesManagedTypedSnapshot(string root)
{
"public CultMeshDocumentHandle<AetheriaRuntimeStationRefitDocument> StationRefit { get; }",
"public CultMeshDocumentHandle<AetheriaRuntimeCurrentDockingDocument> CurrentDockingDocument { get; }",
"public CultMeshDocumentHandle<TDocument> Document<TDocument>()",
"public CultMeshReactiveDocument<TDocument> Reactive<TDocument>("
"public CultMeshDocumentHandle<TDocument> Document<TDocument>()"
};
var missingClientSymbols = requiredClientSymbols
.Where(symbol => !clientState.Contains(symbol, StringComparison.Ordinal))
@ -7232,7 +7237,7 @@ static void RequireMenuDockingUsesManagedTypedSnapshot(string root)
var tradeMenu = File.ReadAllText(Path.Combine(root, "Assets", "Scripts", "UI", "Menu", "TradeMenu.cs"));
var directDockingOffenders = new List<string>();
if (!menuPanel.Contains("CultMeshReactiveDocument<AetheriaRuntimeCurrentDockingDocument> _currentDocking", StringComparison.Ordinal) ||
!menuPanel.Contains("_currentDocking ??= ResolveClient().State.Reactive<AetheriaRuntimeCurrentDockingDocument>()", StringComparison.Ordinal) ||
!menuPanel.Contains("_currentDocking ??= ResolveClient().State.Document<AetheriaRuntimeCurrentDockingDocument>().Reactive()", StringComparison.Ordinal) ||
!menuPanel.Contains("docking = _currentDocking.Current", StringComparison.Ordinal) ||
menuPanel.Contains("ResolveClient().State.Latest<AetheriaRuntimeCurrentDockingDocument>()", StringComparison.Ordinal))
{
@ -7240,7 +7245,7 @@ static void RequireMenuDockingUsesManagedTypedSnapshot(string root)
}
if (!tradeMenu.Contains("CultMeshReactiveDocument<AetheriaRuntimeCurrentDockingDocument> _currentDocking", StringComparison.Ordinal) ||
!tradeMenu.Contains("_currentDocking ??= ResolveClient().State.Reactive<AetheriaRuntimeCurrentDockingDocument>()", StringComparison.Ordinal) ||
!tradeMenu.Contains("_currentDocking ??= ResolveClient().State.Document<AetheriaRuntimeCurrentDockingDocument>().Reactive()", StringComparison.Ordinal) ||
!tradeMenu.Contains("docking = _currentDocking.Current", StringComparison.Ordinal) ||
tradeMenu.Contains("ResolveClient().State.Latest<AetheriaRuntimeCurrentDockingDocument>()", StringComparison.Ordinal))
{
@ -7261,7 +7266,7 @@ static bool HasManagedDockingSnapshotAccess(string source)
{
if (source.Contains("AetheriaRuntimeCurrentDockingDocument", StringComparison.Ordinal) &&
source.Contains("CultMeshReactiveDocument<AetheriaRuntimeCurrentDockingDocument> _currentDocking", StringComparison.Ordinal) &&
source.Contains("State.Reactive<AetheriaRuntimeCurrentDockingDocument>()", StringComparison.Ordinal) &&
source.Contains("State.Document<AetheriaRuntimeCurrentDockingDocument>().Reactive()", StringComparison.Ordinal) &&
source.Contains("_currentDocking.Current", StringComparison.Ordinal) &&
!source.Contains("ResolveClient().State.Latest<AetheriaRuntimeCurrentDockingDocument>()", StringComparison.Ordinal))
{
@ -7306,9 +7311,9 @@ static bool HasManagedDockingSnapshotAccess(string source)
source.Contains("CultMeshReactiveDocument<AetheriaRuntimeCurrentDockingDocument> _currentDocking", StringComparison.Ordinal) &&
source.Contains("CultMeshReactiveDocument<AetheriaRuntimeStationRefitDocument> _stationRefit", StringComparison.Ordinal) &&
source.Contains("AetheriaRuntimeObservedDockingState.TryCreateCurrent(", StringComparison.Ordinal) &&
source.Contains("state.Reactive<AetheriaRuntimeCurrentEntityDocument>()", StringComparison.Ordinal) &&
source.Contains("state.Reactive<AetheriaRuntimeCurrentDockingDocument>()", StringComparison.Ordinal) &&
source.Contains("state.Reactive<AetheriaRuntimeStationRefitDocument>()", StringComparison.Ordinal) &&
source.Contains("state.Document<AetheriaRuntimeCurrentEntityDocument>().Reactive()", StringComparison.Ordinal) &&
source.Contains("state.Document<AetheriaRuntimeCurrentDockingDocument>().Reactive()", StringComparison.Ordinal) &&
source.Contains("state.Document<AetheriaRuntimeStationRefitDocument>().Reactive()", StringComparison.Ordinal) &&
!source.Contains("State?.CurrentDocking()", StringComparison.Ordinal) &&
!source.Contains(".State.CurrentDocking()", StringComparison.Ordinal) &&
!source.Contains("state.Latest<AetheriaRuntimeCurrentEntityDocument>()", StringComparison.Ordinal) &&
@ -7333,12 +7338,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
var requiredClientSymbols = new[]
{
"public CultMeshDocumentHandle<TDocument> Document<TDocument>()",
"public Task<CultMeshReactiveDocument<TDocument>> ReactiveAsync<TDocument>(",
"public CultMeshReactiveDocument<TDocument> Reactive<TDocument>(",
"public Task<CultMeshReactiveDocument<TDocument>> ReactiveAsync<TDocument>(",
"public CultMeshReactiveDocument<TDocument> Reactive<TDocument>(",
"public CultMeshDocumentHandle<TDocument> Document<TDocument>(int entityOrZoneIndex)",
"public CultMeshReactiveDocument<TDocument> Reactive<TDocument>("
"public CultMeshDocumentHandle<TDocument> Document<TDocument>(int entityOrZoneIndex)"
};
var missingClientSymbols = requiredClientSymbols
.Where(symbol => !clientState.Contains(symbol, StringComparison.Ordinal))
@ -7346,15 +7346,18 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
if (missingClientSymbols.Length > 0)
{
throw new InvalidOperationException(
"AetheriaClientState must expose generic managed reactive access and document handles for shared Unity documents: " +
"AetheriaClientState must expose typed document handles for shared Unity documents, with reactive sync owned by CultMesh handles: " +
string.Join(", ", missingClientSymbols));
}
if (clientState.Contains("public Task<TDocument> LatestAsync<TDocument>", StringComparison.Ordinal) ||
clientState.Contains("public TDocument Latest<TDocument>", StringComparison.Ordinal))
clientState.Contains("public TDocument Latest<TDocument>", StringComparison.Ordinal) ||
clientState.Contains("public Task<CultMeshReactiveDocument<TDocument>> ReactiveAsync<TDocument>", StringComparison.Ordinal) ||
clientState.Contains("public CultMeshReactiveDocument<TDocument> Reactive<TDocument>", StringComparison.Ordinal) ||
clientState.Contains("public Observable<TDocument> Watch<TDocument>", StringComparison.Ordinal))
{
throw new InvalidOperationException(
"AetheriaClientState must not expose generic latest snapshot shortcuts; callers should hold Document<TDocument>() or Reactive<TDocument>() handles.");
"AetheriaClientState must not expose generic latest/reactive/watch shortcuts; callers should hold Document<TDocument>() handles and call CultMesh handle APIs.");
}
var unityPaths = new[]
@ -7418,7 +7421,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
{
"public abstract class ActionBarBinding : IDisposable",
"CultMeshReactiveDocument<AetheriaRuntimeCatalogSnapshot> _catalog",
"Client.State.Reactive<AetheriaRuntimeCatalogSnapshot>()",
"Client.State.Document<AetheriaRuntimeCatalogSnapshot>().Reactive()",
"_catalog?.Current?.FindItem(item, x => x.ItemKey)",
"binding?.Dispose()",
"private void OnDestroy()"
@ -7458,9 +7461,9 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"CultMeshReactiveDocument<AetheriaRuntimeCatalogSnapshot> _catalog",
"CultMeshReactiveDocument<AetheriaRuntimePlayerSettingsDocument> _playerSettings",
"CultMeshReactiveDocument<AetheriaRuntimeCurrentEntityDocument> _currentEntity",
"ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>()",
"ResolveClient().State.Reactive<AetheriaRuntimePlayerSettingsDocument>()",
"ResolveClient().State.Reactive<AetheriaRuntimeCurrentEntityDocument>()",
"ResolveClient().State.Document<AetheriaRuntimeCatalogSnapshot>().Reactive()",
"ResolveClient().State.Document<AetheriaRuntimePlayerSettingsDocument>().Reactive()",
"ResolveClient().State.Document<AetheriaRuntimeCurrentEntityDocument>().Reactive()",
"_catalog?.Dispose()",
"_playerSettings?.Dispose()",
"_currentEntity?.Dispose()",
@ -7514,7 +7517,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
var requiredVolumeCloudSymbols = new[]
{
"CultMeshReactiveDocument<AetheriaRuntimePlayerSettingsDocument> _playerSettings",
".Reactive<AetheriaRuntimePlayerSettingsDocument>()",
".Document<AetheriaRuntimePlayerSettingsDocument>().Reactive()",
"_playerSettings?.Dispose()",
"_playerSettings?.Current"
};
@ -7544,7 +7547,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
var requiredObservedTargetSymbols = new[]
{
"CultMeshReactiveDocument<AetheriaRuntimeZoneContactsDocument> _zoneContacts",
".Reactive<AetheriaRuntimeZoneContactsDocument>()",
".Document<AetheriaRuntimeZoneContactsDocument>().Reactive()",
"_zoneContacts?.Dispose()",
"_zoneContacts?.Current"
};
@ -7576,8 +7579,6 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
{
"CultMeshReactiveDocument<AetheriaRuntimeObjectsViewportDocument> _objectsViewport",
"CultMeshReactiveDocument<AetheriaRuntimeRenderSplatsViewportDocument> _renderSplatsViewport",
".Reactive<AetheriaRuntimeObjectsViewportDocument>(viewport)",
".Reactive<AetheriaRuntimeRenderSplatsViewportDocument>(viewport)",
"ClearViewportCaches()",
"_objectsViewport?.Dispose()",
"_renderSplatsViewport?.Dispose()",
@ -7588,6 +7589,14 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
var missingMapRendererSharedDocumentSymbols = requiredMapRendererSharedDocumentSymbols
.Where(symbol => !mapRenderer.Contains(symbol, StringComparison.Ordinal))
.ToArray();
var compactMapRenderer = CompactSource(mapRenderer);
missingMapRendererSharedDocumentSymbols = missingMapRendererSharedDocumentSymbols
.Concat(new[]
{
".Document<AetheriaRuntimeObjectsViewportDocument>(viewport).Reactive()",
".Document<AetheriaRuntimeRenderSplatsViewportDocument>(viewport).Reactive()"
}.Where(symbol => !compactMapRenderer.Contains(symbol, StringComparison.Ordinal)))
.ToArray();
if (missingMapRendererSharedDocumentSymbols.Length > 0)
{
throw new InvalidOperationException(
@ -7600,7 +7609,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"MapRenderer",
"AetheriaRuntimeObjectsViewportDocument",
"_objectsViewport",
".Reactive<AetheriaRuntimeObjectsViewportDocument>(viewport)",
".Document<AetheriaRuntimeObjectsViewportDocument>(viewport).Reactive()",
"AetheriaRuntimeObjectsViewportSession",
".ObserveObjects(viewport)");
RequireReactiveTypedDocumentAccess(
@ -7608,7 +7617,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"MapRenderer",
"AetheriaRuntimeRenderSplatsViewportDocument",
"_renderSplatsViewport",
".Reactive<AetheriaRuntimeRenderSplatsViewportDocument>(viewport)",
".Document<AetheriaRuntimeRenderSplatsViewportDocument>(viewport).Reactive()",
"AetheriaRuntimeRenderSplatsViewportSession",
".ObserveRenderSplats(viewport)");
RequireReactiveTypedDocumentAccess(
@ -7616,7 +7625,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"MapRenderer",
"AetheriaRuntimePlayerSettingsDocument",
"_playerSettings",
".Reactive<AetheriaRuntimePlayerSettingsDocument>()",
".Document<AetheriaRuntimePlayerSettingsDocument>().Reactive()",
"AetheriaRuntimePlayerSettingsSession",
".ObservePlayer()");
@ -7668,7 +7677,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"MainMenu",
"AetheriaRuntimeSectorMapDocument",
"_sectorMap",
".Reactive<AetheriaRuntimeSectorMapDocument>()",
".Document<AetheriaRuntimeSectorMapDocument>().Reactive()",
"AetheriaRuntimeSectorMapSession",
".ObserveSectorMap()");
RequireReactiveTypedDocumentAccess(
@ -7676,7 +7685,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"MainMenu",
"AetheriaRuntimePlayerSettingsDocument",
"_playerSettings",
".Reactive<AetheriaRuntimePlayerSettingsDocument>()",
".Document<AetheriaRuntimePlayerSettingsDocument>().Reactive()",
"AetheriaRuntimePlayerSettingsSession",
".ObservePlayer()");
RequireReactiveTypedDocumentAccess(
@ -7684,7 +7693,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"MainMenu",
"AetheriaRuntimeVerseHostSettingsDocument",
"_verseHostSettings",
".Reactive<AetheriaRuntimeVerseHostSettingsDocument>()",
".Document<AetheriaRuntimeVerseHostSettingsDocument>().Reactive()",
"AetheriaRuntimeVerseHostSettingsSession",
".ObserveVerseHost()");
@ -7711,7 +7720,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"TradeMenu",
"AetheriaRuntimeCatalogSnapshot",
"_catalog",
"ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>()",
"ResolveClient().State.Document<AetheriaRuntimeCatalogSnapshot>().Reactive()",
"AetheriaRuntimeCatalogSession",
"ResolveClient().State.ObserveCatalog()");
RequireReactiveTypedDocumentAccess(
@ -7719,7 +7728,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"TradeMenu",
"AetheriaRuntimePlayerSettingsDocument",
"_playerSettings",
".Reactive<AetheriaRuntimePlayerSettingsDocument>()",
".Document<AetheriaRuntimePlayerSettingsDocument>().Reactive()",
"AetheriaRuntimePlayerSettingsSession",
".ObservePlayer()");
@ -7746,7 +7755,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"InventoryMenu",
"AetheriaRuntimeCatalogSnapshot",
"_catalog",
"ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>()",
"ResolveClient().State.Document<AetheriaRuntimeCatalogSnapshot>().Reactive()",
"AetheriaRuntimeCatalogSession",
"ResolveClient().State.ObserveCatalog()");
RequireReactiveTypedDocumentAccess(
@ -7754,7 +7763,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"InventoryMenu",
"AetheriaRuntimePlayerSettingsDocument",
"_playerSettings",
".Reactive<AetheriaRuntimePlayerSettingsDocument>()",
".Document<AetheriaRuntimePlayerSettingsDocument>().Reactive()",
"AetheriaRuntimePlayerSettingsSession",
".ObservePlayer()");
@ -7784,7 +7793,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"InventoryPanel",
"AetheriaRuntimeCatalogSnapshot",
"_catalog",
"ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>()",
"ResolveClient().State.Document<AetheriaRuntimeCatalogSnapshot>().Reactive()",
"AetheriaRuntimeCatalogSession",
"ResolveClient().State.ObserveCatalog()");
RequireReactiveTypedDocumentAccess(
@ -7792,7 +7801,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"InventoryPanel",
"AetheriaRuntimePlayerSettingsDocument",
"_playerSettings",
".Reactive<AetheriaRuntimePlayerSettingsDocument>()",
".Document<AetheriaRuntimePlayerSettingsDocument>().Reactive()",
"AetheriaRuntimePlayerSettingsSession",
".ObservePlayer()");
@ -7808,10 +7817,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"CultMeshReactiveDocument<AetheriaRuntimeSectorMapDocument> _sectorMap",
"CultMeshReactiveDocument<AetheriaRuntimeCurrentZoneDocument> _currentZone",
"CultMeshReactiveDocument<AetheriaRuntimeZoneDetailsDocument> _zoneDetails",
".Reactive<AetheriaRuntimeSectorMapDocument>()",
".Current",
".Reactive<AetheriaRuntimeCurrentZoneDocument>()",
".Reactive<AetheriaRuntimeZoneDetailsDocument>(zoneIndex)",
"_sectorMap?.Dispose()",
"_currentZone?.Dispose()",
"_zoneDetails?.Dispose()",
@ -7820,6 +7826,15 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
var missingSectorRendererSharedDocumentSymbols = requiredSectorRendererSharedDocumentSymbols
.Where(symbol => !sectorRenderer.Contains(symbol, StringComparison.Ordinal))
.ToArray();
var compactSectorRenderer = CompactSource(sectorRenderer);
missingSectorRendererSharedDocumentSymbols = missingSectorRendererSharedDocumentSymbols
.Concat(new[]
{
".Document<AetheriaRuntimeSectorMapDocument>().Reactive()",
".Document<AetheriaRuntimeCurrentZoneDocument>().Reactive()",
".Document<AetheriaRuntimeZoneDetailsDocument>(zoneIndex).Reactive()"
}.Where(symbol => !compactSectorRenderer.Contains(symbol, StringComparison.Ordinal)))
.ToArray();
if (missingSectorRendererSharedDocumentSymbols.Length > 0)
{
throw new InvalidOperationException(
@ -7832,7 +7847,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"SectorRenderer",
"AetheriaRuntimeSectorMapDocument",
"_sectorMap",
".Reactive<AetheriaRuntimeSectorMapDocument>()",
".Document<AetheriaRuntimeSectorMapDocument>().Reactive()",
"AetheriaRuntimeSectorMapSession",
".ObserveSectorMap()");
RequireReactiveTypedDocumentAccess(
@ -7840,7 +7855,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"SectorRenderer",
"AetheriaRuntimeCurrentZoneDocument",
"_currentZone",
".Reactive<AetheriaRuntimeCurrentZoneDocument>()",
".Document<AetheriaRuntimeCurrentZoneDocument>().Reactive()",
"AetheriaRuntimeCurrentZoneSession",
".ObserveZone()");
RequireReactiveTypedDocumentAccess(
@ -7848,7 +7863,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"SectorRenderer",
"AetheriaRuntimeZoneDetailsDocument",
"_zoneDetails",
".Reactive<AetheriaRuntimeZoneDetailsDocument>(zoneIndex)",
".Document<AetheriaRuntimeZoneDetailsDocument>(zoneIndex).Reactive()",
"AetheriaRuntimeZoneDetailsSession",
".ObserveZone(zoneIndex)");
RequireReactiveTypedDocumentAccess(
@ -7856,7 +7871,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"SectorRenderer",
"AetheriaRuntimeCatalogSnapshot",
"_catalog",
"ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>()",
"ResolveClient().State.Document<AetheriaRuntimeCatalogSnapshot>().Reactive()",
"AetheriaRuntimeCatalogSession",
"ResolveClient().State.ObserveCatalog()");
RequireReactiveTypedDocumentAccess(
@ -7864,7 +7879,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"SectorRenderer",
"AetheriaRuntimePlayerSettingsDocument",
"_playerSettings",
".Reactive<AetheriaRuntimePlayerSettingsDocument>()",
".Document<AetheriaRuntimePlayerSettingsDocument>().Reactive()",
"AetheriaRuntimePlayerSettingsSession",
".ObservePlayer()");
@ -7895,7 +7910,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
var requiredZoneRendererSharedDocumentSymbols = new[]
{
"CultMeshReactiveDocument<AetheriaRuntimeZoneContactsDocument> _zoneContacts",
"ResolveClient().State.Reactive<AetheriaRuntimeZoneContactsDocument>()",
"ResolveClient().State.Document<AetheriaRuntimeZoneContactsDocument>().Reactive()",
"_zoneContacts?.Dispose()",
"_zoneContacts?.Current",
"private void OnDestroy()"
@ -7915,7 +7930,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"ZoneRenderer",
"AetheriaRuntimeZoneContactsDocument",
"_zoneContacts",
"ResolveClient().State.Reactive<AetheriaRuntimeZoneContactsDocument>()",
"ResolveClient().State.Document<AetheriaRuntimeZoneContactsDocument>().Reactive()",
"AetheriaRuntimeZoneContactsSession",
"ResolveClient().State.ObserveZoneContacts()");
RequireReactiveTypedDocumentAccess(
@ -7923,7 +7938,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"ZoneRenderer",
"AetheriaRuntimeCatalogSnapshot",
"_catalog",
"ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>()",
"ResolveClient().State.Document<AetheriaRuntimeCatalogSnapshot>().Reactive()",
"AetheriaRuntimeCatalogSession",
"ResolveClient().State.ObserveCatalog()");
@ -7960,11 +7975,8 @@ static void RequireUnityViewportAndMapReadsUseManagedAccessors(string root)
var requiredClientSymbols = new[]
{
"public CultMeshDocumentHandle<TDocument> Document<TDocument>()",
"public CultMeshReactiveDocument<TDocument> Reactive<TDocument>(",
"public CultMeshDocumentHandle<TDocument> Document<TDocument>(AetheriaRuntimeRtsViewportBounds viewport)",
"public CultMeshReactiveDocument<TDocument> Reactive<TDocument>(",
"public CultMeshDocumentHandle<TDocument> Document<TDocument>(int entityOrZoneIndex)",
"public CultMeshReactiveDocument<TDocument> Reactive<TDocument>("
"public CultMeshDocumentHandle<TDocument> Document<TDocument>(int entityOrZoneIndex)"
};
var missingClientSymbols = requiredClientSymbols
.Where(symbol => !clientState.Contains(symbol, StringComparison.Ordinal))
@ -7972,7 +7984,7 @@ static void RequireUnityViewportAndMapReadsUseManagedAccessors(string root)
if (missingClientSymbols.Length > 0)
{
throw new InvalidOperationException(
"AetheriaClientState must expose generic managed parameterized access for map, viewport, contacts, and current-entity documents: " +
"AetheriaClientState must expose generic parameterized document handles for map, viewport, contacts, and current-entity documents: " +
string.Join(", ", missingClientSymbols));
}
@ -8033,13 +8045,20 @@ static void RequireUnityViewportAndMapReadsUseManagedAccessors(string root)
var requiredRenderSplatViewportSourceSymbols = new[]
{
"CultMeshReactiveDocument<AetheriaRuntimeRenderSplatsViewportDocument> _renderSplatsViewport",
".Reactive<AetheriaRuntimeRenderSplatsViewportDocument>(viewport)",
"_renderSplatsViewport?.Current",
"ClearViewportDocument()"
};
var missingRenderSplatViewportSourceSymbols = requiredRenderSplatViewportSourceSymbols
.Where(symbol => !renderSplatViewportSource.Contains(symbol, StringComparison.Ordinal))
.ToArray();
if (!CompactSource(renderSplatViewportSource).Contains(
".Document<AetheriaRuntimeRenderSplatsViewportDocument>(viewport).Reactive()",
StringComparison.Ordinal))
{
missingRenderSplatViewportSourceSymbols = missingRenderSplatViewportSourceSymbols
.Concat(new[] { ".Document<AetheriaRuntimeRenderSplatsViewportDocument>(viewport).Reactive()" })
.ToArray();
}
if (missingRenderSplatViewportSourceSymbols.Length > 0 ||
renderSplatViewportSource.Contains(".LatestRenderSplats(", StringComparison.Ordinal))
{
@ -8060,7 +8079,7 @@ static void RequireUnityViewportAndMapReadsUseManagedAccessors(string root)
"AetheriaUnityRenderSplatViewportSource",
"AetheriaRuntimeRenderSplatsViewportDocument",
"_renderSplatsViewport",
".Reactive<AetheriaRuntimeRenderSplatsViewportDocument>(viewport)",
".Document<AetheriaRuntimeRenderSplatsViewportDocument>(viewport).Reactive()",
"AetheriaRuntimeRenderSplatsViewportSession",
".ObserveRenderSplats(viewport)");
@ -8073,13 +8092,20 @@ static void RequireUnityViewportAndMapReadsUseManagedAccessors(string root)
var requiredZoneRendererViewportSymbols = new[]
{
"CultMeshReactiveDocument<AetheriaRuntimeObjectsViewportDocument> _objectsViewport",
".Reactive<AetheriaRuntimeObjectsViewportDocument>(viewportBounds)",
"_objectsViewport?.Current",
"_objectsViewport?.Dispose()"
};
var missingZoneRendererViewportSymbols = requiredZoneRendererViewportSymbols
.Where(symbol => !zoneRenderer.Contains(symbol, StringComparison.Ordinal))
.ToArray();
if (!CompactSource(zoneRenderer).Contains(
".Document<AetheriaRuntimeObjectsViewportDocument>(viewportBounds).Reactive()",
StringComparison.Ordinal))
{
missingZoneRendererViewportSymbols = missingZoneRendererViewportSymbols
.Concat(new[] { ".Document<AetheriaRuntimeObjectsViewportDocument>(viewportBounds).Reactive()" })
.ToArray();
}
if (missingZoneRendererViewportSymbols.Length > 0 ||
zoneRenderer.Contains(".LatestObjects(", StringComparison.Ordinal))
{
@ -8100,7 +8126,7 @@ static void RequireUnityViewportAndMapReadsUseManagedAccessors(string root)
"ZoneRenderer",
"AetheriaRuntimeObjectsViewportDocument",
"_objectsViewport",
".Reactive<AetheriaRuntimeObjectsViewportDocument>(viewportBounds)",
".Document<AetheriaRuntimeObjectsViewportDocument>(viewportBounds).Reactive()",
"AetheriaRuntimeObjectsViewportSession",
".ObserveObjects(viewportBounds)");
@ -8164,18 +8190,11 @@ static void RequireAetheriaManagedStateAccessorsCoverDomainDocuments(string root
var requiredClientSymbols = new[]
{
"public CultMeshDocumentHandle<TDocument> Document<TDocument>()",
"public CultMeshReactiveDocument<TDocument> Reactive<TDocument>(",
"public CultMeshReactiveDocument<TDocument> Reactive<TDocument>(",
"public CultMeshReactiveDocument<TDocument> Reactive<TDocument>(",
"public CultMeshReactiveDocument<TDocument> Reactive<TDocument>(",
"public enum AetheriaClientEveSurface",
"public CultMeshDocumentHandle<TDocument> Document<TDocument>(AetheriaClientEveSurface surface)",
"public CultMeshReactiveDocument<TDocument> Reactive<TDocument>(",
"public CultMeshDocumentHandle<TDocument> Document<TDocument>(AetheriaRuntimeRtsViewportBounds viewport)",
"public CultMeshDocumentHandle<TDocument> Document<TDocument>(int entityOrZoneIndex)",
"public CultMeshDocumentHandle<TDocument> Document<TDocument>(string seatId)",
"public Task<CultMeshReactiveDocument<TDocument>> ReactiveAsync<TDocument>(",
"public CultMeshReactiveDocument<TDocument> Reactive<TDocument>("
"public CultMeshDocumentHandle<TDocument> Document<TDocument>(string seatId)"
};
var missingClientSymbols = requiredClientSymbols
.Where(symbol => !clientState.Contains(symbol, StringComparison.Ordinal))
@ -8183,15 +8202,18 @@ static void RequireAetheriaManagedStateAccessorsCoverDomainDocuments(string root
if (missingClientSymbols.Length > 0)
{
throw new InvalidOperationException(
"AetheriaClientState must expose managed document handles and reactive accessors for remaining domain documents: " +
"AetheriaClientState must expose managed document handles for remaining domain documents: " +
string.Join(", ", missingClientSymbols));
}
if (clientState.Contains("public Task<TDocument> LatestAsync<TDocument>", StringComparison.Ordinal) ||
clientState.Contains("public TDocument Latest<TDocument>", StringComparison.Ordinal))
clientState.Contains("public TDocument Latest<TDocument>", StringComparison.Ordinal) ||
clientState.Contains("public Task<CultMeshReactiveDocument<TDocument>> ReactiveAsync<TDocument>", StringComparison.Ordinal) ||
clientState.Contains("public CultMeshReactiveDocument<TDocument> Reactive<TDocument>", StringComparison.Ordinal) ||
clientState.Contains("public Observable<TDocument> Watch<TDocument>", StringComparison.Ordinal))
{
throw new InvalidOperationException(
"AetheriaClientState must not reintroduce generic latest snapshot shortcuts; callers should sample explicit document or reactive handles.");
"AetheriaClientState must not reintroduce generic latest/reactive/watch shortcuts; callers should sample explicit document handles or CultMesh reactive documents.");
}
var forbiddenFixedReactiveWrappers = new[]
@ -8298,7 +8320,7 @@ static void RequireAetheriaManagedStateAccessorsCoverDomainDocuments(string root
if (survivingFixedReactiveWrappers.Length > 0)
{
throw new InvalidOperationException(
"AetheriaClientState must not reintroduce named fixed-document reactive wrappers; use Reactive<TDocument>() for managed typed document access: " +
"AetheriaClientState must not reintroduce named fixed-document reactive wrappers; use Document<TDocument>() handles and CultMesh handle reactivity: " +
string.Join(", ", survivingFixedReactiveWrappers));
}
@ -8409,9 +8431,7 @@ static void RequireAetheriaManagedStateAccessorsCoverDomainDocuments(string root
var compactClientState = CompactSource(clientState);
var requiredStarbridgeParameterizedSymbols = new[]
{
"publicCultMeshDocumentHandle<TDocument>Document<TDocument>(stringseatId)",
"publicTask<CultMeshReactiveDocument<TDocument>>ReactiveAsync<TDocument>(stringseatId,",
"publicCultMeshReactiveDocument<TDocument>Reactive<TDocument>(stringseatId,"
"publicCultMeshDocumentHandle<TDocument>Document<TDocument>(stringseatId)"
};
var missingStarbridgeParameterizedSymbols = requiredStarbridgeParameterizedSymbols
.Where(symbol => !compactClientState.Contains(symbol, StringComparison.Ordinal))
@ -8573,7 +8593,7 @@ static void RequireAetheriaManagedStateAccessorsCoverDomainDocuments(string root
}
if (!checkedSources["StarbridgePlayerSeatDocumentTests.cs"].Contains(
".Reactive<AetheriaRuntimeStarbridgePlayerSeatDocument>(seat.SeatId)",
".Document<AetheriaRuntimeStarbridgePlayerSeatDocument>(seat.SeatId).Reactive()",
StringComparison.Ordinal) ||
!checkedSources["StarbridgePlayerSeatDocumentTests.cs"].Contains(
".Document<AetheriaRuntimeStarbridgePlayerSeatDocument>(seat.SeatId)",
@ -9137,9 +9157,9 @@ static void RequireClientTargetBootAuthority(string root)
"stateBoot.StateFileExists",
"AetheriaUnityRuntimeClientProvider.ResolveClient(stateBoot.StateFilePath, stateBoot.RuntimeId)",
".State",
".Reactive<AetheriaRuntimeCatalogSnapshot>()",
".Document<AetheriaRuntimeCatalogSnapshot>().Reactive()",
"runtimeCatalogDocument.Current",
".Reactive<AetheriaRuntimeSectorMapDocument>()",
".Document<AetheriaRuntimeSectorMapDocument>().Reactive()",
"sectorMapDocument.Current",
"new ItemManager(",
"new AetheriaUnityLoadoutItemFactory(itemManager, runtimeCatalog)",
@ -9197,7 +9217,7 @@ static void RequireClientTargetBootAuthority(string root)
"ResolveSectorMap(AetheriaRuntimeStateBootReport stateBoot)",
"AetheriaClient",
".State",
".Reactive<AetheriaRuntimeSectorMapDocument>()",
".Document<AetheriaRuntimeSectorMapDocument>().Reactive()",
"ResolveVerseHostSettings(AetheriaRuntimeStateBootReport stateBoot)",
"AetheriaState.At(AetheriaUnityRuntimePaths.GameDataDirectory)",
".ClientTarget",
@ -11804,11 +11824,11 @@ static void RequireAetheriaRuntimeVerseClientContract(string root)
"AetheriaRuntimeLoadoutTemplatesDocument",
"ProjectStarbridgeSummaryAsync",
"CultMeshReactiveDocument<AetheriaRuntimeDaemonFrameDocument>? managedDaemonFrame = null;",
"managedDaemonFrame = state.Reactive<AetheriaRuntimeDaemonFrameDocument>();",
"managedCatalog = state.Reactive<AetheriaRuntimeCatalogSnapshot>();",
"managedLoadoutTemplates = state.Reactive<AetheriaRuntimeLoadoutTemplatesDocument>();",
"managedStarbridgeScenario = state.Reactive<AetheriaRuntimeStarbridgeScenarioDocument>();",
"managedStarbridgeSession = state.Reactive<AetheriaRuntimeStarbridgeSessionDocument>();",
"managedDaemonFrame = state.Document<AetheriaRuntimeDaemonFrameDocument>().Reactive();",
"managedCatalog = state.Document<AetheriaRuntimeCatalogSnapshot>().Reactive();",
"managedLoadoutTemplates = state.Document<AetheriaRuntimeLoadoutTemplatesDocument>().Reactive();",
"managedStarbridgeScenario = state.Document<AetheriaRuntimeStarbridgeScenarioDocument>().Reactive();",
"managedStarbridgeSession = state.Document<AetheriaRuntimeStarbridgeSessionDocument>().Reactive();",
"AetheriaRuntimeDaemonFrameDocument RequireManagedFrame()",
"RequireManagedFrame()",
"RequireManagedCatalog()",
@ -11973,10 +11993,10 @@ static void RequireAetheriaRuntimeVerseClientContract(string root)
"CultMeshReactiveDocument<AetheriaRuntimeDaemonHealthDocument>? _eveStateRefHealth",
"CultMeshReactiveDocument<AetheriaRuntimeDaemonCommandBoundaryDocument>? _eveStateRefCommandBoundary",
"CultMeshReactiveDocument<AetheriaRuntimeCatalogSnapshot>? _eveStateRefCatalog",
"_eveStateRefFrame ??= Reactive<AetheriaRuntimeDaemonFrameDocument>()",
"_eveStateRefHealth ??= Reactive<AetheriaRuntimeDaemonHealthDocument>()",
"_eveStateRefCommandBoundary ??= Reactive<AetheriaRuntimeDaemonCommandBoundaryDocument>()",
"_eveStateRefCatalog ??= Reactive<AetheriaRuntimeCatalogSnapshot>()",
"_eveStateRefFrame ??= Document<AetheriaRuntimeDaemonFrameDocument>().Reactive()",
"_eveStateRefHealth ??= Document<AetheriaRuntimeDaemonHealthDocument>().Reactive()",
"_eveStateRefCommandBoundary ??= Document<AetheriaRuntimeDaemonCommandBoundaryDocument>().Reactive()",
"_eveStateRefCatalog ??= Document<AetheriaRuntimeCatalogSnapshot>().Reactive()",
"() => _eveStateRefFrame.Current",
"() => _eveStateRefHealth.Current",
"() => _eveStateRefCommandBoundary.Current",
@ -12750,7 +12770,7 @@ static void RequireMainMenuVerseHostProjection(string root)
var requiredMainMenuSymbols = new[]
{
"ResolveVerseHostSettings(AetheriaRuntimeStateBootReport stateBoot)",
".Reactive<AetheriaRuntimeVerseHostSettingsDocument>()",
".Document<AetheriaRuntimeVerseHostSettingsDocument>().Reactive()",
"AetheriaRuntimeMainMenuSurfaceBuilder.ProjectRoot(",
"AetheriaRuntimeMainMenuSurfaceBuilder.BuildRoot("
};
@ -12883,7 +12903,7 @@ static void RequireMainMenuContinueRunState(string root)
"ResolveSectorMap",
"AetheriaClient",
".State",
".Reactive<AetheriaRuntimeSectorMapDocument>()",
".Document<AetheriaRuntimeSectorMapDocument>().Reactive()",
"ContinueGame()",
"SceneManager.LoadScene(\"ARPG\")"
};
@ -13218,7 +13238,7 @@ static void RequireMainMenuContinueRunState(string root)
"AetheriaRuntimeZoneContactRow",
"AetheriaRuntimeZoneTargetRow",
".State",
".Reactive<AetheriaRuntimeZoneContactsDocument>()",
".Document<AetheriaRuntimeZoneContactsDocument>().Reactive()",
"_zoneContacts?.Current",
"_zoneContacts?.Dispose()",
"_entityIndex.TryResolveEntityByDaemonIndex(targetEntityIndex, out var targetEntity)"
@ -13268,9 +13288,9 @@ static void RequireMainMenuContinueRunState(string root)
"CultMeshReactiveDocument<AetheriaRuntimeCurrentDockingDocument> _currentDocking",
"CultMeshReactiveDocument<AetheriaRuntimeStationRefitDocument> _stationRefit",
"AetheriaRuntimeObservedDockingState.TryCreateCurrent(",
"state.Reactive<AetheriaRuntimeCurrentEntityDocument>()",
"state.Reactive<AetheriaRuntimeCurrentDockingDocument>()",
"state.Reactive<AetheriaRuntimeStationRefitDocument>()",
"state.Document<AetheriaRuntimeCurrentEntityDocument>().Reactive()",
"state.Document<AetheriaRuntimeCurrentDockingDocument>().Reactive()",
"state.Document<AetheriaRuntimeStationRefitDocument>().Reactive()",
"public bool IsEntityUndocked(Entity entity)",
"public bool TryResolveDockingBay(",
"out AetheriaRuntimeCurrentDockingDocument docking",
@ -14240,7 +14260,7 @@ static void RequireUnityObserverDoesNotTickLocalSimulation(string root)
"AetheriaRuntimeZoneContactRow",
"AetheriaRuntimeZoneTargetRow",
".State",
".Reactive<AetheriaRuntimeZoneContactsDocument>()",
".Document<AetheriaRuntimeZoneContactsDocument>().Reactive()",
"_zoneContacts?.Current",
"_zoneContacts?.Dispose()",
"_entityIndex.TryResolveEntityByDaemonIndex(targetEntityIndex, out var targetEntity)"
@ -14375,22 +14395,21 @@ static void RequireUnityObserverDoesNotTickLocalSimulation(string root)
"Map and sector UI must read current-zone identity from the daemon-observed run, not Unity's mirrored Zone hierarchy.");
}
var compactMapRenderer = CompactSource(mapRenderer);
var compactSectorRenderer = CompactSource(sectorRenderer);
var compactSectorMap = CompactSource(sectorMap);
if (!mapRenderer.Contains("AetheriaUnityRuntimeClientProvider.ResolveClient(", StringComparison.Ordinal) ||
!mapRenderer.Contains(".Viewports", StringComparison.Ordinal) ||
!mapRenderer.Contains(".Reactive<AetheriaRuntimeObjectsViewportDocument>(viewport)", StringComparison.Ordinal) ||
!mapRenderer.Contains(".Reactive<AetheriaRuntimeRenderSplatsViewportDocument>(viewport)", StringComparison.Ordinal) ||
!mapRenderer.Contains(".Reactive<AetheriaRuntimePlayerSettingsDocument>()", StringComparison.Ordinal) ||
!compactMapRenderer.Contains(".State.Document<AetheriaRuntimeObjectsViewportDocument>(viewport).Reactive()", StringComparison.Ordinal) ||
!compactMapRenderer.Contains(".State.Document<AetheriaRuntimeRenderSplatsViewportDocument>(viewport).Reactive()", StringComparison.Ordinal) ||
!compactMapRenderer.Contains(".State.Document<AetheriaRuntimePlayerSettingsDocument>().Reactive()", StringComparison.Ordinal) ||
!sectorRenderer.Contains("AetheriaUnityRuntimeClientProvider.ResolveClient(", StringComparison.Ordinal) ||
!sectorRenderer.Contains(".State", StringComparison.Ordinal) ||
!sectorRenderer.Contains(".Reactive<AetheriaRuntimeSectorMapDocument>()", StringComparison.Ordinal) ||
!sectorRenderer.Contains(".Details", StringComparison.Ordinal) ||
!sectorRenderer.Contains(".Reactive<AetheriaRuntimeZoneDetailsDocument>(zoneIndex)", StringComparison.Ordinal) ||
!compactSectorRenderer.Contains(".State.Document<AetheriaRuntimeSectorMapDocument>().Reactive()", StringComparison.Ordinal) ||
!compactSectorRenderer.Contains(".State.Document<AetheriaRuntimeZoneDetailsDocument>(zoneIndex).Reactive()", StringComparison.Ordinal) ||
!sectorRenderer.Contains(".Current", StringComparison.Ordinal) ||
!sectorRenderer.Contains("ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>()", StringComparison.Ordinal) ||
!sectorRenderer.Contains(".Reactive<AetheriaRuntimePlayerSettingsDocument>()", StringComparison.Ordinal) ||
!compactSectorRenderer.Contains("ResolveClient().State.Document<AetheriaRuntimeCatalogSnapshot>().Reactive()", StringComparison.Ordinal) ||
!compactSectorRenderer.Contains(".State.Document<AetheriaRuntimePlayerSettingsDocument>().Reactive()", StringComparison.Ordinal) ||
!sectorMap.Contains("AetheriaUnityRuntimeClientProvider.ResolveClient(", StringComparison.Ordinal) ||
!sectorMap.Contains(".State", StringComparison.Ordinal) ||
!sectorMap.Contains(".Reactive<AetheriaRuntimeSectorMapDocument>()", StringComparison.Ordinal) ||
!compactSectorMap.Contains(".State.Document<AetheriaRuntimeSectorMapDocument>().Reactive()", StringComparison.Ordinal) ||
!sectorRenderer.Contains("AetheriaRuntimeZoneDetailsSurfaceBuilder.ProjectDaemonZone(", StringComparison.Ordinal))
{
throw new InvalidOperationException(
@ -14409,7 +14428,7 @@ static void RequireUnityObserverDoesNotTickLocalSimulation(string root)
"SectorMap",
"AetheriaRuntimeSectorMapDocument",
"_sectorMapDocument",
".Reactive<AetheriaRuntimeSectorMapDocument>()",
".Document<AetheriaRuntimeSectorMapDocument>().Reactive()",
"AetheriaRuntimeSectorMapSession",
".ObserveSectorMap()");
@ -15047,7 +15066,7 @@ static void RequireUnityObserverDoesNotTickLocalSimulation(string root)
"TryStartDaemonObservedGame",
"ResolveSectorMap(stateBoot)",
".State",
".Reactive<AetheriaRuntimeSectorMapDocument>()",
".Document<AetheriaRuntimeSectorMapDocument>().Reactive()",
"sectorMap.FrameId",
"SceneManager.LoadScene(\"ARPG\")"
};
@ -15937,9 +15956,9 @@ static void RequireRuntimeStateReaderOwnsUnityStateAcquisition(string root)
"AetheriaRuntimeStateBoot.Inspect(AetheriaUnityRuntimePaths.GameDataDirectory)",
"AetheriaUnityRuntimeClientProvider.ResolveClient(stateBoot.StateFilePath, stateBoot.RuntimeId)",
".State",
".Reactive<AetheriaRuntimeCatalogSnapshot>()",
".Document<AetheriaRuntimeCatalogSnapshot>().Reactive()",
"runtimeCatalogDocument.Current",
".Reactive<AetheriaRuntimeSectorMapDocument>()",
".Document<AetheriaRuntimeSectorMapDocument>().Reactive()",
"sectorMapDocument.Current",
"new ItemManager(",
"new AetheriaUnityLoadoutItemFactory(itemManager, runtimeCatalog)",
@ -15982,7 +16001,7 @@ static void RequireRuntimeStateReaderOwnsUnityStateAcquisition(string root)
"RuntimeClients[cacheKey] = runtimeClient",
"AetheriaClient",
".State",
".Reactive<AetheriaRuntimePlayerSettingsDocument>()",
".Document<AetheriaRuntimePlayerSettingsDocument>().Reactive()",
"_playerSettingsDocument.Current",
"_playerSettingsDocument?.Dispose()",
"OpenAsync(",
@ -16140,9 +16159,10 @@ static void RequireRuntimeStateReaderOwnsUnityStateAcquisition(string root)
{
"public CultMeshDocumentHandle<TDocument> Document<TDocument>()",
"public ICultMeshDocumentHandle DocumentBySchema(string schemaVersion)",
"public Observable<TDocument> Watch<TDocument>()",
"public Task<CultMeshReactiveDocument<TDocument>> ReactiveAsync<TDocument>(",
"public CultMeshReactiveDocument<TDocument> Reactive<TDocument>("
"public CultMeshDocumentHandle<TDocument> Document<TDocument>(AetheriaClientEveSurface surface)",
"public CultMeshDocumentHandle<TDocument> Document<TDocument>(AetheriaRuntimeRtsViewportBounds viewport)",
"public CultMeshDocumentHandle<TDocument> Document<TDocument>(int entityOrZoneIndex)",
"public CultMeshDocumentHandle<TDocument> Document<TDocument>(string seatId)"
};
var missingManagedStateAccessSymbols = requiredManagedStateAccessSymbols
.Where(symbol => !aetheriaClientState.Contains(symbol, StringComparison.Ordinal))
@ -16150,15 +16170,18 @@ static void RequireRuntimeStateReaderOwnsUnityStateAcquisition(string root)
if (missingManagedStateAccessSymbols.Length > 0)
{
throw new InvalidOperationException(
"AetheriaClientState must expose direct managed typed document access instead of AetheriaClient forwarding shortcuts or per-document session wrappers: " +
"AetheriaClientState must expose direct typed document handles instead of AetheriaClient forwarding shortcuts or per-document session wrappers: " +
string.Join(", ", missingManagedStateAccessSymbols));
}
if (aetheriaClientState.Contains("public Task<TDocument> LatestAsync<TDocument>", StringComparison.Ordinal) ||
aetheriaClientState.Contains("public TDocument Latest<TDocument>", StringComparison.Ordinal))
aetheriaClientState.Contains("public TDocument Latest<TDocument>", StringComparison.Ordinal) ||
aetheriaClientState.Contains("public Observable<TDocument> Watch<TDocument>", StringComparison.Ordinal) ||
aetheriaClientState.Contains("public Task<CultMeshReactiveDocument<TDocument>> ReactiveAsync<TDocument>", StringComparison.Ordinal) ||
aetheriaClientState.Contains("public CultMeshReactiveDocument<TDocument> Reactive<TDocument>", StringComparison.Ordinal))
{
throw new InvalidOperationException(
"AetheriaClientState still exposes generic latest snapshot shortcuts instead of direct document/reactive handles.");
"AetheriaClientState still exposes generic latest/reactive/watch shortcuts instead of direct CultMesh document handles.");
}
if (aetheriaClientState.Contains("public AetheriaRuntimeObservedDaemonState? CurrentObservedDaemon(", StringComparison.Ordinal) ||
@ -16173,9 +16196,9 @@ static void RequireRuntimeStateReaderOwnsUnityStateAcquisition(string root)
"private CultMeshReactiveDocument<AetheriaRuntimeDaemonFrameDocument>? _observedFrame;",
"private CultMeshReactiveDocument<AetheriaRuntimeDaemonSoaViewDocument>? _observedSoaView;",
"private CultMeshReactiveDocument<AetheriaRuntimeZoneRenderDocument>? _observedZoneRender;",
"_observedFrame ??= State.Reactive<AetheriaRuntimeDaemonFrameDocument>();",
"_observedSoaView ??= State.Reactive<AetheriaRuntimeDaemonSoaViewDocument>();",
"_observedZoneRender ??= State.Reactive<AetheriaRuntimeZoneRenderDocument>();",
"_observedFrame ??= State.Document<AetheriaRuntimeDaemonFrameDocument>().Reactive();",
"_observedSoaView ??= State.Document<AetheriaRuntimeDaemonSoaViewDocument>().Reactive();",
"_observedZoneRender ??= State.Document<AetheriaRuntimeZoneRenderDocument>().Reactive();",
"AetheriaRuntimeObservedDaemonState.TryCreateCurrent("
};
var missingManagedObservedDaemonSymbols = requiredManagedObservedDaemonSymbols
@ -16189,9 +16212,9 @@ static void RequireRuntimeStateReaderOwnsUnityStateAcquisition(string root)
}
if (!daemonRuntimeDocumentTests.Contains("ManagedStateSamplesCurrentObservedDaemonFromReactiveDocuments()", StringComparison.Ordinal) ||
!daemonRuntimeDocumentTests.Contains("using var observedFrame = client.State.Reactive<AetheriaRuntimeDaemonFrameDocument>();", StringComparison.Ordinal) ||
!daemonRuntimeDocumentTests.Contains("using var observedSoaView = client.State.Reactive<AetheriaRuntimeDaemonSoaViewDocument>();", StringComparison.Ordinal) ||
!daemonRuntimeDocumentTests.Contains("using var observedZoneRender = client.State.Reactive<AetheriaRuntimeZoneRenderDocument>();", StringComparison.Ordinal) ||
!daemonRuntimeDocumentTests.Contains("using var observedFrame = client.State.Document<AetheriaRuntimeDaemonFrameDocument>().Reactive();", StringComparison.Ordinal) ||
!daemonRuntimeDocumentTests.Contains("using var observedSoaView = client.State.Document<AetheriaRuntimeDaemonSoaViewDocument>().Reactive();", StringComparison.Ordinal) ||
!daemonRuntimeDocumentTests.Contains("using var observedZoneRender = client.State.Document<AetheriaRuntimeZoneRenderDocument>().Reactive();", StringComparison.Ordinal) ||
!daemonRuntimeDocumentTests.Contains("AetheriaRuntimeObservedDaemonState.TryCreateCurrent(", StringComparison.Ordinal) ||
daemonRuntimeDocumentTests.Contains("client.State.CurrentObservedDaemon()", StringComparison.Ordinal))
{
@ -16414,9 +16437,9 @@ static void RequireRuntimeStateReaderOwnsUnityStateAcquisition(string root)
!daemonObserver.Contains("CultMeshReactiveDocument<AetheriaRuntimeDaemonFrameDocument> _daemonFrame", StringComparison.Ordinal) ||
!daemonObserver.Contains("CultMeshReactiveDocument<AetheriaRuntimeDaemonSoaViewDocument> _daemonSoaView", StringComparison.Ordinal) ||
!daemonObserver.Contains("CultMeshReactiveDocument<AetheriaRuntimeZoneRenderDocument> _zoneRender", StringComparison.Ordinal) ||
!daemonObserver.Contains("_daemonFrame ??= state.Reactive<AetheriaRuntimeDaemonFrameDocument>();", StringComparison.Ordinal) ||
!daemonObserver.Contains("_daemonFrame ??= state.Document<AetheriaRuntimeDaemonFrameDocument>().Reactive();", StringComparison.Ordinal) ||
!daemonObserver.Contains("_daemonSoaView ??= TryReactive<AetheriaRuntimeDaemonSoaViewDocument>(state);", StringComparison.Ordinal) ||
!daemonObserver.Contains("_zoneRender ??= state.Reactive<AetheriaRuntimeZoneRenderDocument>();", StringComparison.Ordinal) ||
!daemonObserver.Contains("_zoneRender ??= state.Document<AetheriaRuntimeZoneRenderDocument>().Reactive();", StringComparison.Ordinal) ||
!daemonObserver.Contains("AetheriaRuntimeObservedDaemonState.TryCreateCurrent(", StringComparison.Ordinal) ||
!daemonObserver.Contains("DisposeObservedDaemonDocuments()", StringComparison.Ordinal))
{
@ -16448,8 +16471,8 @@ static void RequireRuntimeStateReaderOwnsUnityStateAcquisition(string root)
if (!mainMenu.Contains("AetheriaClient", StringComparison.Ordinal) ||
!mainMenu.Contains("ResolveSectorMap(AetheriaRuntimeStateBootReport stateBoot)", StringComparison.Ordinal) ||
!mainMenu.Contains(".State", StringComparison.Ordinal) ||
!mainMenu.Contains(".Reactive<AetheriaRuntimeSectorMapDocument>()", StringComparison.Ordinal) ||
!mainMenu.Contains(".Reactive<AetheriaRuntimePlayerSettingsDocument>()", StringComparison.Ordinal))
!mainMenu.Contains(".Document<AetheriaRuntimeSectorMapDocument>().Reactive()", StringComparison.Ordinal) ||
!mainMenu.Contains(".Document<AetheriaRuntimePlayerSettingsDocument>().Reactive()", StringComparison.Ordinal))
{
throw new InvalidOperationException(
"MainMenu no longer routes sector-map lookup through the shared Aetheria client facade.");
@ -16476,9 +16499,9 @@ static void RequireRuntimeStateReaderOwnsUnityStateAcquisition(string root)
var requiredGameplayBootSymbols = new[]
{
".Reactive<AetheriaRuntimeCatalogSnapshot>()",
".Document<AetheriaRuntimeCatalogSnapshot>().Reactive()",
"runtimeCatalogDocument.Current",
".Reactive<AetheriaRuntimeSectorMapDocument>()",
".Document<AetheriaRuntimeSectorMapDocument>().Reactive()",
"sectorMapDocument.Current",
"Galaxy.ProjectObservedSectorMap(",
"sectorMap.IsTutorial",
@ -17318,8 +17341,8 @@ static void RequireInventoryDoubleClickTransferRequestAuthority(string root)
"TryResolveTypedInventoryRows(",
"TryValidateTypedCargoSlot(",
"TryValidateTypedEquipmentSlot(",
".Details",
".Reactive<AetheriaRuntimeInventoryDocument>(entityIndex)",
".Document<AetheriaRuntimeInventoryDocument>(entityIndex)",
".Reactive()",
"origin.Cargo.TryGetValue(item, out var originPosition)",
"SourceIndex == cargoIndex",
"SourceIndex == equipmentIndex",
@ -17866,7 +17889,7 @@ static void RequireInventoryLoadoutSaveRequestAuthority(string root)
"CultMeshReactiveDocument<AetheriaRuntimeDaemonFrameDocument> _loadoutFrame",
"ProjectLoadoutTemplate(targetEntityKey)",
"AetheriaRuntimeLoadoutSnapshotProjector.ProjectLoadoutTemplate(",
".Reactive<AetheriaRuntimeDaemonFrameDocument>()",
".Document<AetheriaRuntimeDaemonFrameDocument>().Reactive()",
"_loadoutFrame?.Dispose()",
".Ui.SaveLoadoutTemplateAsync(loadout, \"unity-inventory\")"
};
@ -17892,7 +17915,7 @@ static void RequireInventoryLoadoutSaveRequestAuthority(string root)
"InventoryPanel",
"AetheriaRuntimeDaemonFrameDocument",
"_loadoutFrame",
".Reactive<AetheriaRuntimeDaemonFrameDocument>()",
".Document<AetheriaRuntimeDaemonFrameDocument>().Reactive()",
"AetheriaRuntimeDaemonFrameSession",
".ObserveDaemonFrame()");
@ -17925,7 +17948,7 @@ static void RequireInventoryLoadoutSaveRequestAuthority(string root)
if (loadoutSnapshotProjector.Contains("ProjectLoadoutTemplateAsync(", StringComparison.Ordinal) ||
loadoutSnapshotProjector.Contains("AetheriaClientState state", StringComparison.Ordinal) ||
loadoutSnapshotProjector.Contains(".Reactive<AetheriaRuntimeDaemonFrameDocument>()", StringComparison.Ordinal) ||
loadoutSnapshotProjector.Contains(".Document<AetheriaRuntimeDaemonFrameDocument>().Reactive()", StringComparison.Ordinal) ||
loadoutSnapshotProjector.Contains("frame.Current?.Run", StringComparison.Ordinal))
{
throw new InvalidOperationException(
@ -18374,16 +18397,24 @@ static void RequireReactiveTypedDocumentAccess(
string forbiddenSessionType,
string forbiddenObserveAccessor)
{
var compactSource = CompactSource(source);
var compactReactiveAccessor = CompactSource(reactiveAccessor);
var requiredSymbols = new[]
{
$"CultMeshReactiveDocument<{documentType}> {fieldName}",
reactiveAccessor,
$"{fieldName}?.Current",
$"{fieldName}?.Dispose()"
};
var missingSymbols = requiredSymbols
.Where(symbol => !source.Contains(symbol, StringComparison.Ordinal))
.ToArray();
if (!string.IsNullOrWhiteSpace(compactReactiveAccessor) &&
!compactSource.Contains(compactReactiveAccessor, StringComparison.Ordinal))
{
missingSymbols = missingSymbols
.Concat(new[] { reactiveAccessor })
.ToArray();
}
if (missingSymbols.Length > 0)
{
throw new InvalidOperationException(

View file

@ -95,7 +95,7 @@ public abstract class ActionBarBinding : IDisposable
try
{
_catalog ??= Client.State.Reactive<AetheriaRuntimeCatalogSnapshot>();
_catalog ??= Client.State.Document<AetheriaRuntimeCatalogSnapshot>().Reactive();
return _catalog?.Current?.FindItem(item, x => x.ItemKey);
}
catch (Exception ex)

View file

@ -131,9 +131,9 @@ public sealed class AetheriaDaemonObserver : MonoBehaviour
return;
}
_daemonFrame ??= state.Reactive<AetheriaRuntimeDaemonFrameDocument>();
_daemonFrame ??= state.Document<AetheriaRuntimeDaemonFrameDocument>().Reactive();
_daemonSoaView ??= TryReactive<AetheriaRuntimeDaemonSoaViewDocument>(state);
_zoneRender ??= state.Reactive<AetheriaRuntimeZoneRenderDocument>();
_zoneRender ??= state.Document<AetheriaRuntimeZoneRenderDocument>().Reactive();
}
private static CultMeshReactiveDocument<TDocument> TryReactive<TDocument>(
@ -142,7 +142,7 @@ public sealed class AetheriaDaemonObserver : MonoBehaviour
{
try
{
return state.Reactive<TDocument>();
return state.Document<TDocument>().Reactive();
}
catch (System.Collections.Generic.KeyNotFoundException)
{

View file

@ -37,11 +37,11 @@ public sealed class AetheriaUnityGameplayBootShell
var aetheria = AetheriaUnityRuntimeClientProvider.ResolveClient(stateBoot.StateFilePath, stateBoot.RuntimeId)
.State;
using var runtimeCatalogDocument = aetheria.Reactive<AetheriaRuntimeCatalogSnapshot>();
using var runtimeCatalogDocument = aetheria.Document<AetheriaRuntimeCatalogSnapshot>().Reactive();
var runtimeCatalog = runtimeCatalogDocument.Current;
if (runtimeCatalog == null)
throw new InvalidOperationException("Aetheria typed runtime catalog is required before gameplay boot.");
using var sectorMapDocument = aetheria.Reactive<AetheriaRuntimeSectorMapDocument>();
using var sectorMapDocument = aetheria.Document<AetheriaRuntimeSectorMapDocument>().Reactive();
var sectorMap = sectorMapDocument.Current;
if (sectorMap == null)
throw new InvalidOperationException("Aetheria typed sector map is required before gameplay boot.");

View file

@ -193,9 +193,9 @@ public sealed class AetheriaUnityObservedDockingIndex : IDisposable
if (state == null)
return;
_currentEntity ??= state.Reactive<AetheriaRuntimeCurrentEntityDocument>();
_currentDocking ??= state.Reactive<AetheriaRuntimeCurrentDockingDocument>();
_stationRefit ??= state.Reactive<AetheriaRuntimeStationRefitDocument>();
_currentEntity ??= state.Document<AetheriaRuntimeCurrentEntityDocument>().Reactive();
_currentDocking ??= state.Document<AetheriaRuntimeCurrentDockingDocument>().Reactive();
_stationRefit ??= state.Document<AetheriaRuntimeStationRefitDocument>().Reactive();
}
public void Dispose()

View file

@ -99,8 +99,7 @@ public sealed class AetheriaUnityObservedTargetQuery : IDisposable
try
{
_zoneContacts = _resolveClient()
?.State
.Reactive<AetheriaRuntimeZoneContactsDocument>();
?.State.Document<AetheriaRuntimeZoneContactsDocument>().Reactive();
return _zoneContacts?.Current;
}
catch

View file

@ -118,8 +118,8 @@ public sealed class AetheriaUnityRenderSplatViewportSource : MonoBehaviour
{
var nextRenderSplatsViewport = ResolveClient()
.State
.Viewports
.Reactive<AetheriaRuntimeRenderSplatsViewportDocument>(viewport);
.Document<AetheriaRuntimeRenderSplatsViewportDocument>(viewport)
.Reactive();
ClearViewportDocument();
_viewport = viewport;
_renderSplatsViewport = nextRenderSplatsViewport;

View file

@ -95,8 +95,7 @@ public static class AetheriaUnityRuntimeClientProvider
try
{
_playerSettingsDocument ??= ResolveClient(AetheriaUnityRuntimePaths.RuntimeStateFilePath)
.State
.Reactive<AetheriaRuntimePlayerSettingsDocument>();
.State.Document<AetheriaRuntimePlayerSettingsDocument>().Reactive();
var stored = _playerSettingsDocument.Current;
if (stored == null)

View file

@ -197,39 +197,39 @@ public class DaemonRuntimeDocumentTests
.GetAwaiter()
.GetResult();
using var currentEntityReactive = client.State
.ReactiveAsync<AetheriaRuntimeCurrentEntityDocument>()
.Document<AetheriaRuntimeCurrentEntityDocument>()
.ReactiveAsync()
.GetAwaiter()
.GetResult();
using var zoneRenderReactive = client.State
.Reactive<AetheriaRuntimeZoneRenderDocument>();
using var zoneRenderReactive = client.State.Document<AetheriaRuntimeZoneRenderDocument>().Reactive();
var observedAuthoritativeFrame = ReadLatest(client.State.Document<AetheriaRuntimeDaemonFrameDocument>());
using var catalogReactive = client.State.Reactive<AetheriaRuntimeCatalogSnapshot>();
using var daemonFrameReactive = client.State.Reactive<AetheriaRuntimeDaemonFrameDocument>();
using var daemonSoaViewReactive = client.State.Reactive<AetheriaRuntimeDaemonSoaViewDocument>();
using var catalogReactive = client.State.Document<AetheriaRuntimeCatalogSnapshot>().Reactive();
using var daemonFrameReactive = client.State.Document<AetheriaRuntimeDaemonFrameDocument>().Reactive();
using var daemonSoaViewReactive = client.State.Document<AetheriaRuntimeDaemonSoaViewDocument>().Reactive();
Assert.IsTrue(AetheriaRuntimeObservedDaemonState.TryCreateCurrent(
daemonFrameReactive,
daemonSoaViewReactive,
zoneRenderReactive,
out var observed));
using var loadoutTemplatesReactive = client.State.Reactive<AetheriaRuntimeLoadoutTemplatesDocument>();
using var sectorMapReactive = client.State.Reactive<AetheriaRuntimeSectorMapDocument>();
using var playerSettingsReactive = client.State.Reactive<AetheriaRuntimePlayerSettingsDocument>();
using var verseHostSettingsReactive = client.State.Reactive<AetheriaRuntimeVerseHostSettingsDocument>();
using var zoneContactsReactive = client.State.Reactive<AetheriaRuntimeZoneContactsDocument>();
using var currentZoneReactive = client.State.Reactive<AetheriaRuntimeCurrentZoneDocument>();
using var currentEntityDocumentReactive = client.State.Reactive<AetheriaRuntimeCurrentEntityDocument>();
using var currentDockingReactive = client.State.Reactive<AetheriaRuntimeCurrentDockingDocument>();
using var stationRefitReactive = client.State.Reactive<AetheriaRuntimeStationRefitDocument>();
using var zoneDetailsReactive = client.State.Reactive<AetheriaRuntimeZoneDetailsDocument>(0);
using var selectedObjectReactive = client.State.Reactive<AetheriaRuntimeSelectedObjectDocument>(0);
using var inventoryReactive = client.State.Reactive<AetheriaRuntimeInventoryDocument>(0);
using var mapViewportReactive = client.State.Reactive<AetheriaRuntimeRtsViewportDocument>(viewport);
using var objectsViewportReactive = client.State.Reactive<AetheriaRuntimeObjectsViewportDocument>(viewport);
using var gravityViewportReactive = client.State.Reactive<AetheriaRuntimeGravityViewportDocument>(viewport);
using var renderSplatsViewportReactive = client.State.Reactive<AetheriaRuntimeRenderSplatsViewportDocument>(viewport);
using var playerHudCatalog = client.State.Reactive<AetheriaRuntimeCatalogSnapshot>();
using var playerHudSettings = client.State.Reactive<AetheriaRuntimePlayerSettingsDocument>();
using var playerHudEntity = client.State.Reactive<AetheriaRuntimeCurrentEntityDocument>();
using var loadoutTemplatesReactive = client.State.Document<AetheriaRuntimeLoadoutTemplatesDocument>().Reactive();
using var sectorMapReactive = client.State.Document<AetheriaRuntimeSectorMapDocument>().Reactive();
using var playerSettingsReactive = client.State.Document<AetheriaRuntimePlayerSettingsDocument>().Reactive();
using var verseHostSettingsReactive = client.State.Document<AetheriaRuntimeVerseHostSettingsDocument>().Reactive();
using var zoneContactsReactive = client.State.Document<AetheriaRuntimeZoneContactsDocument>().Reactive();
using var currentZoneReactive = client.State.Document<AetheriaRuntimeCurrentZoneDocument>().Reactive();
using var currentEntityDocumentReactive = client.State.Document<AetheriaRuntimeCurrentEntityDocument>().Reactive();
using var currentDockingReactive = client.State.Document<AetheriaRuntimeCurrentDockingDocument>().Reactive();
using var stationRefitReactive = client.State.Document<AetheriaRuntimeStationRefitDocument>().Reactive();
using var zoneDetailsReactive = client.State.Document<AetheriaRuntimeZoneDetailsDocument>(0).Reactive();
using var selectedObjectReactive = client.State.Document<AetheriaRuntimeSelectedObjectDocument>(0).Reactive();
using var inventoryReactive = client.State.Document<AetheriaRuntimeInventoryDocument>(0).Reactive();
using var mapViewportReactive = client.State.Document<AetheriaRuntimeRtsViewportDocument>(viewport).Reactive();
using var objectsViewportReactive = client.State.Document<AetheriaRuntimeObjectsViewportDocument>(viewport).Reactive();
using var gravityViewportReactive = client.State.Document<AetheriaRuntimeGravityViewportDocument>(viewport).Reactive();
using var renderSplatsViewportReactive = client.State.Document<AetheriaRuntimeRenderSplatsViewportDocument>(viewport).Reactive();
using var playerHudCatalog = client.State.Document<AetheriaRuntimeCatalogSnapshot>().Reactive();
using var playerHudSettings = client.State.Document<AetheriaRuntimePlayerSettingsDocument>().Reactive();
using var playerHudEntity = client.State.Document<AetheriaRuntimeCurrentEntityDocument>().Reactive();
var gameSurface = ReadLatest(client.State.Document<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.Game));
var gameTuiSurface = ReadLatest(client.State.Document<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.GameTui));
var editorSurface = ReadLatest(client.State.Document<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.Editor));
@ -245,10 +245,10 @@ public class DaemonRuntimeDocumentTests
currentDockingReactive,
stationRefitReactive,
out var observedDocking));
using var reactiveGameSurface = client.State.Reactive<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.Game);
using var reactiveGameTuiSurface = client.State.Reactive<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.GameTui);
using var reactiveEditorSurface = client.State.Reactive<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.Editor);
using var reactiveEditorTuiSurface = client.State.Reactive<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.EditorTui);
using var reactiveGameSurface = client.State.Document<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.Game).Reactive();
using var reactiveGameTuiSurface = client.State.Document<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.GameTui).Reactive();
using var reactiveEditorSurface = client.State.Document<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.Editor).Reactive();
using var reactiveEditorTuiSurface = client.State.Document<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.EditorTui).Reactive();
Assert.AreEqual("aetheria.current.entity", client.State.CurrentEntity.DocumentId);
Assert.AreSame(client.State.CurrentEntity, client.State.Document<AetheriaRuntimeCurrentEntityDocument>());
@ -2221,9 +2221,9 @@ public class DaemonRuntimeDocumentTests
.OpenAsync(statePath, "unity-observer-test", pullOnOpen: true)
.GetAwaiter()
.GetResult();
using var observedFrame = client.State.Reactive<AetheriaRuntimeDaemonFrameDocument>();
using var observedSoaView = client.State.Reactive<AetheriaRuntimeDaemonSoaViewDocument>();
using var observedZoneRender = client.State.Reactive<AetheriaRuntimeZoneRenderDocument>();
using var observedFrame = client.State.Document<AetheriaRuntimeDaemonFrameDocument>().Reactive();
using var observedSoaView = client.State.Document<AetheriaRuntimeDaemonSoaViewDocument>().Reactive();
using var observedZoneRender = client.State.Document<AetheriaRuntimeZoneRenderDocument>().Reactive();
Assert.IsTrue(AetheriaRuntimeObservedDaemonState.TryCreateCurrent(
observedFrame,
observedSoaView,
@ -2279,9 +2279,9 @@ public class DaemonRuntimeDocumentTests
.OpenAsync(statePath, "unity-reactive-observer-test", pullOnOpen: true)
.GetAwaiter()
.GetResult();
using var observedFrame = client.State.Reactive<AetheriaRuntimeDaemonFrameDocument>();
using var observedSoaView = client.State.Reactive<AetheriaRuntimeDaemonSoaViewDocument>();
using var observedZoneRender = client.State.Reactive<AetheriaRuntimeZoneRenderDocument>();
using var observedFrame = client.State.Document<AetheriaRuntimeDaemonFrameDocument>().Reactive();
using var observedSoaView = client.State.Document<AetheriaRuntimeDaemonSoaViewDocument>().Reactive();
using var observedZoneRender = client.State.Document<AetheriaRuntimeZoneRenderDocument>().Reactive();
var observed = AetheriaRuntimeObservedDaemonState.TryCreateCurrent(
observedFrame,
observedSoaView,
@ -2326,9 +2326,9 @@ public class DaemonRuntimeDocumentTests
.OpenAsync(statePath, "unity-frame-only-observer-test", pullOnOpen: true)
.GetAwaiter()
.GetResult();
using var observedFrame = client.State.Reactive<AetheriaRuntimeDaemonFrameDocument>();
using var observedSoaView = client.State.Reactive<AetheriaRuntimeDaemonSoaViewDocument>();
using var observedZoneRender = client.State.Reactive<AetheriaRuntimeZoneRenderDocument>();
using var observedFrame = client.State.Document<AetheriaRuntimeDaemonFrameDocument>().Reactive();
using var observedSoaView = client.State.Document<AetheriaRuntimeDaemonSoaViewDocument>().Reactive();
using var observedZoneRender = client.State.Document<AetheriaRuntimeZoneRenderDocument>().Reactive();
Assert.IsTrue(AetheriaRuntimeObservedDaemonState.TryCreateCurrent(
observedFrame,
observedSoaView,

View file

@ -82,8 +82,7 @@ public class StarbridgePlayerSeatDocumentTests
var handle = client.Document<AetheriaRuntimeStarbridgePlayerSeatDocument>(
AetheriaRuntimeVerseRecordKeys.StarbridgePlayerSeat(seat.SeatId));
using var reactive = handle.Reactive();
using var aetheriaSeat = client.State
.Reactive<AetheriaRuntimeStarbridgePlayerSeatDocument>(seat.SeatId);
using var aetheriaSeat = client.State.Document<AetheriaRuntimeStarbridgePlayerSeatDocument>(seat.SeatId).Reactive();
Assert.AreEqual("seat-support", handle.Latest().SeatId);
Assert.AreEqual(

View file

@ -326,7 +326,7 @@ public class SchematicDisplay : MonoBehaviour
try
{
_catalog = ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>();
_catalog = ResolveClient().State.Document<AetheriaRuntimeCatalogSnapshot>().Reactive();
}
catch (Exception ex)
{
@ -342,7 +342,7 @@ public class SchematicDisplay : MonoBehaviour
{
try
{
_playerSettings = ResolveClient().State.Reactive<AetheriaRuntimePlayerSettingsDocument>();
_playerSettings = ResolveClient().State.Document<AetheriaRuntimePlayerSettingsDocument>().Reactive();
}
catch (Exception ex)
{
@ -359,7 +359,7 @@ public class SchematicDisplay : MonoBehaviour
{
try
{
_currentEntity = ResolveClient().State.Reactive<AetheriaRuntimeCurrentEntityDocument>();
_currentEntity = ResolveClient().State.Document<AetheriaRuntimeCurrentEntityDocument>().Reactive();
}
catch (Exception ex)
{

View file

@ -393,8 +393,7 @@ public class InputDisplayLayout : MonoBehaviour
try
{
_playerSettings = ResolveClient()
.State
.Reactive<AetheriaRuntimePlayerSettingsDocument>();
.State.Document<AetheriaRuntimePlayerSettingsDocument>().Reactive();
}
catch (Exception ex)
{

View file

@ -151,8 +151,7 @@ public class MainMenu : MonoBehaviour
try
{
_sectorMap ??= ResolveClient(stateBoot)
.State
.Reactive<AetheriaRuntimeSectorMapDocument>();
.State.Document<AetheriaRuntimeSectorMapDocument>().Reactive();
return _sectorMap?.Current;
}
catch (Exception ex)
@ -170,8 +169,7 @@ public class MainMenu : MonoBehaviour
try
{
_playerSettings ??= ResolveClient(stateBoot)
.State
.Reactive<AetheriaRuntimePlayerSettingsDocument>();
.State.Document<AetheriaRuntimePlayerSettingsDocument>().Reactive();
return _playerSettings?.Current;
}
catch (Exception ex)
@ -189,8 +187,7 @@ public class MainMenu : MonoBehaviour
try
{
_verseHostSettings ??= ResolveClient(stateBoot)
.State
.Reactive<AetheriaRuntimeVerseHostSettingsDocument>();
.State.Document<AetheriaRuntimeVerseHostSettingsDocument>().Reactive();
return _verseHostSettings?.Current;
}
catch (Exception ex)

View file

@ -965,8 +965,7 @@ public class InventoryMenu : MonoBehaviour
try
{
_currentEntity = ResolveClient()
.State
.Reactive<AetheriaRuntimeCurrentEntityDocument>();
.State.Document<AetheriaRuntimeCurrentEntityDocument>().Reactive();
}
catch (Exception ex)
{
@ -984,8 +983,7 @@ public class InventoryMenu : MonoBehaviour
try
{
_stationRefit = ResolveClient()
.State
.Reactive<AetheriaRuntimeStationRefitDocument>();
.State.Document<AetheriaRuntimeStationRefitDocument>().Reactive();
}
catch (Exception ex)
{
@ -1004,8 +1002,8 @@ public class InventoryMenu : MonoBehaviour
{
var nextInventory = ResolveClient()
.State
.Details
.Reactive<AetheriaRuntimeInventoryDocument>(entityIndex);
.Document<AetheriaRuntimeInventoryDocument>(entityIndex)
.Reactive();
_inventory?.Dispose();
_inventoryEntityIndex = entityIndex;
_inventory = nextInventory;
@ -1077,7 +1075,7 @@ public class InventoryMenu : MonoBehaviour
try
{
_catalog = ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>();
_catalog = ResolveClient().State.Document<AetheriaRuntimeCatalogSnapshot>().Reactive();
}
catch (Exception ex)
{
@ -1095,8 +1093,7 @@ public class InventoryMenu : MonoBehaviour
try
{
_playerSettings = ResolveClient()
.State
.Reactive<AetheriaRuntimePlayerSettingsDocument>();
.State.Document<AetheriaRuntimePlayerSettingsDocument>().Reactive();
}
catch (Exception ex)
{

View file

@ -1504,8 +1504,7 @@ private void Update()
try
{
_currentEntity = ResolveClient()
.State
.Reactive<AetheriaRuntimeCurrentEntityDocument>();
.State.Document<AetheriaRuntimeCurrentEntityDocument>().Reactive();
}
catch (Exception ex)
{
@ -1523,8 +1522,7 @@ private void Update()
try
{
_stationRefit = ResolveClient()
.State
.Reactive<AetheriaRuntimeStationRefitDocument>();
.State.Document<AetheriaRuntimeStationRefitDocument>().Reactive();
}
catch (Exception ex)
{
@ -1550,8 +1548,7 @@ private void Update()
try
{
_loadoutFrame = ResolveClient()
.State
.Reactive<AetheriaRuntimeDaemonFrameDocument>();
.State.Document<AetheriaRuntimeDaemonFrameDocument>().Reactive();
}
catch (Exception ex)
{
@ -1570,8 +1567,8 @@ private void Update()
{
var nextInventory = ResolveClient()
.State
.Details
.Reactive<AetheriaRuntimeInventoryDocument>(entityIndex);
.Document<AetheriaRuntimeInventoryDocument>(entityIndex)
.Reactive();
_inventory?.Dispose();
_inventoryEntityIndex = entityIndex;
_inventory = nextInventory;
@ -1591,7 +1588,7 @@ private void Update()
try
{
_catalog = ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>();
_catalog = ResolveClient().State.Document<AetheriaRuntimeCatalogSnapshot>().Reactive();
}
catch (Exception ex)
{
@ -1609,8 +1606,7 @@ private void Update()
try
{
_playerSettings = ResolveClient()
.State
.Reactive<AetheriaRuntimePlayerSettingsDocument>();
.State.Document<AetheriaRuntimePlayerSettingsDocument>().Reactive();
}
catch (Exception ex)
{

View file

@ -131,12 +131,12 @@ public class MapRenderer : MonoBehaviour
ClearViewportCaches();
_objectsViewport = client
.State
.Viewports
.Reactive<AetheriaRuntimeObjectsViewportDocument>(viewport);
.Document<AetheriaRuntimeObjectsViewportDocument>(viewport)
.Reactive();
_renderSplatsViewport = client
.State
.Viewports
.Reactive<AetheriaRuntimeRenderSplatsViewportDocument>(viewport);
.Document<AetheriaRuntimeRenderSplatsViewportDocument>(viewport)
.Reactive();
var objectsViewport = _objectsViewport?.Current;
var zoneName = string.IsNullOrWhiteSpace(objectsViewport?.ZoneName)
@ -319,8 +319,7 @@ public class MapRenderer : MonoBehaviour
try
{
_playerSettings ??= ResolveClient()
.State
.Reactive<AetheriaRuntimePlayerSettingsDocument>();
.State.Document<AetheriaRuntimePlayerSettingsDocument>().Reactive();
return _playerSettings?.Current?.ShowAsteroidsInMinimap ?? false;
}
catch (Exception ex)

View file

@ -180,7 +180,7 @@ public class MenuPanel : MonoBehaviour
docking = null;
try
{
_currentDocking ??= ResolveClient().State.Reactive<AetheriaRuntimeCurrentDockingDocument>();
_currentDocking ??= ResolveClient().State.Document<AetheriaRuntimeCurrentDockingDocument>().Reactive();
docking = _currentDocking.Current;
return docking != null;
}

View file

@ -222,8 +222,7 @@ public class SectorMap : MonoBehaviour
private void EnsureSectorMapLoaded()
{
_sectorMapDocument ??= ResolveClient()
.State
.Reactive<AetheriaRuntimeSectorMapDocument>();
.State.Document<AetheriaRuntimeSectorMapDocument>().Reactive();
_sectorMap = _sectorMapDocument?.Current;
if (_sectorMapLoaded)

View file

@ -175,8 +175,7 @@ public class SectorRenderer : MonoBehaviour, IBeginDragHandler, IDragHandler, IS
try
{
_sectorMap ??= ResolveClient()
.State
.Reactive<AetheriaRuntimeSectorMapDocument>();
.State.Document<AetheriaRuntimeSectorMapDocument>().Reactive();
var sectorMap = _sectorMap?.Current;
return (sectorMap?.Zones ?? Array.Empty<AetheriaRuntimeSectorMapZone>())
.FirstOrDefault(zone => zone.ZoneIndex == zoneIndex);
@ -205,8 +204,8 @@ public class SectorRenderer : MonoBehaviour, IBeginDragHandler, IDragHandler, IS
{
var nextZoneDetails = ResolveClient()
.State
.Details
.Reactive<AetheriaRuntimeZoneDetailsDocument>(zoneIndex);
.Document<AetheriaRuntimeZoneDetailsDocument>(zoneIndex)
.Reactive();
_zoneDetails?.Dispose();
_zoneDetailsIndex = zoneIndex;
_zoneDetails = nextZoneDetails;
@ -232,7 +231,7 @@ public class SectorRenderer : MonoBehaviour, IBeginDragHandler, IDragHandler, IS
try
{
_catalog = ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>();
_catalog = ResolveClient().State.Document<AetheriaRuntimeCatalogSnapshot>().Reactive();
}
catch (Exception ex)
{
@ -250,8 +249,7 @@ public class SectorRenderer : MonoBehaviour, IBeginDragHandler, IDragHandler, IS
try
{
_playerSettings = ResolveClient()
.State
.Reactive<AetheriaRuntimePlayerSettingsDocument>();
.State.Document<AetheriaRuntimePlayerSettingsDocument>().Reactive();
}
catch (Exception ex)
{
@ -322,8 +320,7 @@ public class SectorRenderer : MonoBehaviour, IBeginDragHandler, IDragHandler, IS
try
{
_currentZone ??= ResolveClient()
.State
.Reactive<AetheriaRuntimeCurrentZoneDocument>();
.State.Document<AetheriaRuntimeCurrentZoneDocument>().Reactive();
}
catch (Exception ex)
{

View file

@ -518,7 +518,7 @@ public class TradeMenu : MonoBehaviour
try
{
_stationRefit = ResolveClient().State.Reactive<AetheriaRuntimeStationRefitDocument>();
_stationRefit = ResolveClient().State.Document<AetheriaRuntimeStationRefitDocument>().Reactive();
}
catch (Exception ex)
{
@ -533,7 +533,7 @@ public class TradeMenu : MonoBehaviour
docking = null;
try
{
_currentDocking ??= ResolveClient().State.Reactive<AetheriaRuntimeCurrentDockingDocument>();
_currentDocking ??= ResolveClient().State.Document<AetheriaRuntimeCurrentDockingDocument>().Reactive();
docking = _currentDocking.Current;
return docking != null;
}
@ -627,7 +627,7 @@ public class TradeMenu : MonoBehaviour
try
{
_catalog = ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>();
_catalog = ResolveClient().State.Document<AetheriaRuntimeCatalogSnapshot>().Reactive();
}
catch (Exception ex)
{
@ -645,8 +645,7 @@ public class TradeMenu : MonoBehaviour
try
{
_playerSettings = ResolveClient()
.State
.Reactive<AetheriaRuntimePlayerSettingsDocument>();
.State.Document<AetheriaRuntimePlayerSettingsDocument>().Reactive();
}
catch (Exception ex)
{

View file

@ -102,8 +102,7 @@ public class VolumeCloudRenderer : EffectBase
try
{
_playerSettings = ResolveClient()
.State
.Reactive<AetheriaRuntimePlayerSettingsDocument>();
.State.Document<AetheriaRuntimePlayerSettingsDocument>().Reactive();
}
catch (Exception ex)
{

View file

@ -1208,7 +1208,7 @@ public class ZoneRenderer : MonoBehaviour
try
{
_catalog = ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>();
_catalog = ResolveClient().State.Document<AetheriaRuntimeCatalogSnapshot>().Reactive();
}
catch (Exception ex)
{
@ -1225,7 +1225,7 @@ public class ZoneRenderer : MonoBehaviour
try
{
_zoneContacts = ResolveClient().State.Reactive<AetheriaRuntimeZoneContactsDocument>();
_zoneContacts = ResolveClient().State.Document<AetheriaRuntimeZoneContactsDocument>().Reactive();
}
catch (Exception ex)
{
@ -1245,8 +1245,8 @@ public class ZoneRenderer : MonoBehaviour
{
var nextObjectsViewport = ResolveClient()
.State
.Viewports
.Reactive<AetheriaRuntimeObjectsViewportDocument>(viewportBounds);
.Document<AetheriaRuntimeObjectsViewportDocument>(viewportBounds)
.Reactive();
_objectsViewport?.Dispose();
_objectsViewportBounds = viewportBounds;
_objectsViewport = nextObjectsViewport;

View file

@ -169,16 +169,16 @@ namespace GameCult.Aetheria.EveRuntime
AetheriaClient client)
{
if (string.Equals(surfaceId, AetheriaRuntimeDaemonGameSurfaceBuilder.SurfaceId, StringComparison.Ordinal))
return client.State.Reactive<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.Game);
return client.State.Document<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.Game).Reactive();
if (string.Equals(surfaceId, AetheriaRuntimeDaemonGameSurfaceBuilder.TuiSurfaceId, StringComparison.Ordinal))
return client.State.Reactive<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.GameTui);
return client.State.Document<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.GameTui).Reactive();
if (string.Equals(surfaceId, AetheriaRuntimeDaemonEditorSurfaceBuilder.SurfaceId, StringComparison.Ordinal))
return client.State.Reactive<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.Editor);
return client.State.Document<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.Editor).Reactive();
if (string.Equals(surfaceId, AetheriaRuntimeDaemonEditorSurfaceBuilder.TuiSurfaceId, StringComparison.Ordinal))
return client.State.Reactive<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.EditorTui);
return client.State.Document<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.EditorTui).Reactive();
return null;
}

View file

@ -182,9 +182,9 @@ namespace GameCult.Aetheria.State.Verse
internal AetheriaRuntimeObservedDaemonState? CurrentObservedDaemon()
{
ThrowIfDisposed();
_observedFrame ??= State.Reactive<AetheriaRuntimeDaemonFrameDocument>();
_observedSoaView ??= State.Reactive<AetheriaRuntimeDaemonSoaViewDocument>();
_observedZoneRender ??= State.Reactive<AetheriaRuntimeZoneRenderDocument>();
_observedFrame ??= State.Document<AetheriaRuntimeDaemonFrameDocument>().Reactive();
_observedSoaView ??= State.Document<AetheriaRuntimeDaemonSoaViewDocument>().Reactive();
_observedZoneRender ??= State.Document<AetheriaRuntimeZoneRenderDocument>().Reactive();
return AetheriaRuntimeObservedDaemonState.TryCreateCurrent(
_observedFrame,
_observedSoaView,

View file

@ -1,9 +1,5 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using GameCult.Mesh;
using R3;
#nullable enable
@ -225,22 +221,6 @@ namespace GameCult.Aetheria.State.Verse
return (CultMeshDocumentHandle<TDocument>)(object)document;
}
public Task<CultMeshReactiveDocument<TDocument>> ReactiveAsync<TDocument>(
AetheriaClientEveSurface surface,
CultMeshReactiveDocumentOptions? options = null)
where TDocument : class
{
return Document<TDocument>(surface).ReactiveAsync(options);
}
public CultMeshReactiveDocument<TDocument> Reactive<TDocument>(
AetheriaClientEveSurface surface,
CultMeshReactiveDocumentOptions? options = null)
where TDocument : class
{
return Document<TDocument>(surface).Reactive(options);
}
public CultMeshDocumentHandle<TDocument> Document<TDocument>(AetheriaRuntimeRtsViewportBounds viewport)
where TDocument : class
{
@ -259,22 +239,6 @@ namespace GameCult.Aetheria.State.Verse
$"Aetheria typed state does not expose a viewport document for {typeof(TDocument).FullName}.");
}
public Task<CultMeshReactiveDocument<TDocument>> ReactiveAsync<TDocument>(
AetheriaRuntimeRtsViewportBounds viewport,
CultMeshReactiveDocumentOptions? options = null)
where TDocument : class
{
return Document<TDocument>(viewport).ReactiveAsync(options);
}
public CultMeshReactiveDocument<TDocument> Reactive<TDocument>(
AetheriaRuntimeRtsViewportBounds viewport,
CultMeshReactiveDocumentOptions? options = null)
where TDocument : class
{
return Document<TDocument>(viewport).Reactive(options);
}
public CultMeshDocumentHandle<TDocument> Document<TDocument>(int entityOrZoneIndex)
where TDocument : class
{
@ -289,22 +253,6 @@ namespace GameCult.Aetheria.State.Verse
$"Aetheria typed state does not expose an indexed document for {typeof(TDocument).FullName}.");
}
public Task<CultMeshReactiveDocument<TDocument>> ReactiveAsync<TDocument>(
int entityOrZoneIndex,
CultMeshReactiveDocumentOptions? options = null)
where TDocument : class
{
return Document<TDocument>(entityOrZoneIndex).ReactiveAsync(options);
}
public CultMeshReactiveDocument<TDocument> Reactive<TDocument>(
int entityOrZoneIndex,
CultMeshReactiveDocumentOptions? options = null)
where TDocument : class
{
return Document<TDocument>(entityOrZoneIndex).Reactive(options);
}
public CultMeshDocumentHandle<TDocument> Document<TDocument>(string seatId)
where TDocument : class
{
@ -317,63 +265,6 @@ namespace GameCult.Aetheria.State.Verse
return (CultMeshDocumentHandle<TDocument>)(object)_starbridgePlayerSeat(seatId);
}
public Task<CultMeshReactiveDocument<TDocument>> ReactiveAsync<TDocument>(
string seatId,
CultMeshReactiveDocumentOptions? options = null)
where TDocument : class
{
return Document<TDocument>(seatId).ReactiveAsync(options);
}
public CultMeshReactiveDocument<TDocument> Reactive<TDocument>(
string seatId,
CultMeshReactiveDocumentOptions? options = null)
where TDocument : class
{
return Document<TDocument>(seatId).Reactive(options);
}
private CultMeshReactiveDocument<TDocument>? TryReactive<TDocument>(
CultMeshReactiveDocumentOptions? options)
where TDocument : class
{
try
{
return Reactive<TDocument>(options);
}
catch (KeyNotFoundException)
{
return null;
}
}
public Observable<TDocument> Watch<TDocument>()
where TDocument : class
{
return Document<TDocument>().Watch();
}
public IDisposable Watch<TDocument>(Action<TDocument> onNext)
where TDocument : class
{
if (onNext == null) throw new ArgumentNullException(nameof(onNext));
return Document<TDocument>().Watch(onNext);
}
public Task<CultMeshReactiveDocument<TDocument>> ReactiveAsync<TDocument>(
CultMeshReactiveDocumentOptions? options = null)
where TDocument : class
{
return Document<TDocument>().ReactiveAsync(options);
}
public CultMeshReactiveDocument<TDocument> Reactive<TDocument>(
CultMeshReactiveDocumentOptions? options = null)
where TDocument : class
{
return Document<TDocument>().Reactive(options);
}
public Func<string, string> CreateEveSurfaceStateRefResolver()
{
return CreateEveSurfaceCultMeshStateRefResolver().AsFunc();
@ -381,10 +272,10 @@ namespace GameCult.Aetheria.State.Verse
public CultMeshStateRefResolver CreateEveSurfaceCultMeshStateRefResolver()
{
_eveStateRefFrame ??= Reactive<AetheriaRuntimeDaemonFrameDocument>();
_eveStateRefHealth ??= Reactive<AetheriaRuntimeDaemonHealthDocument>();
_eveStateRefCommandBoundary ??= Reactive<AetheriaRuntimeDaemonCommandBoundaryDocument>();
_eveStateRefCatalog ??= Reactive<AetheriaRuntimeCatalogSnapshot>();
_eveStateRefFrame ??= Document<AetheriaRuntimeDaemonFrameDocument>().Reactive();
_eveStateRefHealth ??= Document<AetheriaRuntimeDaemonHealthDocument>().Reactive();
_eveStateRefCommandBoundary ??= Document<AetheriaRuntimeDaemonCommandBoundaryDocument>().Reactive();
_eveStateRefCatalog ??= Document<AetheriaRuntimeCatalogSnapshot>().Reactive();
return AetheriaRuntimeStateRefResolver.CreateEveSurfaceCultMeshStateRefResolver(
() => _eveStateRefFrame.Current,

View file

@ -497,11 +497,11 @@ namespace GameCult.Aetheria.State.Verse
seatId => Document<AetheriaRuntimeStarbridgePlayerSeatDocument>(
AetheriaRuntimeVerseRecordKeys.StarbridgePlayerSeat(seatId)));
managedDaemonFrame = state.Reactive<AetheriaRuntimeDaemonFrameDocument>();
managedCatalog = state.Reactive<AetheriaRuntimeCatalogSnapshot>();
managedLoadoutTemplates = state.Reactive<AetheriaRuntimeLoadoutTemplatesDocument>();
managedStarbridgeScenario = state.Reactive<AetheriaRuntimeStarbridgeScenarioDocument>();
managedStarbridgeSession = state.Reactive<AetheriaRuntimeStarbridgeSessionDocument>();
managedDaemonFrame = state.Document<AetheriaRuntimeDaemonFrameDocument>().Reactive();
managedCatalog = state.Document<AetheriaRuntimeCatalogSnapshot>().Reactive();
managedLoadoutTemplates = state.Document<AetheriaRuntimeLoadoutTemplatesDocument>().Reactive();
managedStarbridgeScenario = state.Document<AetheriaRuntimeStarbridgeScenarioDocument>().Reactive();
managedStarbridgeSession = state.Document<AetheriaRuntimeStarbridgeSessionDocument>().Reactive();
_managedDaemonFrame = managedDaemonFrame;
_managedCatalog = managedCatalog;
_managedLoadoutTemplates = managedLoadoutTemplates;