refactor(runtime): cut graphical host over to canonical root
Make every App composition phase borrow one GameRuntime, retire the duplicate view/event adapters, and dispose the root only after its graphical borrowers release. This preserves synchronous UI commands while giving shutdown one exact ownership ledger. Co-authored-by: OpenAI Codex <codex@openai.com>
This commit is contained in:
parent
ecb9f79444
commit
ce41efb9e5
29 changed files with 613 additions and 778 deletions
|
|
@ -25,6 +25,7 @@ using AcDream.Core.Rendering;
|
|||
using AcDream.Core.Selection;
|
||||
using AcDream.Core.Vfx;
|
||||
using AcDream.Core.World;
|
||||
using AcDream.Runtime;
|
||||
using AcDream.Runtime.Entities;
|
||||
using AcDream.Runtime.World;
|
||||
using DatReaderWriter;
|
||||
|
|
@ -45,8 +46,7 @@ internal sealed record LivePresentationDependencies(
|
|||
PhysicsDataCache PhysicsDataCache,
|
||||
WorldGameState WorldGameState,
|
||||
WorldEvents WorldEvents,
|
||||
SelectionState Selection,
|
||||
RuntimeEntityObjectLifetime EntityObjects,
|
||||
GameRuntime Runtime,
|
||||
LiveEntityRuntimeSlot RuntimeSlot,
|
||||
DeferredLiveEntityMotionRuntimeBindings MotionBindings,
|
||||
DeferredEntityEffectAdvanceSource EffectAdvance,
|
||||
|
|
@ -61,7 +61,6 @@ internal sealed record LivePresentationDependencies(
|
|||
CellVisibility CellVisibility,
|
||||
LiveWorldOriginState WorldOrigin,
|
||||
LocalPlayerIdentityState PlayerIdentity,
|
||||
RuntimeLocalPlayerMovementState PlayerController,
|
||||
PointerPositionState PointerPosition,
|
||||
PlayerApproachCompletionState PlayerApproachCompletions,
|
||||
GameRenderResourceLifetime RenderResourceLifetime,
|
||||
|
|
@ -73,7 +72,18 @@ internal sealed record LivePresentationDependencies(
|
|||
DeferredRenderFrameDiagnosticsSource? DevFrameDiagnostics,
|
||||
DeferredRenderFrameDiagnosticsSource UiFrameDiagnostics,
|
||||
Action<string> Log,
|
||||
Action<string>? Toast);
|
||||
Action<string>? Toast)
|
||||
{
|
||||
public SelectionState Selection => Runtime.ActionOwner.Selection;
|
||||
|
||||
public RuntimeEntityObjectLifetime EntityObjects =>
|
||||
Runtime.EntityObjects;
|
||||
|
||||
public RuntimeWorldTransitState WorldTransit => Runtime.TransitOwner;
|
||||
|
||||
public RuntimeLocalPlayerMovementState PlayerController =>
|
||||
Runtime.MovementOwner;
|
||||
}
|
||||
|
||||
internal sealed record LivePresentationResult(
|
||||
DeferredLiveEntityRuntimeComponentLifecycle ComponentLifecycle,
|
||||
|
|
@ -336,7 +346,7 @@ internal sealed class LivePresentationCompositionPhase
|
|||
staticAnimationScheduler.Unregister,
|
||||
(entity, info) => staticAnimationScheduler.Rebind(entity, info));
|
||||
|
||||
var worldTransit = new RuntimeWorldTransitState(d.Log);
|
||||
RuntimeWorldTransitState worldTransit = d.WorldTransit;
|
||||
var worldAvailability =
|
||||
new WorldGenerationAvailabilityState(worldTransit);
|
||||
var worldState = new GpuWorldState(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue