Move projectile component identity, prediction invalidation, spatial worksets, authoritative corrections, and the retail physics step into AcDream.Runtime. Keep App as the DAT-shape and presentation adapter so ACE outcomes and visible behavior remain unchanged.
80 lines
2.8 KiB
C#
80 lines
2.8 KiB
C#
using AcDream.App.Streaming;
|
|
using AcDream.App.World;
|
|
using AcDream.Core.Physics;
|
|
using AcDream.Runtime.Entities;
|
|
|
|
namespace AcDream.App.Tests;
|
|
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
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<LiveEntityRecord> 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);
|
|
}
|
|
}
|