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
|
|
@ -62,18 +62,22 @@ internal sealed class WorldGenerationQuiescence
|
|||
private readonly WorldGenerationAvailabilityState _availability;
|
||||
private readonly SelectionState _selection;
|
||||
private readonly GpuWorldState _world;
|
||||
private readonly Func<uint, uint?> _resolveLocalEntityId;
|
||||
private readonly IWorldAudioQuiescence? _audio;
|
||||
|
||||
public WorldGenerationQuiescence(
|
||||
WorldGenerationAvailabilityState availability,
|
||||
SelectionState selection,
|
||||
GpuWorldState world,
|
||||
Func<uint, uint?> resolveLocalEntityId,
|
||||
IWorldAudioQuiescence? audio)
|
||||
{
|
||||
_availability = availability
|
||||
?? throw new ArgumentNullException(nameof(availability));
|
||||
_selection = selection ?? throw new ArgumentNullException(nameof(selection));
|
||||
_world = world ?? throw new ArgumentNullException(nameof(world));
|
||||
_resolveLocalEntityId = resolveLocalEntityId
|
||||
?? throw new ArgumentNullException(nameof(resolveLocalEntityId));
|
||||
_audio = audio;
|
||||
}
|
||||
|
||||
|
|
@ -85,7 +89,8 @@ internal sealed class WorldGenerationQuiescence
|
|||
uint? selected = firstEdge ? _selection.SelectedObjectId : null;
|
||||
bool clearWorldSelection =
|
||||
selected is uint selectedGuid
|
||||
&& _world.IsLiveEntityVisible(selectedGuid);
|
||||
&& _resolveLocalEntityId(selectedGuid) is uint localEntityId
|
||||
&& _world.IsLiveEntityVisible(localEntityId);
|
||||
|
||||
_availability.Begin(generation);
|
||||
if (!firstEdge)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue