/// Query an AABB for overlapping proxies. The callback class /// is called for each proxy that overlaps the supplied AABB. public void Query(b2BroadphaseQueryCallback callback, b2AABB aabb) { Stack <int> stack = new Stack <int>(256); stack.Push(m_root); while (stack.Count > 0) { int nodeId = stack.Pop(); if (nodeId == Settings.b2_nullNode) { continue; } b2TreeNode node = m_nodes[nodeId]; if (Utils.b2TestOverlap(ref node.aabb, ref aabb)) { if (node.IsLeaf()) { bool proceed = callback(nodeId); if (proceed == false) { return; } } else { stack.Push(node.child1); stack.Push(node.child2); } } } }
/// Query an AABB for overlapping proxies. The callback class /// is called for each proxy that overlaps the supplied AABB. public void Query(b2BroadphaseQueryCallback callback, b2AABB aabb) { m_tree.Query(callback, aabb); }