using AcDream.App.Streaming; using AcDream.App.World; using AcDream.Core.Physics; using AcDream.Runtime.Entities; namespace AcDream.App.Tests; /// /// Explicit isolated lifetime-group seam for App projection tests. Production /// composition supplies its session-owned group from GameWindow; focused tests /// use a fresh group per runtime so identity never leaks between fixtures. /// internal static class LiveEntityRuntimeFixture { public static LiveEntityRuntime Create( GpuWorldState spatial, ILiveEntityResourceLifecycle resources, uint firstLocalEntityId = RuntimeEntityDirectory.FirstLocalEntityId) { var lifetime = new RuntimeEntityObjectLifetime(firstLocalEntityId); return new LiveEntityRuntime(spatial, resources, lifetime); } public static LiveEntityRuntime Create( GpuWorldState spatial, ILiveEntityResourceLifecycle resources, PhysicsEngine physicsEngine, uint firstLocalEntityId = RuntimeEntityDirectory.FirstLocalEntityId) { var lifetime = new RuntimeEntityObjectLifetime( physicsEngine, firstLocalEntityId); return new LiveEntityRuntime(spatial, resources, lifetime); } public static LiveEntityRuntime Create( GpuWorldState spatial, ILiveEntityResourceLifecycle resources, Action tearDownRuntimeComponents, uint firstLocalEntityId = RuntimeEntityDirectory.FirstLocalEntityId) { var lifetime = new RuntimeEntityObjectLifetime(firstLocalEntityId); return new LiveEntityRuntime( spatial, resources, tearDownRuntimeComponents, lifetime); } public static LiveEntityRuntime Create( GpuWorldState spatial, ILiveEntityResourceLifecycle resources, ILiveEntityRuntimeComponentLifecycle runtimeComponentLifecycle, uint firstLocalEntityId = RuntimeEntityDirectory.FirstLocalEntityId) { var lifetime = new RuntimeEntityObjectLifetime(firstLocalEntityId); return new LiveEntityRuntime( spatial, resources, runtimeComponentLifecycle, lifetime); } public static LiveEntityRuntime Create( GpuWorldState spatial, ILiveEntityResourceLifecycle resources, ILiveEntityRuntimeComponentLifecycle runtimeComponentLifecycle, PhysicsEngine physicsEngine, uint firstLocalEntityId = RuntimeEntityDirectory.FirstLocalEntityId) { var lifetime = new RuntimeEntityObjectLifetime( physicsEngine, firstLocalEntityId); return new LiveEntityRuntime( spatial, resources, runtimeComponentLifecycle, lifetime); } }