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. private const int CollisionSourceTypeProjectile = 1; private const int CollisionSourceTypeArea = 2; private const int CollisionShapeCircle = 0; private const int CollisionShapeSector = 1; private NativeList _enemyJobInputs; private NativeList _enemyJobOutputs; private NativeList _enemyJobSeparationOutputs; private NativeList _enemySeparationPreviousPushes; private NativeList _enemySeparationCurrentPushes; private NativeList _projectileJobInputs; private NativeList _projectileJobOutputs; private NativeList _collisionQueryInputs; private NativeList _collisionCandidates; private NativeParallelMultiHashMap _enemySeparationBuckets; private NativeParallelMultiHashMap _enemyCollisionBuckets; private readonly List _areaCollisionRequests = new(16); private readonly List _areaCollisionHitEvents = new(32); private readonly HashSet _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; } }