保留 Tick 作为唯一入口,但让 SimulationWorld 只做 orchestration
- Tick 仍然是唯一仿真入口。SimulationWorld 顶层现在只保留全局开关、bridge 服务和生命周期入口,原来散落在类上的大部分跨域状态已经从 SimulationWorld 收口到新的 SimulationWorld.RuntimeModules。 - 新的 runtime modules 把状态按域分成了 SimulationStateStore、JobDataRuntimeState、CollisionPipelineRuntimeState、TargetSelectionRuntimeState,并通过同名代理把现有 partial 的调用面基本保持不变。 - CollisionPipeline 和 target-selection 的配置也一起下沉到了运行时模块。为了避免现有反射型测试立刻失效,保留了 _collisionQueryInputs 和 _areaCollisionRequests 这两个顶层兼容字段。
This commit is contained in:
@@ -1,39 +1,18 @@
|
||||
using System.Collections.Generic;
|
||||
using Unity.Collections;
|
||||
using Unity.Mathematics;
|
||||
|
||||
namespace Simulation
|
||||
{
|
||||
public sealed partial class SimulationWorld
|
||||
{
|
||||
// Shared native buffers, collision stats, and channel-level constants.
|
||||
// Shared channel constants plus compatibility fields still reflected by tests.
|
||||
private const int CollisionSourceTypeProjectile = 1;
|
||||
private const int CollisionSourceTypeArea = 2;
|
||||
private const int CollisionShapeCircle = 0;
|
||||
private const int CollisionShapeSector = 1;
|
||||
|
||||
private NativeList<EnemyJobInputData> _enemyJobInputs;
|
||||
private NativeList<EnemyJobOutputData> _enemyJobOutputs;
|
||||
private NativeList<EnemyJobOutputData> _enemyJobSeparationOutputs;
|
||||
private NativeList<float2> _enemySeparationPreviousPushes;
|
||||
private NativeList<float2> _enemySeparationCurrentPushes;
|
||||
private NativeList<ProjectileJobInputData> _projectileJobInputs;
|
||||
private NativeList<ProjectileJobOutputData> _projectileJobOutputs;
|
||||
// Kept as top-level fields because current regression tests reflect them directly.
|
||||
private NativeList<CollisionQueryData> _collisionQueryInputs;
|
||||
private NativeList<CollisionCandidateData> _collisionCandidates;
|
||||
private NativeParallelMultiHashMap<long, int> _enemySeparationBuckets;
|
||||
private NativeParallelMultiHashMap<long, int> _enemyCollisionBuckets;
|
||||
private readonly List<AreaCollisionRequestData> _areaCollisionRequests = new(16);
|
||||
private readonly List<AreaCollisionHitEventData> _areaCollisionHitEvents = new(32);
|
||||
private readonly HashSet<long> _areaCollisionHitDedupKeys = new();
|
||||
private int _lastCollisionQueryCount;
|
||||
private int _lastProjectileCollisionQueryCount;
|
||||
private int _lastAreaCollisionQueryCount;
|
||||
private int _lastCollisionCandidateCount;
|
||||
private int _lastProjectileCollisionCandidateCount;
|
||||
private int _lastAreaCollisionCandidateCount;
|
||||
private int _lastResolvedAreaHitCount;
|
||||
private float _lastCollisionCellSize;
|
||||
private bool _lastCollisionHasEnemyTargets;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user