Route observed docking through managed sessions

This commit is contained in:
Meta Vens 2026-06-28 15:00:12 +01:00
commit 2c68dcc59e
3 changed files with 18 additions and 7 deletions

View file

@ -8018,6 +8018,9 @@ static void RequireAetheriaManagedStateAccessorsCoverDomainDocuments(string root
var observedDockingState = File.ReadAllText(observedDockingStatePath);
if (!observedDockingState.Contains("public sealed class AetheriaRuntimeObservedDockingState", StringComparison.Ordinal) ||
!observedDockingState.Contains("public static bool TryCreateCurrent(", StringComparison.Ordinal) ||
!observedDockingState.Contains("AetheriaRuntimeCurrentEntitySession? entity", StringComparison.Ordinal) ||
!observedDockingState.Contains("AetheriaRuntimeCurrentDockingSession docking", StringComparison.Ordinal) ||
!observedDockingState.Contains("AetheriaRuntimeStationRefitSession refit", StringComparison.Ordinal) ||
!observedDockingState.Contains("new AetheriaRuntimeObservedDockingState(", StringComparison.Ordinal) ||
!observedDockingState.Contains("TryResolveCurrentDockingBayRow(", StringComparison.Ordinal))
{
@ -8025,6 +8028,15 @@ static void RequireAetheriaManagedStateAccessorsCoverDomainDocuments(string root
"Observed docking state must compose current entity, docking, and station-refit documents inside the managed state package.");
}
if (observedDockingState.Contains("CultMeshReactiveDocument<AetheriaRuntimeCurrentEntityDocument>", StringComparison.Ordinal) ||
observedDockingState.Contains("CultMeshReactiveDocument<AetheriaRuntimeCurrentDockingDocument>", StringComparison.Ordinal) ||
observedDockingState.Contains("CultMeshReactiveDocument<AetheriaRuntimeStationRefitDocument>", StringComparison.Ordinal) ||
observedDockingState.Contains("using GameCult.Mesh;", StringComparison.Ordinal))
{
throw new InvalidOperationException(
"Observed docking state must sample named managed sessions instead of owning raw reactive CultMesh documents.");
}
if (observedDaemonState.Contains("state.LatestFrame.ReactiveAsync", StringComparison.Ordinal) ||
observedDaemonState.Contains("state.LatestSoaView.ReactiveAsync", StringComparison.Ordinal) ||
observedDaemonState.Contains("AetheriaRuntimeReactiveObservedDaemonState", StringComparison.Ordinal) ||

View file

@ -309,9 +309,9 @@ namespace GameCult.Aetheria.State.Verse
public AetheriaRuntimeObservedDockingState? CurrentDocking(
CultMeshReactiveDocumentOptions? options = null)
{
using var entity = Current.ReactiveEntity(options);
using var docking = Current.ReactiveDocking(options);
using var refit = ReactiveStationRefit(options);
using var entity = Current.ObserveEntity(options);
using var docking = Current.ObserveDocking(options);
using var refit = ObserveStationRefit(options);
return AetheriaRuntimeObservedDockingState.TryCreateCurrent(entity, docking, refit, out var current)
? current
: null;

View file

@ -1,6 +1,5 @@
using System;
using System.Linq;
using GameCult.Mesh;
#nullable enable
@ -46,9 +45,9 @@ namespace GameCult.Aetheria.State.Verse
}
public static bool TryCreateCurrent(
CultMeshReactiveDocument<AetheriaRuntimeCurrentEntityDocument>? entity,
CultMeshReactiveDocument<AetheriaRuntimeCurrentDockingDocument> docking,
CultMeshReactiveDocument<AetheriaRuntimeStationRefitDocument> refit,
AetheriaRuntimeCurrentEntitySession? entity,
AetheriaRuntimeCurrentDockingSession docking,
AetheriaRuntimeStationRefitSession refit,
out AetheriaRuntimeObservedDockingState? observed)
{
observed = null;