/// <summary> /// Query an AABB for overlapping proxies. /// </summary> /// <param name="aabb"></param> public void Query(ITreeQueryCallback callback, AABB aabb) { Stack <int> stack = new Stack <int>(); stack.Push(rootIndex); while (stack.Count > 0) { int nodeId = stack.Pop(); if (nodeId == nullNode) { continue; } DTNode node = nodes[nodeId]; if (node.aabb.Overlaps(aabb)) { if (node.IsLeaf()) { bool proceed = callback.QueryCallback(nodeId); if (proceed == false) { return; } } else { stack.Push(node.leftChildIndex); stack.Push(node.rightChildIndex); } } } }
/// <summary> /// Query an AABB for overlapping proxies. The callback class /// is called for each proxy that overlaps the supplied AABB. /// </summary> /// <param name="callback"></param> /// <param name="aabb"></param> public void Query(ITreeQueryCallback callback, AABB aabb) { dynamicTree.Query(callback, aabb); }