public T[] CheckCollision(Vector2 checkPoint, float checkRadius) { List <T> objs = new List <T>(); if (DontHaveChildren()) { foreach (QuadtreeLeaf <T> leaf in _leafs) { if (Vector2.Distance(checkPoint, leaf.position) <= checkRadius + leaf.radius) { objs.Add(leaf.obj); } } } else { if (_upperRightChild._rect.PointToRectDistance(checkPoint, _maxRadius) <= checkRadius) { objs.AddRange(_upperRightChild.CheckCollision(checkPoint, checkRadius)); } if (_lowerRightChild._rect.PointToRectDistance(checkPoint, _maxRadius) <= checkRadius) { objs.AddRange(_lowerRightChild.CheckCollision(checkPoint, checkRadius)); } if (_lowerLeftChild._rect.PointToRectDistance(checkPoint, _maxRadius) <= checkRadius) { objs.AddRange(_lowerLeftChild.CheckCollision(checkPoint, checkRadius)); } if (_upperLeftChild._rect.PointToRectDistance(checkPoint, _maxRadius) <= checkRadius) { objs.AddRange(_upperLeftChild.CheckCollision(checkPoint, checkRadius)); } } return(objs.ToArray()); }
public static GameObject[] CheckCollision(Vector2 checkPoint, float checkRadius) { return(_quadtree.CheckCollision(checkPoint, checkRadius)); }