refactor(app): key live projections by runtime identity
Move materialized live-object sidecars and presentation worksets to exact RuntimeEntityKey ownership. Runtime remains the only GUID/incarnation/local-ID authority while hydration, animation, effects, lights, equipped children, renderer resources, visibility, liveness, and teardown resolve exact projection identities. Preserve synchronous callbacks, local-ID allocation order, and current rendering behavior.
This commit is contained in:
parent
e18df84437
commit
420e5eea70
73 changed files with 2939 additions and 1715 deletions
|
|
@ -1089,13 +1089,14 @@ public sealed class RemoteTeleportControllerTests
|
|||
const uint sourceCell = 0xA9B40039u;
|
||||
const uint destinationCell = 0xAAB40001u;
|
||||
RemoteTeleportController? controller = null;
|
||||
LiveEntityRecord? owner = null;
|
||||
bool cleanupAfterFailureRan = false;
|
||||
var resources = new DelegateLiveEntityResourceLifecycle(
|
||||
_ => { },
|
||||
_ => LiveEntityTeardown.Run(
|
||||
[
|
||||
() => throw new InvalidOperationException("effect teardown failed"),
|
||||
() => controller!.Forget(guid),
|
||||
() => controller!.Forget(owner!),
|
||||
() => cleanupAfterFailureRan = true,
|
||||
]));
|
||||
var spatial = new GpuWorldState();
|
||||
|
|
@ -1117,6 +1118,7 @@ public sealed class RemoteTeleportControllerTests
|
|||
var remote = new AcDream.App.Physics.RemoteMotion();
|
||||
remote.Body.SnapToCell(sourceCell, entity.Position, entity.Position);
|
||||
live.SetRemoteMotionRuntime(guid, remote);
|
||||
Assert.True(live.TryGetRecord(guid, out owner));
|
||||
controller = new RemoteTeleportController(
|
||||
BuildEngine(includeDestination: false),
|
||||
live,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue