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); }
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); }
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); }
private void _QueryRegion(int layerType, LVector2 pos, LFloat radius, FuncCollision callback) { collisionSystem.QueryRegion(layerType, pos, radius, callback); }
private void _QueryRegion(int layerType, LVector2 pos, LVector2 size, LVector2 forward, FuncCollision callback) { collisionSystem.QueryRegion(layerType, pos, size, forward, callback); }
public static void QueryRegion(int layerType, LVector2 pos, LFloat radius, FuncCollision callback) { _instance._QueryRegion(layerType, pos, radius, callback); }
public static void QueryRegion(int layerType, LVector2 pos, LVector2 size, LVector2 forward, FuncCollision callback) { _instance._QueryRegion(layerType, pos, size, forward, callback); }
public void CheckCollision(LVector2 pos, LFloat radius, FuncCollision callback) { var rect = LRect.CreateRect(pos, new LVector2(radius, radius)); rootNode.CheckCollision(rect, callback); }
public void CheckCollision(ref LRect checkBounds, FuncCollision callback) { rootNode.CheckCollision(ref checkBounds, callback); }
public void CheckCollision(ColliderProxy obj, FuncCollision callback) { var checkBounds = LRect.CreateRect(obj.pos, new LVector2(obj.MaxSideSize, obj.MaxSideSize)); rootNode.CheckCollision(ref checkBounds, callback); }
public bool CheckCollision(LRect checkBounds, FuncCollision callback) { return(CheckCollision(ref checkBounds, callback)); }