public void Execute() { var removeDetector = RemoveDetector != Entity.Null; World.OverlapAabb(OverlapInput, ref ResultIndices); for (var i = 0; i < ResultIndices.Length; i++) { var entity = World.Bodies[ResultIndices[i]].Entity; if (removeDetector && entity == RemoveDetector) { return; } ResultEntities.Add(entity); } }
private bool Overlapped(float3 position, ref FieldOfView setting, ref NativeList <int> hits) { var radius = setting.Radius; var input = new OverlapAabbInput { Aabb = new Aabb { Max = position + new float3(radius, 0, radius), Min = position - new float3(radius, 0, radius) }, Filter = new CollisionFilter { BelongsTo = Setting.SelfTag.Value, CollidesWith = Setting.TargetTag.Value, } }; return(World.OverlapAabb(input, ref hits)); }
public void Execute(int index) { var allHits = new NativeList <int>(Allocator.Temp); var input = new OverlapAabbInput { Aabb = Ptr[index].Aabb, Filter = new CollisionFilter() { BelongsTo = ~0u, CollidesWith = 1u << 8, // Obstacle layer GroupIndex = 0 } }; World.OverlapAabb(input, ref allHits); Ptr[index].Walkable = allHits.Length <= 0; allHits.Dispose(); }