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
|
|
@ -106,11 +106,6 @@ internal sealed class LiveEntityRuntimeTeardownController
|
|||
{
|
||||
LiveEntityRuntime runtime = _runtime!;
|
||||
uint serverGuid = record.ServerGuid;
|
||||
var incarnation = new LiveEntityIncarnationCleanup(
|
||||
record,
|
||||
guid => runtime.TryGetRecord(guid, out LiveEntityRecord current)
|
||||
? current
|
||||
: null);
|
||||
var cleanups = new List<Action>
|
||||
{
|
||||
() => _presentation!.Forget(record),
|
||||
|
|
@ -152,17 +147,17 @@ internal sealed class LiveEntityRuntimeTeardownController
|
|||
cleanups.Add(physicsHost.NotifyExitWorld);
|
||||
}
|
||||
|
||||
cleanups.Add(() => _animations.Remove(existingEntity.Id));
|
||||
cleanups.Add(() => _animations.Remove(record));
|
||||
cleanups.Add(() => _classification!.InvalidateEntity(existingEntity.Id));
|
||||
cleanups.Add(() => incarnation.RunIfNoReplacement(
|
||||
() => _remoteMovementObservations!.Remove(serverGuid)));
|
||||
if (record.ProjectionKey is { } projectionKey)
|
||||
cleanups.Add(() => _remoteMovementObservations!.Remove(projectionKey));
|
||||
cleanups.Add(() => _translucencyFades!.ClearEntity(existingEntity.Id));
|
||||
cleanups.Add(() => _projectionWithdrawal!.LeaveWorld(
|
||||
record,
|
||||
_identity!.ServerGuid));
|
||||
cleanups.Add(() => _children!.OnLogicalTeardown(record));
|
||||
cleanups.Add(() => _shadows!.Deregister(existingEntity.Id));
|
||||
cleanups.Add(() => _lights!.Forget(existingEntity.Id));
|
||||
cleanups.Add(() => _lights!.Forget(record));
|
||||
return new LiveEntityTeardownPlan(cleanups);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue