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
|
|
@ -73,7 +73,9 @@ public sealed class LiveEntityPresentationControllerTests
|
|||
fixture.PresentationOrder);
|
||||
Assert.Equal(1, fixture.Shadows.TotalRegistered);
|
||||
Assert.True(fixture.Entity.IsDrawVisible);
|
||||
Assert.Same(fixture.Entity, Assert.Single(fixture.Runtime.WorldEntities).Value);
|
||||
Assert.Same(
|
||||
fixture.Entity,
|
||||
Assert.Single(fixture.Runtime.VisibleRecords).WorldEntity);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -289,7 +291,9 @@ public sealed class LiveEntityPresentationControllerTests
|
|||
Assert.Equal(0, fixture.Shadows.TotalRegistered);
|
||||
|
||||
Assert.True(fixture.Runtime.RebucketLiveEntity(Fixture.Guid, 0x02020001u));
|
||||
Assert.False(fixture.Runtime.WorldEntities.ContainsKey(Fixture.Guid));
|
||||
Assert.False(fixture.Runtime.TryGetInteractionEligibleEntity(
|
||||
Fixture.Guid,
|
||||
out _));
|
||||
|
||||
Assert.True(fixture.Runtime.TryApplyState(
|
||||
new SetState.Parsed(Fixture.Guid, 0u, 1, 3),
|
||||
|
|
@ -303,7 +307,9 @@ public sealed class LiveEntityPresentationControllerTests
|
|||
new LandBlock(),
|
||||
Array.Empty<WorldEntity>()));
|
||||
|
||||
Assert.True(fixture.Runtime.WorldEntities.ContainsKey(Fixture.Guid));
|
||||
Assert.True(fixture.Runtime.TryGetInteractionEligibleEntity(
|
||||
Fixture.Guid,
|
||||
out _));
|
||||
Assert.Equal(1, fixture.Shadows.TotalRegistered);
|
||||
}
|
||||
|
||||
|
|
@ -318,7 +324,9 @@ public sealed class LiveEntityPresentationControllerTests
|
|||
Fixture.Guid,
|
||||
0x02020001u));
|
||||
|
||||
Assert.False(fixture.Runtime.WorldEntities.ContainsKey(Fixture.Guid));
|
||||
Assert.False(fixture.Runtime.TryGetInteractionEligibleEntity(
|
||||
Fixture.Guid,
|
||||
out _));
|
||||
Assert.Equal(0, fixture.Shadows.TotalRegistered);
|
||||
Assert.Equal(1, fixture.Shadows.RetainedRegistrationCount);
|
||||
Assert.Equal(1, fixture.Shadows.SuspendedRegistrationCount);
|
||||
|
|
@ -331,7 +339,7 @@ public sealed class LiveEntityPresentationControllerTests
|
|||
|
||||
Assert.Same(
|
||||
fixture.Entity,
|
||||
Assert.Single(fixture.Runtime.WorldEntities).Value);
|
||||
Assert.Single(fixture.Runtime.VisibleRecords).WorldEntity);
|
||||
Assert.Equal(1, fixture.Shadows.TotalRegistered);
|
||||
Assert.Equal(0, fixture.Shadows.SuspendedRegistrationCount);
|
||||
Assert.False(fixture.Controller.HasDeferredShadowRestore(Fixture.Guid));
|
||||
|
|
@ -467,7 +475,7 @@ public sealed class LiveEntityPresentationControllerTests
|
|||
new LandBlock(),
|
||||
Array.Empty<WorldEntity>()));
|
||||
|
||||
Assert.Same(entity, Assert.Single(runtime.WorldEntities).Value);
|
||||
Assert.Same(entity, Assert.Single(runtime.VisibleRecords).WorldEntity);
|
||||
Assert.Equal(1, shadows.TotalRegistered);
|
||||
Assert.Equal(0, shadows.SuspendedRegistrationCount);
|
||||
Assert.False(controller.HasDeferredShadowRestore(Fixture.Guid));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue