diff --git a/Aetheria.State.Verify/Program.cs b/Aetheria.State.Verify/Program.cs index b49943374..2fb33e01e 100644 --- a/Aetheria.State.Verify/Program.cs +++ b/Aetheria.State.Verify/Program.cs @@ -15387,7 +15387,7 @@ static void RequireRuntimeStateReaderOwnsUnityStateAcquisition(string root) !observedFrameApplier.Contains("ApplyLatestZoneRender()", StringComparison.Ordinal) || !observedFrameApplier.Contains("observer.LastObservedState?.ZoneRender", StringComparison.Ordinal) || !observedDaemonState.Contains("public AetheriaRuntimeZoneRenderDocument ZoneRender { get; }", StringComparison.Ordinal) || - !observedDaemonState.Contains("CultMeshReactiveDocument zoneRender", StringComparison.Ordinal) || + !observedDaemonState.Contains("AetheriaRuntimeZoneRenderSession zoneRender", StringComparison.Ordinal) || !observedDaemonState.Contains("var currentZoneRender = zoneRender?.Current;", StringComparison.Ordinal) || !observedDaemonState.Contains("new AetheriaRuntimeObservedDaemonState(currentFrame, currentSoaView, currentZoneRender)", StringComparison.Ordinal) || !aetheriaClientState.Contains("var zoneRender = await LatestZoneRenderAsync().ConfigureAwait(false);", StringComparison.Ordinal) || @@ -15517,10 +15517,13 @@ static void RequireRuntimeStateReaderOwnsUnityStateAcquisition(string root) { "public AetheriaRuntimeObservedDaemonState? CurrentObservedDaemon(", "public AetheriaRuntimeObservedDaemonSession ObserveDaemon(", - "using var frame = ReactiveDaemonFrame(options);", - "using var soaView = TryReactiveDaemonSoaView(options);", - "using var zoneRender = ReactiveZoneRender(options);", + "using var frame = ObserveDaemonFrame(options);", + "using var soaView = TryObserveDaemonSoaView(options);", + "using var zoneRender = ObserveZoneRender(options);", "AetheriaRuntimeObservedDaemonState.TryCreateCurrent(frame, soaView, zoneRender, out var current)", + "var frame = ObserveDaemonFrame(options);", + "AetheriaRuntimeDaemonSoaViewSession? soaView = null;", + "AetheriaRuntimeZoneRenderSession? zoneRender = null;", "return new AetheriaRuntimeObservedDaemonSession(frame, soaView, zoneRender);" }; var missingManagedObservedDaemonSymbols = requiredManagedObservedDaemonSymbols @@ -15545,13 +15548,16 @@ static void RequireRuntimeStateReaderOwnsUnityStateAcquisition(string root) { "AetheriaRuntimeDaemonSoaViewIndex.Build(soaView)", "public static bool TryCreateCurrent(", - "CultMeshReactiveDocument frame", - "CultMeshReactiveDocument? soaView", - "CultMeshReactiveDocument zoneRender", + "AetheriaRuntimeDaemonFrameSession frame", + "AetheriaRuntimeDaemonSoaViewSession? soaView", + "AetheriaRuntimeZoneRenderSession zoneRender", "var currentFrame = frame?.Current;", "var currentZoneRender = zoneRender?.Current;", "new AetheriaRuntimeObservedDaemonState(currentFrame, currentSoaView, currentZoneRender)", "public sealed class AetheriaRuntimeObservedDaemonSession", + "private readonly AetheriaRuntimeDaemonFrameSession _frame;", + "private readonly AetheriaRuntimeDaemonSoaViewSession? _soaView;", + "private readonly AetheriaRuntimeZoneRenderSession _zoneRender;", "public AetheriaRuntimeObservedDaemonState? Current =>", "_frame.Dispose();", "_soaView?.Dispose();", @@ -15567,6 +15573,16 @@ static void RequireRuntimeStateReaderOwnsUnityStateAcquisition(string root) string.Join(", ", missingObservedDaemonStateSymbols)); } + if (observedDaemonState.Contains("CultMeshReactiveDocument", StringComparison.Ordinal) || + observedDaemonState.Contains("CultMeshReactiveDocument", StringComparison.Ordinal) || + observedDaemonState.Contains("CultMeshReactiveDocument", StringComparison.Ordinal) || + observedDaemonState.Contains("using GameCult.Mesh;", StringComparison.Ordinal) || + aetheriaClientState.Contains("TryReactiveDaemonSoaView(options)", StringComparison.Ordinal)) + { + throw new InvalidOperationException( + "Observed daemon state must compose named managed sessions instead of owning raw reactive CultMesh documents."); + } + var forbiddenObservedDaemonStateSymbols = new[] { "string statePath", diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaClientState.cs b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaClientState.cs index 756266448..5c421faa8 100644 --- a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaClientState.cs +++ b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaClientState.cs @@ -277,9 +277,9 @@ namespace GameCult.Aetheria.State.Verse public AetheriaRuntimeObservedDaemonState? CurrentObservedDaemon( CultMeshReactiveDocumentOptions? options = null) { - using var frame = ReactiveDaemonFrame(options); - using var soaView = TryReactiveDaemonSoaView(options); - using var zoneRender = ReactiveZoneRender(options); + using var frame = ObserveDaemonFrame(options); + using var soaView = TryObserveDaemonSoaView(options); + using var zoneRender = ObserveZoneRender(options); return AetheriaRuntimeObservedDaemonState.TryCreateCurrent(frame, soaView, zoneRender, out var current) ? current : null; @@ -288,13 +288,13 @@ namespace GameCult.Aetheria.State.Verse public AetheriaRuntimeObservedDaemonSession ObserveDaemon( CultMeshReactiveDocumentOptions? options = null) { - var frame = ReactiveDaemonFrame(options); - CultMeshReactiveDocument? soaView = null; - CultMeshReactiveDocument? zoneRender = null; + var frame = ObserveDaemonFrame(options); + AetheriaRuntimeDaemonSoaViewSession? soaView = null; + AetheriaRuntimeZoneRenderSession? zoneRender = null; try { - soaView = TryReactiveDaemonSoaView(options); - zoneRender = ReactiveZoneRender(options); + soaView = TryObserveDaemonSoaView(options); + zoneRender = ObserveZoneRender(options); return new AetheriaRuntimeObservedDaemonSession(frame, soaView, zoneRender); } catch @@ -338,12 +338,12 @@ namespace GameCult.Aetheria.State.Verse } } - private CultMeshReactiveDocument? TryReactiveDaemonSoaView( + private AetheriaRuntimeDaemonSoaViewSession? TryObserveDaemonSoaView( CultMeshReactiveDocumentOptions? options) { try { - return ReactiveDaemonSoaView(options); + return ObserveDaemonSoaView(options); } catch (KeyNotFoundException) { diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeObservedDaemonState.cs b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeObservedDaemonState.cs index 73230cf51..e6199bee7 100644 --- a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeObservedDaemonState.cs +++ b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeObservedDaemonState.cs @@ -1,5 +1,4 @@ using System; -using GameCult.Mesh; #nullable enable @@ -27,9 +26,9 @@ namespace GameCult.Aetheria.State.Verse public AetheriaRuntimeRunCheckpointCommit Run => Frame.Run; public static bool TryCreateCurrent( - CultMeshReactiveDocument frame, - CultMeshReactiveDocument? soaView, - CultMeshReactiveDocument zoneRender, + AetheriaRuntimeDaemonFrameSession frame, + AetheriaRuntimeDaemonSoaViewSession? soaView, + AetheriaRuntimeZoneRenderSession zoneRender, out AetheriaRuntimeObservedDaemonState? observed) { observed = null; @@ -60,14 +59,14 @@ namespace GameCult.Aetheria.State.Verse public sealed class AetheriaRuntimeObservedDaemonSession : IDisposable { - private readonly CultMeshReactiveDocument _frame; - private readonly CultMeshReactiveDocument? _soaView; - private readonly CultMeshReactiveDocument _zoneRender; + private readonly AetheriaRuntimeDaemonFrameSession _frame; + private readonly AetheriaRuntimeDaemonSoaViewSession? _soaView; + private readonly AetheriaRuntimeZoneRenderSession _zoneRender; public AetheriaRuntimeObservedDaemonSession( - CultMeshReactiveDocument frame, - CultMeshReactiveDocument? soaView, - CultMeshReactiveDocument zoneRender) + AetheriaRuntimeDaemonFrameSession frame, + AetheriaRuntimeDaemonSoaViewSession? soaView, + AetheriaRuntimeZoneRenderSession zoneRender) { _frame = frame ?? throw new ArgumentNullException(nameof(frame)); _soaView = soaView;