Add native reactive client state access

This commit is contained in:
Meta Vens 2026-06-29 04:18:22 +01:00
commit 296a0b6de8
26 changed files with 258 additions and 244 deletions

View file

@ -2438,8 +2438,7 @@ static void RequireDaemonRenderQueryAuthority(string root)
"FindAnyObjectByType<AetheriaDaemonObserver>()",
"ResolveObjectsViewport(viewport)",
"private AetheriaRuntimeObjectsViewportDocument ResolveObjectsViewport(AetheriaRuntimeXzRect viewport)",
".Document<AetheriaRuntimeObjectsViewportDocument>(viewportBounds)",
".Reactive();",
".State.Reactive<AetheriaRuntimeObjectsViewportDocument>(viewportBounds)",
"_objectsViewport?.Current",
"foreach (var entity in objects?.Objects ?? Array.Empty<AetheriaRuntimeRtsViewportObject>())",
"_observedEntitySnapshotsByDaemonIndex.TryGetValue(entityIndex, out var entity)",
@ -2458,7 +2457,7 @@ static void RequireDaemonRenderQueryAuthority(string root)
"beltPose.InstancePoses ?? Array.Empty<AetheriaRuntimeZoneRenderAsteroidInstancePose>()",
"private void RefreshDaemonContactRows()",
".State",
".Document<AetheriaRuntimeZoneContactsDocument>().Reactive()",
".Reactive<AetheriaRuntimeZoneContactsDocument>()",
"private void RefreshDaemonCompassMarkers()",
"private void RefreshDaemonVisibleEntityInstances()",
"PowerPulse(",
@ -2567,9 +2566,9 @@ static void RequireDaemonRenderQueryAuthority(string root)
"ResolveCatalog()",
"ResolveCurrentEntityHudStatus()",
"AetheriaUnityRuntimeClientProvider.ResolveClient(",
"ResolveClient().State.Document<AetheriaRuntimeCatalogSnapshot>().Reactive()",
"ResolveClient().State.Document<AetheriaRuntimePlayerSettingsDocument>().Reactive()",
"ResolveClient().State.Document<AetheriaRuntimeCurrentEntityDocument>().Reactive()",
"ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>()",
"ResolveClient().State.Reactive<AetheriaRuntimePlayerSettingsDocument>()",
"ResolveClient().State.Reactive<AetheriaRuntimeCurrentEntityDocument>()",
"return _currentEntity?.Current?.Hud ?? new AetheriaRuntimeCurrentEntityHudStatus();",
"_currentEntity?.Dispose()",
"hud.OverrideShutdown",
@ -3219,10 +3218,10 @@ static void RequireEveRuntimeBootstrap(string root)
"AetheriaUnityRuntimeClientProvider.ResolveClient(",
"CultMeshReactiveDocument<global::Aetheria.State.Documents.EveSurfaceState>",
"ResolveReactiveDaemonSurfaceState(",
"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()",
"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)",
"DisposeReactiveSurfaceState()",
"AetheriaRuntimeEveSurfaceAdapter.ToEveSurfaceDocument(",
"private bool ShouldMountSurface(",
@ -4251,7 +4250,7 @@ static void RequireRuntimeInputScreenUsesEveSurface(string root)
"InputDisplayLayout",
"AetheriaRuntimePlayerSettingsDocument",
"_playerSettings",
".Document<AetheriaRuntimePlayerSettingsDocument>().Reactive()",
".Reactive<AetheriaRuntimePlayerSettingsDocument>()",
"AetheriaRuntimePlayerSettingsSession",
".ObservePlayer()");
@ -4559,9 +4558,8 @@ static void RequireSectorMapZoneDetailsUseEveSurface(string root)
"ProjectZoneDetailsSurfaceState(",
"AetheriaUnityRuntimeClientProvider.ResolveClient(",
".State",
".Document<AetheriaRuntimeSectorMapDocument>().Reactive()",
".Document<AetheriaRuntimeZoneDetailsDocument>(zoneIndex)",
".Reactive();",
".Reactive<AetheriaRuntimeSectorMapDocument>()",
".State.Reactive<AetheriaRuntimeZoneDetailsDocument>(zoneIndex)",
"_zoneDetails?.Current",
"AetheriaClient",
"AetheriaRuntimeZoneDetailsSurfaceCommands.TryRead(request, out var command)",
@ -4584,7 +4582,7 @@ static void RequireSectorMapZoneDetailsUseEveSurface(string root)
"SectorRenderer",
"AetheriaRuntimeSectorMapDocument",
"_sectorMap",
".Document<AetheriaRuntimeSectorMapDocument>().Reactive()",
".Reactive<AetheriaRuntimeSectorMapDocument>()",
"AetheriaRuntimeSectorMapSession",
".ObserveSectorMap()");
RequireReactiveTypedDocumentAccess(
@ -4592,7 +4590,7 @@ static void RequireSectorMapZoneDetailsUseEveSurface(string root)
"SectorRenderer",
"AetheriaRuntimeCurrentZoneDocument",
"_currentZone",
".Document<AetheriaRuntimeCurrentZoneDocument>().Reactive()",
".Reactive<AetheriaRuntimeCurrentZoneDocument>()",
"AetheriaRuntimeCurrentZoneSession",
".ObserveZone()");
RequireReactiveTypedDocumentAccess(
@ -4600,7 +4598,7 @@ static void RequireSectorMapZoneDetailsUseEveSurface(string root)
"SectorRenderer",
"AetheriaRuntimeZoneDetailsDocument",
"_zoneDetails",
".Document<AetheriaRuntimeZoneDetailsDocument>(zoneIndex).Reactive()",
".Reactive<AetheriaRuntimeZoneDetailsDocument>(zoneIndex)",
"AetheriaRuntimeZoneDetailsSession",
".ObserveZone(zoneIndex)");
RequireReactiveTypedDocumentAccess(
@ -4608,7 +4606,7 @@ static void RequireSectorMapZoneDetailsUseEveSurface(string root)
"SectorRenderer",
"AetheriaRuntimeCatalogSnapshot",
"_catalog",
"ResolveClient().State.Document<AetheriaRuntimeCatalogSnapshot>().Reactive()",
"ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>()",
"AetheriaRuntimeCatalogSession",
"ResolveClient().State.ObserveCatalog()");
RequireReactiveTypedDocumentAccess(
@ -4616,7 +4614,7 @@ static void RequireSectorMapZoneDetailsUseEveSurface(string root)
"SectorRenderer",
"AetheriaRuntimePlayerSettingsDocument",
"_playerSettings",
".Document<AetheriaRuntimePlayerSettingsDocument>().Reactive()",
".Reactive<AetheriaRuntimePlayerSettingsDocument>()",
"AetheriaRuntimePlayerSettingsSession",
".ObservePlayer()");
@ -4777,7 +4775,7 @@ static void RequireRuntimeMenuTabsUseEveSurface(string root)
"SetObservedEntityIndex(AetheriaUnityObservedEntityIndex observedEntityIndex)",
"AetheriaRuntimeCurrentDockingDocument",
"CultMeshReactiveDocument<AetheriaRuntimeCurrentDockingDocument> _currentDocking",
"_currentDocking ??= ResolveClient().State.Document<AetheriaRuntimeCurrentDockingDocument>().Reactive()",
"_currentDocking ??= ResolveClient().State.Reactive<AetheriaRuntimeCurrentDockingDocument>()",
"docking = _currentDocking.Current",
"docking.IsDocked",
"AetheriaClient",
@ -5741,10 +5739,10 @@ static void RequireTradeCargoSelectorUseEveSurface(string root)
"SetObservedEntityIndex(AetheriaUnityObservedEntityIndex observedEntityIndex)",
"AetheriaRuntimeCurrentDockingDocument",
"CultMeshReactiveDocument<AetheriaRuntimeCurrentDockingDocument> _currentDocking",
"_currentDocking ??= ResolveClient().State.Document<AetheriaRuntimeCurrentDockingDocument>().Reactive()",
"_currentDocking ??= ResolveClient().State.Reactive<AetheriaRuntimeCurrentDockingDocument>()",
"docking = _currentDocking.Current",
"CultMeshReactiveDocument<AetheriaRuntimeStationRefitDocument> _stationRefit",
"_stationRefit = ResolveClient().State.Document<AetheriaRuntimeStationRefitDocument>().Reactive()",
"_stationRefit = ResolveClient().State.Reactive<AetheriaRuntimeStationRefitDocument>()",
"return _stationRefit?.Current",
"SetTargetCargo(",
"selection.EntityKey",
@ -7053,10 +7051,11 @@ static void RequireInventoryValidationUsesManagedTypedDocuments(string root)
var clientState = File.ReadAllText(clientStatePath);
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))
!clientState.Contains("public CultMeshReactiveDocument<TDocument> Reactive<TDocument>(", StringComparison.Ordinal) ||
!clientState.Contains("public CultMeshReactiveDocument<TDocument> Reactive<TDocument>(int entityOrZoneIndex)", StringComparison.Ordinal))
{
throw new InvalidOperationException(
"AetheriaClientState must expose typed document handles for current entity, station refit, and indexed inventory documents while leaving reactivity to CultMesh handles.");
"AetheriaClientState must expose native typed document handles and native reactive typed documents for current entity, station refit, and indexed inventory documents.");
}
var sources = new Dictionary<string, string>
@ -7079,9 +7078,9 @@ static void RequireInventoryValidationUsesManagedTypedDocuments(string root)
.ToArray();
var requiredCompactedSymbols = new[]
{
".Document<AetheriaRuntimeCurrentEntityDocument>().Reactive()",
".Document<AetheriaRuntimeStationRefitDocument>().Reactive()",
".Document<AetheriaRuntimeInventoryDocument>(entityIndex).Reactive()"
".Reactive<AetheriaRuntimeCurrentEntityDocument>()",
".Reactive<AetheriaRuntimeStationRefitDocument>()",
".Reactive<AetheriaRuntimeInventoryDocument>(entityIndex)"
};
missingSymbols = missingSymbols
.Concat(requiredCompactedSymbols.Where(symbol => !compact.Contains(symbol, StringComparison.Ordinal)))
@ -7124,7 +7123,7 @@ static void RequireInventoryValidationUsesManagedTypedDocuments(string root)
name,
"AetheriaRuntimeCurrentEntityDocument",
"_currentEntity",
".Document<AetheriaRuntimeCurrentEntityDocument>().Reactive()",
".Reactive<AetheriaRuntimeCurrentEntityDocument>()",
"AetheriaRuntimeCurrentEntitySession",
".ObserveEntity()");
RequireReactiveTypedDocumentAccess(
@ -7132,7 +7131,7 @@ static void RequireInventoryValidationUsesManagedTypedDocuments(string root)
name,
"AetheriaRuntimeStationRefitDocument",
"_stationRefit",
".Document<AetheriaRuntimeStationRefitDocument>().Reactive()",
".Reactive<AetheriaRuntimeStationRefitDocument>()",
"AetheriaRuntimeStationRefitSession",
".ObserveStationRefit()");
RequireReactiveTypedDocumentAccess(
@ -7140,7 +7139,7 @@ static void RequireInventoryValidationUsesManagedTypedDocuments(string root)
name,
"AetheriaRuntimeInventoryDocument",
"_inventory",
".Document<AetheriaRuntimeInventoryDocument>(entityIndex).Reactive()",
".Reactive<AetheriaRuntimeInventoryDocument>(entityIndex)",
"AetheriaRuntimeInventorySession",
".ObserveInventory(entityIndex)");
}
@ -7251,7 +7250,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.Document<AetheriaRuntimeCurrentDockingDocument>().Reactive()", StringComparison.Ordinal) ||
!menuPanel.Contains("_currentDocking ??= ResolveClient().State.Reactive<AetheriaRuntimeCurrentDockingDocument>()", StringComparison.Ordinal) ||
!menuPanel.Contains("docking = _currentDocking.Current", StringComparison.Ordinal) ||
menuPanel.Contains("ResolveClient().State.Latest<AetheriaRuntimeCurrentDockingDocument>()", StringComparison.Ordinal))
{
@ -7259,7 +7258,7 @@ static void RequireMenuDockingUsesManagedTypedSnapshot(string root)
}
if (!tradeMenu.Contains("CultMeshReactiveDocument<AetheriaRuntimeCurrentDockingDocument> _currentDocking", StringComparison.Ordinal) ||
!tradeMenu.Contains("_currentDocking ??= ResolveClient().State.Document<AetheriaRuntimeCurrentDockingDocument>().Reactive()", StringComparison.Ordinal) ||
!tradeMenu.Contains("_currentDocking ??= ResolveClient().State.Reactive<AetheriaRuntimeCurrentDockingDocument>()", StringComparison.Ordinal) ||
!tradeMenu.Contains("docking = _currentDocking.Current", StringComparison.Ordinal) ||
tradeMenu.Contains("ResolveClient().State.Latest<AetheriaRuntimeCurrentDockingDocument>()", StringComparison.Ordinal))
{
@ -7280,7 +7279,7 @@ static bool HasManagedDockingSnapshotAccess(string source)
{
if (source.Contains("AetheriaRuntimeCurrentDockingDocument", StringComparison.Ordinal) &&
source.Contains("CultMeshReactiveDocument<AetheriaRuntimeCurrentDockingDocument> _currentDocking", StringComparison.Ordinal) &&
source.Contains("State.Document<AetheriaRuntimeCurrentDockingDocument>().Reactive()", StringComparison.Ordinal) &&
source.Contains("State.Reactive<AetheriaRuntimeCurrentDockingDocument>()", StringComparison.Ordinal) &&
source.Contains("_currentDocking.Current", StringComparison.Ordinal) &&
!source.Contains("ResolveClient().State.Latest<AetheriaRuntimeCurrentDockingDocument>()", StringComparison.Ordinal))
{
@ -7309,9 +7308,9 @@ static bool HasManagedDockingSnapshotAccess(string source)
source.Contains("CultMeshReactiveDocument<AetheriaRuntimeCurrentDockingDocument> _currentDocking", StringComparison.Ordinal) &&
source.Contains("CultMeshReactiveDocument<AetheriaRuntimeStationRefitDocument> _stationRefit", StringComparison.Ordinal) &&
source.Contains("TryReadCurrentDockingDocuments(", 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.Reactive<AetheriaRuntimeCurrentEntityDocument>()", StringComparison.Ordinal) &&
source.Contains("state.Reactive<AetheriaRuntimeCurrentDockingDocument>()", StringComparison.Ordinal) &&
source.Contains("state.Reactive<AetheriaRuntimeStationRefitDocument>()", StringComparison.Ordinal) &&
source.Contains("_currentDocking?.Current", StringComparison.Ordinal) &&
source.Contains("_stationRefit?.Current", StringComparison.Ordinal) &&
!source.Contains("State?.CurrentDocking()", StringComparison.Ordinal) &&
@ -7353,11 +7352,10 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
if (clientState.Contains("public Task<TDocument> LatestAsync<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/reactive/watch shortcuts; callers should hold Document<TDocument>() handles and call CultMesh handle APIs.");
"AetheriaClientState must not expose latest/watch/session wrappers; callers should hold native Document<TDocument>() handles or native Reactive<TDocument>() documents.");
}
var unityPaths = new[]
@ -7421,7 +7419,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
{
"public abstract class ActionBarBinding : IDisposable",
"CultMeshReactiveDocument<AetheriaRuntimeCatalogSnapshot> _catalog",
"Client.State.Document<AetheriaRuntimeCatalogSnapshot>().Reactive()",
"Client.State.Reactive<AetheriaRuntimeCatalogSnapshot>()",
"_catalog?.Current?.FindItem(item, x => x.ItemKey)",
"binding?.Dispose()",
"private void OnDestroy()"
@ -7461,9 +7459,9 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"CultMeshReactiveDocument<AetheriaRuntimeCatalogSnapshot> _catalog",
"CultMeshReactiveDocument<AetheriaRuntimePlayerSettingsDocument> _playerSettings",
"CultMeshReactiveDocument<AetheriaRuntimeCurrentEntityDocument> _currentEntity",
"ResolveClient().State.Document<AetheriaRuntimeCatalogSnapshot>().Reactive()",
"ResolveClient().State.Document<AetheriaRuntimePlayerSettingsDocument>().Reactive()",
"ResolveClient().State.Document<AetheriaRuntimeCurrentEntityDocument>().Reactive()",
"ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>()",
"ResolveClient().State.Reactive<AetheriaRuntimePlayerSettingsDocument>()",
"ResolveClient().State.Reactive<AetheriaRuntimeCurrentEntityDocument>()",
"_catalog?.Dispose()",
"_playerSettings?.Dispose()",
"_currentEntity?.Dispose()",
@ -7517,7 +7515,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
var requiredVolumeCloudSymbols = new[]
{
"CultMeshReactiveDocument<AetheriaRuntimePlayerSettingsDocument> _playerSettings",
".Document<AetheriaRuntimePlayerSettingsDocument>().Reactive()",
".Reactive<AetheriaRuntimePlayerSettingsDocument>()",
"_playerSettings?.Dispose()",
"_playerSettings?.Current"
};
@ -7547,7 +7545,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
var requiredObservedTargetSymbols = new[]
{
"CultMeshReactiveDocument<AetheriaRuntimeZoneContactsDocument> _zoneContacts",
".Document<AetheriaRuntimeZoneContactsDocument>().Reactive()",
".Reactive<AetheriaRuntimeZoneContactsDocument>()",
"_zoneContacts?.Dispose()",
"_zoneContacts?.Current"
};
@ -7593,8 +7591,8 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
missingMapRendererSharedDocumentSymbols = missingMapRendererSharedDocumentSymbols
.Concat(new[]
{
".Document<AetheriaRuntimeObjectsViewportDocument>(viewport).Reactive()",
".Document<AetheriaRuntimeRenderSplatsViewportDocument>(viewport).Reactive()"
".Reactive<AetheriaRuntimeObjectsViewportDocument>(viewport)",
".Reactive<AetheriaRuntimeRenderSplatsViewportDocument>(viewport)"
}.Where(symbol => !compactMapRenderer.Contains(symbol, StringComparison.Ordinal)))
.ToArray();
if (missingMapRendererSharedDocumentSymbols.Length > 0)
@ -7609,7 +7607,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"MapRenderer",
"AetheriaRuntimeObjectsViewportDocument",
"_objectsViewport",
".Document<AetheriaRuntimeObjectsViewportDocument>(viewport).Reactive()",
".Reactive<AetheriaRuntimeObjectsViewportDocument>(viewport)",
"AetheriaRuntimeObjectsViewportSession",
".ObserveObjects(viewport)");
RequireReactiveTypedDocumentAccess(
@ -7617,7 +7615,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"MapRenderer",
"AetheriaRuntimeRenderSplatsViewportDocument",
"_renderSplatsViewport",
".Document<AetheriaRuntimeRenderSplatsViewportDocument>(viewport).Reactive()",
".Reactive<AetheriaRuntimeRenderSplatsViewportDocument>(viewport)",
"AetheriaRuntimeRenderSplatsViewportSession",
".ObserveRenderSplats(viewport)");
RequireReactiveTypedDocumentAccess(
@ -7625,7 +7623,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"MapRenderer",
"AetheriaRuntimePlayerSettingsDocument",
"_playerSettings",
".Document<AetheriaRuntimePlayerSettingsDocument>().Reactive()",
".Reactive<AetheriaRuntimePlayerSettingsDocument>()",
"AetheriaRuntimePlayerSettingsSession",
".ObservePlayer()");
@ -7677,7 +7675,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"MainMenu",
"AetheriaRuntimeSectorMapDocument",
"_sectorMap",
".Document<AetheriaRuntimeSectorMapDocument>().Reactive()",
".Reactive<AetheriaRuntimeSectorMapDocument>()",
"AetheriaRuntimeSectorMapSession",
".ObserveSectorMap()");
RequireReactiveTypedDocumentAccess(
@ -7685,7 +7683,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"MainMenu",
"AetheriaRuntimePlayerSettingsDocument",
"_playerSettings",
".Document<AetheriaRuntimePlayerSettingsDocument>().Reactive()",
".Reactive<AetheriaRuntimePlayerSettingsDocument>()",
"AetheriaRuntimePlayerSettingsSession",
".ObservePlayer()");
RequireReactiveTypedDocumentAccess(
@ -7693,7 +7691,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"MainMenu",
"AetheriaRuntimeVerseHostSettingsDocument",
"_verseHostSettings",
".Document<AetheriaRuntimeVerseHostSettingsDocument>().Reactive()",
".Reactive<AetheriaRuntimeVerseHostSettingsDocument>()",
"AetheriaRuntimeVerseHostSettingsSession",
".ObserveVerseHost()");
@ -7720,7 +7718,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"TradeMenu",
"AetheriaRuntimeCatalogSnapshot",
"_catalog",
"ResolveClient().State.Document<AetheriaRuntimeCatalogSnapshot>().Reactive()",
"ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>()",
"AetheriaRuntimeCatalogSession",
"ResolveClient().State.ObserveCatalog()");
RequireReactiveTypedDocumentAccess(
@ -7728,7 +7726,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"TradeMenu",
"AetheriaRuntimePlayerSettingsDocument",
"_playerSettings",
".Document<AetheriaRuntimePlayerSettingsDocument>().Reactive()",
".Reactive<AetheriaRuntimePlayerSettingsDocument>()",
"AetheriaRuntimePlayerSettingsSession",
".ObservePlayer()");
@ -7755,7 +7753,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"InventoryMenu",
"AetheriaRuntimeCatalogSnapshot",
"_catalog",
"ResolveClient().State.Document<AetheriaRuntimeCatalogSnapshot>().Reactive()",
"ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>()",
"AetheriaRuntimeCatalogSession",
"ResolveClient().State.ObserveCatalog()");
RequireReactiveTypedDocumentAccess(
@ -7763,7 +7761,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"InventoryMenu",
"AetheriaRuntimePlayerSettingsDocument",
"_playerSettings",
".Document<AetheriaRuntimePlayerSettingsDocument>().Reactive()",
".Reactive<AetheriaRuntimePlayerSettingsDocument>()",
"AetheriaRuntimePlayerSettingsSession",
".ObservePlayer()");
@ -7793,7 +7791,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"InventoryPanel",
"AetheriaRuntimeCatalogSnapshot",
"_catalog",
"ResolveClient().State.Document<AetheriaRuntimeCatalogSnapshot>().Reactive()",
"ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>()",
"AetheriaRuntimeCatalogSession",
"ResolveClient().State.ObserveCatalog()");
RequireReactiveTypedDocumentAccess(
@ -7801,7 +7799,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"InventoryPanel",
"AetheriaRuntimePlayerSettingsDocument",
"_playerSettings",
".Document<AetheriaRuntimePlayerSettingsDocument>().Reactive()",
".Reactive<AetheriaRuntimePlayerSettingsDocument>()",
"AetheriaRuntimePlayerSettingsSession",
".ObservePlayer()");
@ -7830,9 +7828,9 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
missingSectorRendererSharedDocumentSymbols = missingSectorRendererSharedDocumentSymbols
.Concat(new[]
{
".Document<AetheriaRuntimeSectorMapDocument>().Reactive()",
".Document<AetheriaRuntimeCurrentZoneDocument>().Reactive()",
".Document<AetheriaRuntimeZoneDetailsDocument>(zoneIndex).Reactive()"
".Reactive<AetheriaRuntimeSectorMapDocument>()",
".Reactive<AetheriaRuntimeCurrentZoneDocument>()",
".Reactive<AetheriaRuntimeZoneDetailsDocument>(zoneIndex)"
}.Where(symbol => !compactSectorRenderer.Contains(symbol, StringComparison.Ordinal)))
.ToArray();
if (missingSectorRendererSharedDocumentSymbols.Length > 0)
@ -7847,7 +7845,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"SectorRenderer",
"AetheriaRuntimeSectorMapDocument",
"_sectorMap",
".Document<AetheriaRuntimeSectorMapDocument>().Reactive()",
".Reactive<AetheriaRuntimeSectorMapDocument>()",
"AetheriaRuntimeSectorMapSession",
".ObserveSectorMap()");
RequireReactiveTypedDocumentAccess(
@ -7855,7 +7853,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"SectorRenderer",
"AetheriaRuntimeCurrentZoneDocument",
"_currentZone",
".Document<AetheriaRuntimeCurrentZoneDocument>().Reactive()",
".Reactive<AetheriaRuntimeCurrentZoneDocument>()",
"AetheriaRuntimeCurrentZoneSession",
".ObserveZone()");
RequireReactiveTypedDocumentAccess(
@ -7863,7 +7861,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"SectorRenderer",
"AetheriaRuntimeZoneDetailsDocument",
"_zoneDetails",
".Document<AetheriaRuntimeZoneDetailsDocument>(zoneIndex).Reactive()",
".Reactive<AetheriaRuntimeZoneDetailsDocument>(zoneIndex)",
"AetheriaRuntimeZoneDetailsSession",
".ObserveZone(zoneIndex)");
RequireReactiveTypedDocumentAccess(
@ -7871,7 +7869,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"SectorRenderer",
"AetheriaRuntimeCatalogSnapshot",
"_catalog",
"ResolveClient().State.Document<AetheriaRuntimeCatalogSnapshot>().Reactive()",
"ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>()",
"AetheriaRuntimeCatalogSession",
"ResolveClient().State.ObserveCatalog()");
RequireReactiveTypedDocumentAccess(
@ -7879,7 +7877,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"SectorRenderer",
"AetheriaRuntimePlayerSettingsDocument",
"_playerSettings",
".Document<AetheriaRuntimePlayerSettingsDocument>().Reactive()",
".Reactive<AetheriaRuntimePlayerSettingsDocument>()",
"AetheriaRuntimePlayerSettingsSession",
".ObservePlayer()");
@ -7910,7 +7908,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
var requiredZoneRendererSharedDocumentSymbols = new[]
{
"CultMeshReactiveDocument<AetheriaRuntimeZoneContactsDocument> _zoneContacts",
"ResolveClient().State.Document<AetheriaRuntimeZoneContactsDocument>().Reactive()",
"ResolveClient().State.Reactive<AetheriaRuntimeZoneContactsDocument>()",
"_zoneContacts?.Dispose()",
"_zoneContacts?.Current",
"private void OnDestroy()"
@ -7930,7 +7928,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"ZoneRenderer",
"AetheriaRuntimeZoneContactsDocument",
"_zoneContacts",
"ResolveClient().State.Document<AetheriaRuntimeZoneContactsDocument>().Reactive()",
"ResolveClient().State.Reactive<AetheriaRuntimeZoneContactsDocument>()",
"AetheriaRuntimeZoneContactsSession",
"ResolveClient().State.ObserveZoneContacts()");
RequireReactiveTypedDocumentAccess(
@ -7938,7 +7936,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"ZoneRenderer",
"AetheriaRuntimeCatalogSnapshot",
"_catalog",
"ResolveClient().State.Document<AetheriaRuntimeCatalogSnapshot>().Reactive()",
"ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>()",
"AetheriaRuntimeCatalogSession",
"ResolveClient().State.ObserveCatalog()");
@ -8052,11 +8050,11 @@ static void RequireUnityViewportAndMapReadsUseManagedAccessors(string root)
.Where(symbol => !renderSplatViewportSource.Contains(symbol, StringComparison.Ordinal))
.ToArray();
if (!CompactSource(renderSplatViewportSource).Contains(
".Document<AetheriaRuntimeRenderSplatsViewportDocument>(viewport).Reactive()",
".Reactive<AetheriaRuntimeRenderSplatsViewportDocument>(viewport)",
StringComparison.Ordinal))
{
missingRenderSplatViewportSourceSymbols = missingRenderSplatViewportSourceSymbols
.Concat(new[] { ".Document<AetheriaRuntimeRenderSplatsViewportDocument>(viewport).Reactive()" })
.Concat(new[] { ".Reactive<AetheriaRuntimeRenderSplatsViewportDocument>(viewport)" })
.ToArray();
}
if (missingRenderSplatViewportSourceSymbols.Length > 0 ||
@ -8079,7 +8077,7 @@ static void RequireUnityViewportAndMapReadsUseManagedAccessors(string root)
"AetheriaUnityRenderSplatViewportSource",
"AetheriaRuntimeRenderSplatsViewportDocument",
"_renderSplatsViewport",
".Document<AetheriaRuntimeRenderSplatsViewportDocument>(viewport).Reactive()",
".Reactive<AetheriaRuntimeRenderSplatsViewportDocument>(viewport)",
"AetheriaRuntimeRenderSplatsViewportSession",
".ObserveRenderSplats(viewport)");
@ -8099,11 +8097,11 @@ static void RequireUnityViewportAndMapReadsUseManagedAccessors(string root)
.Where(symbol => !zoneRenderer.Contains(symbol, StringComparison.Ordinal))
.ToArray();
if (!CompactSource(zoneRenderer).Contains(
".Document<AetheriaRuntimeObjectsViewportDocument>(viewportBounds).Reactive()",
".Reactive<AetheriaRuntimeObjectsViewportDocument>(viewportBounds)",
StringComparison.Ordinal))
{
missingZoneRendererViewportSymbols = missingZoneRendererViewportSymbols
.Concat(new[] { ".Document<AetheriaRuntimeObjectsViewportDocument>(viewportBounds).Reactive()" })
.Concat(new[] { ".Reactive<AetheriaRuntimeObjectsViewportDocument>(viewportBounds)" })
.ToArray();
}
if (missingZoneRendererViewportSymbols.Length > 0 ||
@ -8126,7 +8124,7 @@ static void RequireUnityViewportAndMapReadsUseManagedAccessors(string root)
"ZoneRenderer",
"AetheriaRuntimeObjectsViewportDocument",
"_objectsViewport",
".Document<AetheriaRuntimeObjectsViewportDocument>(viewportBounds).Reactive()",
".Reactive<AetheriaRuntimeObjectsViewportDocument>(viewportBounds)",
"AetheriaRuntimeObjectsViewportSession",
".ObserveObjects(viewportBounds)");
@ -8187,7 +8185,12 @@ static void RequireAetheriaManagedStateAccessorsCoverDomainDocuments(string root
"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)"
"public CultMeshDocumentHandle<TDocument> Document<TDocument>(string seatId)",
"public CultMeshReactiveDocument<TDocument> Reactive<TDocument>()",
"public CultMeshReactiveDocument<TDocument> Reactive<TDocument>(AetheriaClientEveSurface surface)",
"public CultMeshReactiveDocument<TDocument> Reactive<TDocument>(AetheriaRuntimeRtsViewportBounds viewport)",
"public CultMeshReactiveDocument<TDocument> Reactive<TDocument>(int entityOrZoneIndex)",
"public CultMeshReactiveDocument<TDocument> Reactive<TDocument>(string seatId)"
};
var missingClientSymbols = requiredClientSymbols
.Where(symbol => !clientState.Contains(symbol, StringComparison.Ordinal))
@ -8202,11 +8205,10 @@ static void RequireAetheriaManagedStateAccessorsCoverDomainDocuments(string root
if (clientState.Contains("public Task<TDocument> LatestAsync<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/reactive/watch shortcuts; callers should sample explicit document handles or CultMesh reactive documents.");
"AetheriaClientState must not reintroduce generic latest/watch shortcuts; callers should sample native typed document handles or native reactive typed documents.");
}
var forbiddenFixedReactiveWrappers = new[]
@ -8574,7 +8576,7 @@ static void RequireAetheriaManagedStateAccessorsCoverDomainDocuments(string root
}
if (!checkedSources["StarbridgePlayerSeatDocumentTests.cs"].Contains(
".Document<AetheriaRuntimeStarbridgePlayerSeatDocument>(seat.SeatId).Reactive()",
".Reactive<AetheriaRuntimeStarbridgePlayerSeatDocument>(seat.SeatId)",
StringComparison.Ordinal) ||
!checkedSources["StarbridgePlayerSeatDocumentTests.cs"].Contains(
".Document<AetheriaRuntimeStarbridgePlayerSeatDocument>(seat.SeatId)",
@ -9138,9 +9140,9 @@ static void RequireClientTargetBootAuthority(string root)
"stateBoot.StateFileExists",
"AetheriaUnityRuntimeClientProvider.ResolveClient(stateBoot.StateFilePath, stateBoot.RuntimeId)",
".State",
".Document<AetheriaRuntimeCatalogSnapshot>().Reactive()",
".Reactive<AetheriaRuntimeCatalogSnapshot>()",
"runtimeCatalogDocument.Current",
".Document<AetheriaRuntimeSectorMapDocument>().Reactive()",
".Reactive<AetheriaRuntimeSectorMapDocument>()",
"sectorMapDocument.Current",
"new ItemManager(",
"new AetheriaUnityLoadoutItemFactory(itemManager, runtimeCatalog)",
@ -9198,7 +9200,7 @@ static void RequireClientTargetBootAuthority(string root)
"ResolveSectorMap(AetheriaRuntimeStateBootReport stateBoot)",
"AetheriaClient",
".State",
".Document<AetheriaRuntimeSectorMapDocument>().Reactive()",
".Reactive<AetheriaRuntimeSectorMapDocument>()",
"ResolveVerseHostSettings(AetheriaRuntimeStateBootReport stateBoot)",
"AetheriaState.At(AetheriaUnityRuntimePaths.GameDataDirectory)",
".ClientTarget",
@ -11877,11 +11879,11 @@ static void RequireAetheriaRuntimeVerseClientContract(string root)
"AetheriaRuntimeLoadoutTemplatesDocument",
"ProjectStarbridgeSummaryAsync",
"CultMeshReactiveDocument<AetheriaRuntimeDaemonFrameDocument>? managedDaemonFrame = null;",
"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 = state.Reactive<AetheriaRuntimeDaemonFrameDocument>();",
"managedCatalog = state.Reactive<AetheriaRuntimeCatalogSnapshot>();",
"managedLoadoutTemplates = state.Reactive<AetheriaRuntimeLoadoutTemplatesDocument>();",
"managedStarbridgeScenario = state.Reactive<AetheriaRuntimeStarbridgeScenarioDocument>();",
"managedStarbridgeSession = state.Reactive<AetheriaRuntimeStarbridgeSessionDocument>();",
"AetheriaRuntimeDaemonFrameDocument RequireManagedFrame()",
"RequireManagedFrame()",
"RequireManagedCatalog()",
@ -12045,10 +12047,10 @@ static void RequireAetheriaRuntimeVerseClientContract(string root)
"CultMeshReactiveDocument<AetheriaRuntimeDaemonHealthDocument>? _eveStateRefHealth",
"CultMeshReactiveDocument<AetheriaRuntimeDaemonCommandBoundaryDocument>? _eveStateRefCommandBoundary",
"CultMeshReactiveDocument<AetheriaRuntimeCatalogSnapshot>? _eveStateRefCatalog",
"_eveStateRefFrame ??= Document<AetheriaRuntimeDaemonFrameDocument>().Reactive()",
"_eveStateRefHealth ??= Document<AetheriaRuntimeDaemonHealthDocument>().Reactive()",
"_eveStateRefCommandBoundary ??= Document<AetheriaRuntimeDaemonCommandBoundaryDocument>().Reactive()",
"_eveStateRefCatalog ??= Document<AetheriaRuntimeCatalogSnapshot>().Reactive()",
"_eveStateRefFrame ??= Reactive<AetheriaRuntimeDaemonFrameDocument>()",
"_eveStateRefHealth ??= Reactive<AetheriaRuntimeDaemonHealthDocument>()",
"_eveStateRefCommandBoundary ??= Reactive<AetheriaRuntimeDaemonCommandBoundaryDocument>()",
"_eveStateRefCatalog ??= Reactive<AetheriaRuntimeCatalogSnapshot>()",
"() => _eveStateRefFrame.Current",
"() => _eveStateRefHealth.Current",
"() => _eveStateRefCommandBoundary.Current",
@ -12819,7 +12821,7 @@ static void RequireMainMenuVerseHostProjection(string root)
var requiredMainMenuSymbols = new[]
{
"ResolveVerseHostSettings(AetheriaRuntimeStateBootReport stateBoot)",
".Document<AetheriaRuntimeVerseHostSettingsDocument>().Reactive()",
".Reactive<AetheriaRuntimeVerseHostSettingsDocument>()",
"AetheriaRuntimeMainMenuSurfaceBuilder.ProjectRoot(",
"AetheriaRuntimeMainMenuSurfaceBuilder.BuildRoot("
};
@ -12958,7 +12960,7 @@ static void RequireMainMenuContinueRunState(string root)
"ResolveSectorMap",
"AetheriaClient",
".State",
".Document<AetheriaRuntimeSectorMapDocument>().Reactive()",
".Reactive<AetheriaRuntimeSectorMapDocument>()",
"ContinueGame()",
"SceneManager.LoadScene(\"ARPG\")"
};
@ -13293,7 +13295,7 @@ static void RequireMainMenuContinueRunState(string root)
"AetheriaRuntimeZoneContactRow",
"AetheriaRuntimeZoneTargetRow",
".State",
".Document<AetheriaRuntimeZoneContactsDocument>().Reactive()",
".Reactive<AetheriaRuntimeZoneContactsDocument>()",
"_zoneContacts?.Current",
"_zoneContacts?.Dispose()",
"_entityIndex.TryResolveEntityByDaemonIndex(targetEntityIndex, out var targetEntity)"
@ -13342,9 +13344,9 @@ static void RequireMainMenuContinueRunState(string root)
"CultMeshReactiveDocument<AetheriaRuntimeCurrentDockingDocument> _currentDocking",
"CultMeshReactiveDocument<AetheriaRuntimeStationRefitDocument> _stationRefit",
"TryReadCurrentDockingDocuments(",
"state.Document<AetheriaRuntimeCurrentEntityDocument>().Reactive()",
"state.Document<AetheriaRuntimeCurrentDockingDocument>().Reactive()",
"state.Document<AetheriaRuntimeStationRefitDocument>().Reactive()",
"state.Reactive<AetheriaRuntimeCurrentEntityDocument>()",
"state.Reactive<AetheriaRuntimeCurrentDockingDocument>()",
"state.Reactive<AetheriaRuntimeStationRefitDocument>()",
"_currentDocking?.Current",
"_stationRefit?.Current",
"public bool IsEntityUndocked(Entity entity)",
@ -14345,7 +14347,7 @@ static void RequireUnityObserverDoesNotTickLocalSimulation(string root)
"AetheriaRuntimeZoneContactRow",
"AetheriaRuntimeZoneTargetRow",
".State",
".Document<AetheriaRuntimeZoneContactsDocument>().Reactive()",
".Reactive<AetheriaRuntimeZoneContactsDocument>()",
"_zoneContacts?.Current",
"_zoneContacts?.Dispose()",
"_entityIndex.TryResolveEntityByDaemonIndex(targetEntityIndex, out var targetEntity)"
@ -14484,17 +14486,17 @@ static void RequireUnityObserverDoesNotTickLocalSimulation(string root)
var compactSectorRenderer = CompactSource(sectorRenderer);
var compactSectorMap = CompactSource(sectorMap);
if (!mapRenderer.Contains("AetheriaUnityRuntimeClientProvider.ResolveClient(", 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) ||
!compactMapRenderer.Contains(".State.Reactive<AetheriaRuntimeObjectsViewportDocument>(viewport)", StringComparison.Ordinal) ||
!compactMapRenderer.Contains(".State.Reactive<AetheriaRuntimeRenderSplatsViewportDocument>(viewport)", StringComparison.Ordinal) ||
!compactMapRenderer.Contains(".State.Reactive<AetheriaRuntimePlayerSettingsDocument>()", StringComparison.Ordinal) ||
!sectorRenderer.Contains("AetheriaUnityRuntimeClientProvider.ResolveClient(", StringComparison.Ordinal) ||
!compactSectorRenderer.Contains(".State.Document<AetheriaRuntimeSectorMapDocument>().Reactive()", StringComparison.Ordinal) ||
!compactSectorRenderer.Contains(".State.Document<AetheriaRuntimeZoneDetailsDocument>(zoneIndex).Reactive()", StringComparison.Ordinal) ||
!compactSectorRenderer.Contains(".State.Reactive<AetheriaRuntimeSectorMapDocument>()", StringComparison.Ordinal) ||
!compactSectorRenderer.Contains(".State.Reactive<AetheriaRuntimeZoneDetailsDocument>(zoneIndex)", StringComparison.Ordinal) ||
!sectorRenderer.Contains(".Current", StringComparison.Ordinal) ||
!compactSectorRenderer.Contains("ResolveClient().State.Document<AetheriaRuntimeCatalogSnapshot>().Reactive()", StringComparison.Ordinal) ||
!compactSectorRenderer.Contains(".State.Document<AetheriaRuntimePlayerSettingsDocument>().Reactive()", StringComparison.Ordinal) ||
!compactSectorRenderer.Contains("ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>()", StringComparison.Ordinal) ||
!compactSectorRenderer.Contains(".State.Reactive<AetheriaRuntimePlayerSettingsDocument>()", StringComparison.Ordinal) ||
!sectorMap.Contains("AetheriaUnityRuntimeClientProvider.ResolveClient(", StringComparison.Ordinal) ||
!compactSectorMap.Contains(".State.Document<AetheriaRuntimeSectorMapDocument>().Reactive()", StringComparison.Ordinal) ||
!compactSectorMap.Contains(".State.Reactive<AetheriaRuntimeSectorMapDocument>()", StringComparison.Ordinal) ||
!sectorRenderer.Contains("AetheriaRuntimeZoneDetailsSurfaceBuilder.ProjectDaemonZone(", StringComparison.Ordinal))
{
throw new InvalidOperationException(
@ -14513,7 +14515,7 @@ static void RequireUnityObserverDoesNotTickLocalSimulation(string root)
"SectorMap",
"AetheriaRuntimeSectorMapDocument",
"_sectorMapDocument",
".Document<AetheriaRuntimeSectorMapDocument>().Reactive()",
".Reactive<AetheriaRuntimeSectorMapDocument>()",
"AetheriaRuntimeSectorMapSession",
".ObserveSectorMap()");
@ -15151,7 +15153,7 @@ static void RequireUnityObserverDoesNotTickLocalSimulation(string root)
"TryStartDaemonObservedGame",
"ResolveSectorMap(stateBoot)",
".State",
".Document<AetheriaRuntimeSectorMapDocument>().Reactive()",
".Reactive<AetheriaRuntimeSectorMapDocument>()",
"sectorMap.FrameId",
"SceneManager.LoadScene(\"ARPG\")"
};
@ -16053,9 +16055,9 @@ static void RequireRuntimeStateReaderOwnsUnityStateAcquisition(string root)
"AetheriaRuntimeStateBoot.Inspect(AetheriaUnityRuntimePaths.GameDataDirectory)",
"AetheriaUnityRuntimeClientProvider.ResolveClient(stateBoot.StateFilePath, stateBoot.RuntimeId)",
".State",
".Document<AetheriaRuntimeCatalogSnapshot>().Reactive()",
".Reactive<AetheriaRuntimeCatalogSnapshot>()",
"runtimeCatalogDocument.Current",
".Document<AetheriaRuntimeSectorMapDocument>().Reactive()",
".Reactive<AetheriaRuntimeSectorMapDocument>()",
"sectorMapDocument.Current",
"new ItemManager(",
"new AetheriaUnityLoadoutItemFactory(itemManager, runtimeCatalog)",
@ -16098,7 +16100,7 @@ static void RequireRuntimeStateReaderOwnsUnityStateAcquisition(string root)
"RuntimeClients[cacheKey] = runtimeClient",
"AetheriaClient",
".State",
".Document<AetheriaRuntimePlayerSettingsDocument>().Reactive()",
".Reactive<AetheriaRuntimePlayerSettingsDocument>()",
"_playerSettingsDocument.Current",
"_playerSettingsDocument?.Dispose()",
"OpenAsync(",
@ -16230,7 +16232,7 @@ static void RequireRuntimeStateReaderOwnsUnityStateAcquisition(string root)
"public AetheriaClientState State => _state;",
"var frame = CurrentDaemonFrame();",
"private CultMeshReactiveDocument<AetheriaRuntimeDaemonFrameDocument>? _daemonFrame;",
"_daemonFrame ??= State.Document<AetheriaRuntimeDaemonFrameDocument>().Reactive();"
"_daemonFrame ??= State.Reactive<AetheriaRuntimeDaemonFrameDocument>();"
};
var missingManagedClientConnectionSymbols = requiredManagedClientConnectionSymbols
.Where(symbol => !aetheriaClient.Contains(symbol, StringComparison.Ordinal))
@ -16279,12 +16281,11 @@ static void RequireRuntimeStateReaderOwnsUnityStateAcquisition(string root)
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) ||
aetheriaClientState.Contains("DocumentBySchema(", StringComparison.Ordinal) ||
aetheriaClientState.Contains("TryGetDocumentBySchema(", StringComparison.Ordinal))
{
throw new InvalidOperationException(
"AetheriaClientState still exposes generic latest/reactive/watch or schema-string shortcuts instead of direct typed CultMesh document handles.");
"AetheriaClientState still exposes generic latest/watch or schema-string shortcuts instead of direct typed CultMesh document handles.");
}
if (aetheriaClientState.Contains("public AetheriaRuntimeDaemonRenderView? CurrentObservedDaemon(", StringComparison.Ordinal) ||
@ -16297,7 +16298,7 @@ static void RequireRuntimeStateReaderOwnsUnityStateAcquisition(string root)
var requiredManagedCommandFrameSymbols = new[]
{
"internal AetheriaRuntimeDaemonFrameDocument? CurrentDaemonFrame()",
"_daemonFrame ??= State.Document<AetheriaRuntimeDaemonFrameDocument>().Reactive();",
"_daemonFrame ??= State.Reactive<AetheriaRuntimeDaemonFrameDocument>();",
"return _daemonFrame.Current;",
"Func<AetheriaRuntimeDaemonOperationClient, AetheriaRuntimeDaemonFrameDocument?, AetheriaRuntimeDaemonCommandEnvelope> submit",
"frame?.SessionId ?? _sessionId"
@ -16313,9 +16314,9 @@ static void RequireRuntimeStateReaderOwnsUnityStateAcquisition(string root)
}
if (!daemonRuntimeDocumentTests.Contains("ManagedStateSamplesCurrentDaemonRenderViewFromReactiveDocuments()", 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("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("AetheriaRuntimeDaemonRenderView.TryCreateCurrent(", StringComparison.Ordinal) ||
daemonRuntimeDocumentTests.Contains("client.State.CurrentObservedDaemon()", StringComparison.Ordinal))
{
@ -16536,9 +16537,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.Document<AetheriaRuntimeDaemonFrameDocument>().Reactive();", StringComparison.Ordinal) ||
!daemonObserver.Contains("_daemonFrame ??= state.Reactive<AetheriaRuntimeDaemonFrameDocument>();", StringComparison.Ordinal) ||
!daemonObserver.Contains("_daemonSoaView ??= TryReactive<AetheriaRuntimeDaemonSoaViewDocument>(state);", StringComparison.Ordinal) ||
!daemonObserver.Contains("_zoneRender ??= state.Document<AetheriaRuntimeZoneRenderDocument>().Reactive();", StringComparison.Ordinal) ||
!daemonObserver.Contains("_zoneRender ??= state.Reactive<AetheriaRuntimeZoneRenderDocument>();", StringComparison.Ordinal) ||
!daemonObserver.Contains("AetheriaRuntimeDaemonRenderView.TryCreateCurrent(", StringComparison.Ordinal) ||
!daemonObserver.Contains("DisposeRenderViewDocuments()", StringComparison.Ordinal))
{
@ -16570,8 +16571,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(".Document<AetheriaRuntimeSectorMapDocument>().Reactive()", StringComparison.Ordinal) ||
!mainMenu.Contains(".Document<AetheriaRuntimePlayerSettingsDocument>().Reactive()", StringComparison.Ordinal))
!mainMenu.Contains(".Reactive<AetheriaRuntimeSectorMapDocument>()", StringComparison.Ordinal) ||
!mainMenu.Contains(".Reactive<AetheriaRuntimePlayerSettingsDocument>()", StringComparison.Ordinal))
{
throw new InvalidOperationException(
"MainMenu no longer routes sector-map lookup through the shared Aetheria client facade.");
@ -16598,9 +16599,9 @@ static void RequireRuntimeStateReaderOwnsUnityStateAcquisition(string root)
var requiredGameplayBootSymbols = new[]
{
".Document<AetheriaRuntimeCatalogSnapshot>().Reactive()",
".Reactive<AetheriaRuntimeCatalogSnapshot>()",
"runtimeCatalogDocument.Current",
".Document<AetheriaRuntimeSectorMapDocument>().Reactive()",
".Reactive<AetheriaRuntimeSectorMapDocument>()",
"sectorMapDocument.Current",
"Galaxy.ProjectObservedSectorMap(",
"sectorMap.IsTutorial",
@ -17441,8 +17442,7 @@ static void RequireInventoryDoubleClickTransferRequestAuthority(string root)
"TryResolveTypedInventoryRows(",
"TryValidateTypedCargoSlot(",
"TryValidateTypedEquipmentSlot(",
".Document<AetheriaRuntimeInventoryDocument>(entityIndex)",
".Reactive()",
".State.Reactive<AetheriaRuntimeInventoryDocument>(entityIndex)",
"origin.Cargo.TryGetValue(item, out var originPosition)",
"SourceIndex == cargoIndex",
"SourceIndex == equipmentIndex",
@ -17995,7 +17995,7 @@ static void RequireInventoryLoadoutSaveRequestAuthority(string root)
"CultMeshReactiveDocument<AetheriaRuntimeDaemonFrameDocument> _loadoutFrame",
"CreateLoadoutTemplate(targetEntityKey)",
".CreateLoadoutTemplate(targetEntityKey ?? \"\")",
".Document<AetheriaRuntimeDaemonFrameDocument>().Reactive()",
".Reactive<AetheriaRuntimeDaemonFrameDocument>()",
"_loadoutFrame?.Dispose()",
".Ui.SaveLoadoutTemplateAsync(loadout, \"unity-inventory\")"
};
@ -18021,7 +18021,7 @@ static void RequireInventoryLoadoutSaveRequestAuthority(string root)
"InventoryPanel",
"AetheriaRuntimeDaemonFrameDocument",
"_loadoutFrame",
".Document<AetheriaRuntimeDaemonFrameDocument>().Reactive()",
".Reactive<AetheriaRuntimeDaemonFrameDocument>()",
"AetheriaRuntimeDaemonFrameSession",
".ObserveDaemonFrame()");
@ -18062,7 +18062,7 @@ static void RequireInventoryLoadoutSaveRequestAuthority(string root)
if (snapshotDocuments.Contains("ProjectLoadoutTemplateAsync(", StringComparison.Ordinal) ||
snapshotDocuments.Contains("AetheriaClientState state", StringComparison.Ordinal) ||
snapshotDocuments.Contains(".Document<AetheriaRuntimeDaemonFrameDocument>().Reactive()", StringComparison.Ordinal) ||
snapshotDocuments.Contains(".Reactive<AetheriaRuntimeDaemonFrameDocument>()", StringComparison.Ordinal) ||
snapshotDocuments.Contains("frame.Current?.Run", StringComparison.Ordinal))
{
throw new InvalidOperationException(

View file

@ -95,7 +95,7 @@ public abstract class ActionBarBinding : IDisposable
try
{
_catalog ??= Client.State.Document<AetheriaRuntimeCatalogSnapshot>().Reactive();
_catalog ??= Client.State.Reactive<AetheriaRuntimeCatalogSnapshot>();
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.Document<AetheriaRuntimeDaemonFrameDocument>().Reactive();
_daemonFrame ??= state.Reactive<AetheriaRuntimeDaemonFrameDocument>();
_daemonSoaView ??= TryReactive<AetheriaRuntimeDaemonSoaViewDocument>(state);
_zoneRender ??= state.Document<AetheriaRuntimeZoneRenderDocument>().Reactive();
_zoneRender ??= state.Reactive<AetheriaRuntimeZoneRenderDocument>();
}
private static CultMeshReactiveDocument<TDocument> TryReactive<TDocument>(
@ -142,7 +142,7 @@ public sealed class AetheriaDaemonObserver : MonoBehaviour
{
try
{
return state.Document<TDocument>().Reactive();
return state.Reactive<TDocument>();
}
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.Document<AetheriaRuntimeCatalogSnapshot>().Reactive();
using var runtimeCatalogDocument = aetheria.Reactive<AetheriaRuntimeCatalogSnapshot>();
var runtimeCatalog = runtimeCatalogDocument.Current;
if (runtimeCatalog == null)
throw new InvalidOperationException("Aetheria typed runtime catalog is required before gameplay boot.");
using var sectorMapDocument = aetheria.Document<AetheriaRuntimeSectorMapDocument>().Reactive();
using var sectorMapDocument = aetheria.Reactive<AetheriaRuntimeSectorMapDocument>();
var sectorMap = sectorMapDocument.Current;
if (sectorMap == null)
throw new InvalidOperationException("Aetheria typed sector map is required before gameplay boot.");

View file

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

View file

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

View file

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

View file

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

View file

@ -201,35 +201,35 @@ public class DaemonRuntimeDocumentTests
.ReactiveAsync()
.GetAwaiter()
.GetResult();
using var zoneRenderReactive = client.State.Document<AetheriaRuntimeZoneRenderDocument>().Reactive();
using var zoneRenderReactive = client.State.Reactive<AetheriaRuntimeZoneRenderDocument>();
var observedAuthoritativeFrame = ReadLatest(client.State.Document<AetheriaRuntimeDaemonFrameDocument>());
using var catalogReactive = client.State.Document<AetheriaRuntimeCatalogSnapshot>().Reactive();
using var daemonFrameReactive = client.State.Document<AetheriaRuntimeDaemonFrameDocument>().Reactive();
using var daemonSoaViewReactive = client.State.Document<AetheriaRuntimeDaemonSoaViewDocument>().Reactive();
using var catalogReactive = client.State.Reactive<AetheriaRuntimeCatalogSnapshot>();
using var daemonFrameReactive = client.State.Reactive<AetheriaRuntimeDaemonFrameDocument>();
using var daemonSoaViewReactive = client.State.Reactive<AetheriaRuntimeDaemonSoaViewDocument>();
Assert.IsTrue(AetheriaRuntimeDaemonRenderView.TryCreateCurrent(
daemonFrameReactive,
daemonSoaViewReactive,
zoneRenderReactive,
out var observed));
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();
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>();
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));
@ -243,10 +243,10 @@ public class DaemonRuntimeDocumentTests
Assert.AreEqual(currentEntity.EntityKey, currentEntityDocumentReactive.Current.EntityKey);
Assert.AreEqual(currentDocking.CurrentEntityKey, currentDockingReactive.Current.CurrentEntityKey);
Assert.AreEqual(stationRefit.StationEntityKey, stationRefitReactive.Current.StationEntityKey);
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();
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);
Assert.AreEqual("aetheria.current.entity", client.State.CurrentEntity.DocumentId);
Assert.AreSame(client.State.CurrentEntity, client.State.Document<AetheriaRuntimeCurrentEntityDocument>());
@ -2210,9 +2210,9 @@ public class DaemonRuntimeDocumentTests
.OpenAsync(statePath, "unity-observer-test", pullOnOpen: true)
.GetAwaiter()
.GetResult();
using var observedFrame = client.State.Document<AetheriaRuntimeDaemonFrameDocument>().Reactive();
using var observedSoaView = client.State.Document<AetheriaRuntimeDaemonSoaViewDocument>().Reactive();
using var observedZoneRender = client.State.Document<AetheriaRuntimeZoneRenderDocument>().Reactive();
using var observedFrame = client.State.Reactive<AetheriaRuntimeDaemonFrameDocument>();
using var observedSoaView = client.State.Reactive<AetheriaRuntimeDaemonSoaViewDocument>();
using var observedZoneRender = client.State.Reactive<AetheriaRuntimeZoneRenderDocument>();
Assert.IsTrue(AetheriaRuntimeDaemonRenderView.TryCreateCurrent(
observedFrame,
observedSoaView,
@ -2268,9 +2268,9 @@ public class DaemonRuntimeDocumentTests
.OpenAsync(statePath, "unity-reactive-observer-test", pullOnOpen: true)
.GetAwaiter()
.GetResult();
using var observedFrame = client.State.Document<AetheriaRuntimeDaemonFrameDocument>().Reactive();
using var observedSoaView = client.State.Document<AetheriaRuntimeDaemonSoaViewDocument>().Reactive();
using var observedZoneRender = client.State.Document<AetheriaRuntimeZoneRenderDocument>().Reactive();
using var observedFrame = client.State.Reactive<AetheriaRuntimeDaemonFrameDocument>();
using var observedSoaView = client.State.Reactive<AetheriaRuntimeDaemonSoaViewDocument>();
using var observedZoneRender = client.State.Reactive<AetheriaRuntimeZoneRenderDocument>();
var observed = AetheriaRuntimeDaemonRenderView.TryCreateCurrent(
observedFrame,
observedSoaView,
@ -2315,9 +2315,9 @@ public class DaemonRuntimeDocumentTests
.OpenAsync(statePath, "unity-frame-only-observer-test", pullOnOpen: true)
.GetAwaiter()
.GetResult();
using var observedFrame = client.State.Document<AetheriaRuntimeDaemonFrameDocument>().Reactive();
using var observedSoaView = client.State.Document<AetheriaRuntimeDaemonSoaViewDocument>().Reactive();
using var observedZoneRender = client.State.Document<AetheriaRuntimeZoneRenderDocument>().Reactive();
using var observedFrame = client.State.Reactive<AetheriaRuntimeDaemonFrameDocument>();
using var observedSoaView = client.State.Reactive<AetheriaRuntimeDaemonSoaViewDocument>();
using var observedZoneRender = client.State.Reactive<AetheriaRuntimeZoneRenderDocument>();
Assert.IsTrue(AetheriaRuntimeDaemonRenderView.TryCreateCurrent(
observedFrame,
observedSoaView,

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1504,7 +1504,7 @@ private void Update()
try
{
_currentEntity = ResolveClient()
.State.Document<AetheriaRuntimeCurrentEntityDocument>().Reactive();
.State.Reactive<AetheriaRuntimeCurrentEntityDocument>();
}
catch (Exception ex)
{
@ -1522,7 +1522,7 @@ private void Update()
try
{
_stationRefit = ResolveClient()
.State.Document<AetheriaRuntimeStationRefitDocument>().Reactive();
.State.Reactive<AetheriaRuntimeStationRefitDocument>();
}
catch (Exception ex)
{
@ -1547,7 +1547,7 @@ private void Update()
try
{
_loadoutFrame = ResolveClient()
.State.Document<AetheriaRuntimeDaemonFrameDocument>().Reactive();
.State.Reactive<AetheriaRuntimeDaemonFrameDocument>();
}
catch (Exception ex)
{
@ -1565,9 +1565,7 @@ private void Update()
try
{
var nextInventory = ResolveClient()
.State
.Document<AetheriaRuntimeInventoryDocument>(entityIndex)
.Reactive();
.State.Reactive<AetheriaRuntimeInventoryDocument>(entityIndex);
_inventory?.Dispose();
_inventoryEntityIndex = entityIndex;
_inventory = nextInventory;
@ -1587,7 +1585,7 @@ private void Update()
try
{
_catalog = ResolveClient().State.Document<AetheriaRuntimeCatalogSnapshot>().Reactive();
_catalog = ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>();
}
catch (Exception ex)
{
@ -1605,7 +1603,7 @@ private void Update()
try
{
_playerSettings = ResolveClient()
.State.Document<AetheriaRuntimePlayerSettingsDocument>().Reactive();
.State.Reactive<AetheriaRuntimePlayerSettingsDocument>();
}
catch (Exception ex)
{

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1208,7 +1208,7 @@ public class ZoneRenderer : MonoBehaviour
try
{
_catalog = ResolveClient().State.Document<AetheriaRuntimeCatalogSnapshot>().Reactive();
_catalog = ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>();
}
catch (Exception ex)
{
@ -1225,7 +1225,7 @@ public class ZoneRenderer : MonoBehaviour
try
{
_zoneContacts = ResolveClient().State.Document<AetheriaRuntimeZoneContactsDocument>().Reactive();
_zoneContacts = ResolveClient().State.Reactive<AetheriaRuntimeZoneContactsDocument>();
}
catch (Exception ex)
{
@ -1244,9 +1244,7 @@ public class ZoneRenderer : MonoBehaviour
try
{
var nextObjectsViewport = ResolveClient()
.State
.Document<AetheriaRuntimeObjectsViewportDocument>(viewportBounds)
.Reactive();
.State.Reactive<AetheriaRuntimeObjectsViewportDocument>(viewportBounds);
_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.Document<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.Game).Reactive();
return client.State.Reactive<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.Game);
if (string.Equals(surfaceId, AetheriaRuntimeDaemonGameSurfaceBuilder.TuiSurfaceId, StringComparison.Ordinal))
return client.State.Document<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.GameTui).Reactive();
return client.State.Reactive<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.GameTui);
if (string.Equals(surfaceId, AetheriaRuntimeDaemonEditorSurfaceBuilder.SurfaceId, StringComparison.Ordinal))
return client.State.Document<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.Editor).Reactive();
return client.State.Reactive<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.Editor);
if (string.Equals(surfaceId, AetheriaRuntimeDaemonEditorSurfaceBuilder.TuiSurfaceId, StringComparison.Ordinal))
return client.State.Document<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.EditorTui).Reactive();
return client.State.Reactive<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.EditorTui);
return null;
}

View file

@ -180,7 +180,7 @@ namespace GameCult.Aetheria.State.Verse
ThrowIfDisposed();
try
{
_daemonFrame ??= State.Document<AetheriaRuntimeDaemonFrameDocument>().Reactive();
_daemonFrame ??= State.Reactive<AetheriaRuntimeDaemonFrameDocument>();
return _daemonFrame.Current;
}
catch

View file

@ -187,6 +187,12 @@ namespace GameCult.Aetheria.State.Verse
$"Aetheria typed state does not expose a projected document for {typeof(TDocument).FullName}.");
}
public CultMeshReactiveDocument<TDocument> Reactive<TDocument>()
where TDocument : class
{
return Document<TDocument>().Reactive();
}
public CultMeshDocumentHandle<TDocument> Document<TDocument>(AetheriaClientEveSurface surface)
where TDocument : class
{
@ -205,6 +211,12 @@ namespace GameCult.Aetheria.State.Verse
return (CultMeshDocumentHandle<TDocument>)(object)document;
}
public CultMeshReactiveDocument<TDocument> Reactive<TDocument>(AetheriaClientEveSurface surface)
where TDocument : class
{
return Document<TDocument>(surface).Reactive();
}
public CultMeshDocumentHandle<TDocument> Document<TDocument>(AetheriaRuntimeRtsViewportBounds viewport)
where TDocument : class
{
@ -223,6 +235,12 @@ namespace GameCult.Aetheria.State.Verse
$"Aetheria typed state does not expose a viewport document for {typeof(TDocument).FullName}.");
}
public CultMeshReactiveDocument<TDocument> Reactive<TDocument>(AetheriaRuntimeRtsViewportBounds viewport)
where TDocument : class
{
return Document<TDocument>(viewport).Reactive();
}
public CultMeshDocumentHandle<TDocument> Document<TDocument>(int entityOrZoneIndex)
where TDocument : class
{
@ -237,6 +255,12 @@ namespace GameCult.Aetheria.State.Verse
$"Aetheria typed state does not expose an indexed document for {typeof(TDocument).FullName}.");
}
public CultMeshReactiveDocument<TDocument> Reactive<TDocument>(int entityOrZoneIndex)
where TDocument : class
{
return Document<TDocument>(entityOrZoneIndex).Reactive();
}
public CultMeshDocumentHandle<TDocument> Document<TDocument>(string seatId)
where TDocument : class
{
@ -249,12 +273,18 @@ namespace GameCult.Aetheria.State.Verse
return (CultMeshDocumentHandle<TDocument>)(object)_starbridgePlayerSeat(seatId);
}
public CultMeshReactiveDocument<TDocument> Reactive<TDocument>(string seatId)
where TDocument : class
{
return Document<TDocument>(seatId).Reactive();
}
public CultMeshStateRefResolver CreateEveSurfaceCultMeshStateRefResolver()
{
_eveStateRefFrame ??= Document<AetheriaRuntimeDaemonFrameDocument>().Reactive();
_eveStateRefHealth ??= Document<AetheriaRuntimeDaemonHealthDocument>().Reactive();
_eveStateRefCommandBoundary ??= Document<AetheriaRuntimeDaemonCommandBoundaryDocument>().Reactive();
_eveStateRefCatalog ??= Document<AetheriaRuntimeCatalogSnapshot>().Reactive();
_eveStateRefFrame ??= Reactive<AetheriaRuntimeDaemonFrameDocument>();
_eveStateRefHealth ??= Reactive<AetheriaRuntimeDaemonHealthDocument>();
_eveStateRefCommandBoundary ??= Reactive<AetheriaRuntimeDaemonCommandBoundaryDocument>();
_eveStateRefCatalog ??= Reactive<AetheriaRuntimeCatalogSnapshot>();
return AetheriaRuntimeStateRefResolver.CreateEveSurfaceCultMeshStateRefResolver(
() => _eveStateRefFrame.Current,

View file

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