(queryCallback B2TreeQueryCallback, aabb B2AABB)
| 73 | } |
| 74 | |
| 75 | func (tree *B2DynamicTree) Query(queryCallback B2TreeQueryCallback, aabb B2AABB) { |
| 76 | stack := NewB2GrowableStack() |
| 77 | stack.Push(tree.M_root) |
| 78 | |
| 79 | for stack.GetCount() > 0 { |
| 80 | nodeId := stack.Pop().(int) |
| 81 | if nodeId == B2_nullNode { |
| 82 | continue |
| 83 | } |
| 84 | |
| 85 | node := &tree.M_nodes[nodeId] |
| 86 | |
| 87 | if B2TestOverlapBoundingBoxes(node.Aabb, aabb) { |
| 88 | if node.IsLeaf() { |
| 89 | proceed := queryCallback(nodeId) |
| 90 | if proceed == false { |
| 91 | return |
| 92 | } |
| 93 | } else { |
| 94 | stack.Push(node.Child1) |
| 95 | stack.Push(node.Child2) |
| 96 | } |
| 97 | } |
| 98 | } |
| 99 | } |
| 100 | |
| 101 | func (tree B2DynamicTree) RayCast(rayCastCallback B2TreeRayCastCallback, input B2RayCastInput) { |
| 102 |
nothing calls this directly
no test coverage detected