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);
                }
            }
示例#2
0
            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));
            }
示例#3
0
        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();
        }