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
|
|
@ -90,8 +90,18 @@ public sealed class GameWindowLiveEntityCompositionTests
|
|||
foreach (FieldInfo field in helperType.GetFields(
|
||||
BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic))
|
||||
{
|
||||
Assert.False(typeof(IDictionary).IsAssignableFrom(field.FieldType),
|
||||
$"{helperType.Name}.{field.Name} must resolve identity through LiveEntityRuntime.");
|
||||
bool isExactSynchronousProjectionContext =
|
||||
helperType == typeof(LiveEntityHydrationController)
|
||||
&& field.Name == "_projectionOperations"
|
||||
&& field.FieldType.IsGenericType
|
||||
&& field.FieldType.GetGenericArguments()[0]
|
||||
== typeof(AcDream.Runtime.Entities.RuntimeEntityRecord);
|
||||
if (!isExactSynchronousProjectionContext)
|
||||
{
|
||||
Assert.False(
|
||||
typeof(IDictionary).IsAssignableFrom(field.FieldType),
|
||||
$"{helperType.Name}.{field.Name} must resolve identity through LiveEntityRuntime.");
|
||||
}
|
||||
string typeName = field.FieldType.FullName ?? field.FieldType.Name;
|
||||
Assert.DoesNotContain("Silk.NET", typeName, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain("OpenGL", typeName, StringComparison.OrdinalIgnoreCase);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue