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
|
|
@ -349,7 +349,19 @@ internal sealed class LivePresentationCompositionPhase
|
|||
new List<CompositeLiveEntityResourceLifecycle.Owner>
|
||||
{
|
||||
new(
|
||||
entity => _ = entitySpawnAdapter.OnCreate(entity),
|
||||
entity =>
|
||||
{
|
||||
if (liveEntities is null
|
||||
|| !liveEntities.TryGetRecordByLocalEntityId(
|
||||
entity.Id,
|
||||
out LiveEntityRecord record)
|
||||
|| record.ProjectionKey is not { } key)
|
||||
{
|
||||
throw new InvalidOperationException(
|
||||
"Live presentation registration requires an exact Runtime projection key.");
|
||||
}
|
||||
_ = entitySpawnAdapter.OnCreate(key, entity);
|
||||
},
|
||||
entity => _ = entitySpawnAdapter.OnRemove(entity)),
|
||||
new(
|
||||
entityScriptActivator.OnCreate,
|
||||
|
|
@ -688,7 +700,7 @@ internal sealed class LivePresentationCompositionPhase
|
|||
});
|
||||
var radarSnapshotProvider = new RadarSnapshotProvider(
|
||||
d.Objects,
|
||||
() => liveEntities.WorldEntities,
|
||||
liveEntities,
|
||||
() => liveEntities.Snapshots,
|
||||
playerGuid: () => d.PlayerIdentity.ServerGuid,
|
||||
playerYawRadians: () => d.PlayerController.Controller?.Yaw ?? 0f,
|
||||
|
|
@ -696,7 +708,6 @@ internal sealed class LivePresentationCompositionPhase
|
|||
selectedGuid: () => d.Selection.SelectedObjectId,
|
||||
coordinatesOnRadar: () => d.Settings.Gameplay.CoordinatesOnRadar,
|
||||
uiLocked: () => d.Settings.Gameplay.LockUI,
|
||||
playerEntities: () => liveEntities.MaterializedWorldEntities,
|
||||
spatialQuery: () => worldState);
|
||||
bindings.Adopt(
|
||||
"radar snapshot",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue