Пример #1
0
        public bool CheckCollision(ref LRect checkBounds, FuncCollision callback)
        {
            // Are the input bounds at least partially in this node?
            if (!bounds.Overlaps(checkBounds))
            {
                return(false);
            }

            // Check against any objects in this node
            for (int i = 0; i < objects.Count; i++)
            {
                var o = objects[i];
                if (o.Bounds.Overlaps(checkBounds))
                {
                    callback(o.Obj);
                }
            }
            // Check children
            if (children != null)
            {
                for (int i = 0; i < NUM_CHILDREN; i++)
                {
                    if (children[i].CheckCollision(ref checkBounds, callback))
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
Пример #2
0
 public void QueryRegion(int layerType, LVector2 pos, LFloat radius, FuncCollision callback)
 {
     Debug.Trace($"QueryRegion layerType:{layerType} pos:{pos} radius:{radius} ");
     tempCallback = callback;
     _tempPos     = pos;
     _tempRadius  = radius;
     GetBoundTree(layerType).CheckCollision(pos, radius, _CheckRegionCircle);
 }
Пример #3
0
        public void QueryRegion(int layerType, LVector2 pos, LVector2 size, LVector2 forward, FuncCollision callback)
        {
            Debug.Trace($"QueryRegion layerType:{layerType} pos:{pos} size:{size}  forward:{forward} ");
            tempCallback = callback;
            _tempSize    = size;
            _tempForward = forward;
            _tempPos     = pos;
            var radius      = size.magnitude;
            var checkBounds = LRect.CreateRect(pos, new LVector2(radius, radius));

            GetBoundTree(layerType).CheckCollision(ref checkBounds, _CheckRegionOBB);
        }
Пример #4
0
 private void _QueryRegion(int layerType, LVector2 pos, LFloat radius, FuncCollision callback)
 {
     collisionSystem.QueryRegion(layerType, pos, radius, callback);
 }
Пример #5
0
 private void _QueryRegion(int layerType, LVector2 pos, LVector2 size, LVector2 forward, FuncCollision callback)
 {
     collisionSystem.QueryRegion(layerType, pos, size, forward, callback);
 }
Пример #6
0
 public static void QueryRegion(int layerType, LVector2 pos, LFloat radius, FuncCollision callback)
 {
     _instance._QueryRegion(layerType, pos, radius, callback);
 }
Пример #7
0
 public static void QueryRegion(int layerType, LVector2 pos, LVector2 size, LVector2 forward,
                                FuncCollision callback)
 {
     _instance._QueryRegion(layerType, pos, size, forward, callback);
 }
Пример #8
0
        public void CheckCollision(LVector2 pos, LFloat radius, FuncCollision callback)
        {
            var rect = LRect.CreateRect(pos, new LVector2(radius, radius));

            rootNode.CheckCollision(rect, callback);
        }
Пример #9
0
 public void CheckCollision(ref LRect checkBounds, FuncCollision callback)
 {
     rootNode.CheckCollision(ref checkBounds, callback);
 }
Пример #10
0
        public void CheckCollision(ColliderProxy obj, FuncCollision callback)
        {
            var checkBounds = LRect.CreateRect(obj.pos, new LVector2(obj.MaxSideSize, obj.MaxSideSize));

            rootNode.CheckCollision(ref checkBounds, callback);
        }
Пример #11
0
 public bool CheckCollision(LRect checkBounds, FuncCollision callback)
 {
     return(CheckCollision(ref checkBounds, callback));
 }