blob: a97304334cdc632ae5b4c689966a698efa38a868 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
public:
#ifdef BVH_VERBOSE
void _debug_recursive_print_tree(int p_tree_id) const {
if (_root_node_id[p_tree_id] != BVHCommon::INVALID)
_debug_recursive_print_tree_node(_root_node_id[p_tree_id]);
}
String _debug_aabb_to_string(const BVHABB_CLASS &aabb) const {
String sz = "(";
sz += itos(aabb.min.x);
sz += " ~ ";
sz += itos(-aabb.neg_max.x);
sz += ") (";
sz += itos(aabb.min.y);
sz += " ~ ";
sz += itos(-aabb.neg_max.y);
sz += ") (";
sz += itos(aabb.min.z);
sz += " ~ ";
sz += itos(-aabb.neg_max.z);
sz += ") ";
Vector3 size = aabb.calculate_size();
float vol = size.x * size.y * size.z;
sz += "vol " + itos(vol);
return sz;
}
void _debug_recursive_print_tree_node(uint32_t p_node_id, int depth = 0) const {
const TNode &tnode = _nodes[p_node_id];
String sz = "";
for (int n = 0; n < depth; n++) {
sz += "\t";
}
sz += itos(p_node_id);
if (tnode.is_leaf()) {
sz += " L";
sz += itos(tnode.height) + " ";
const TLeaf &leaf = _node_get_leaf(tnode);
sz += "[";
for (int n = 0; n < leaf.num_items; n++) {
if (n)
sz += ", ";
sz += "r";
sz += itos(leaf.get_item_ref_id(n));
}
sz += "] ";
} else {
sz += " N";
sz += itos(tnode.height) + " ";
}
sz += _debug_aabb_to_string(tnode.aabb);
print_line(sz);
if (!tnode.is_leaf()) {
for (int n = 0; n < tnode.num_children; n++) {
_debug_recursive_print_tree_node(tnode.children[n], depth + 1);
}
}
}
#endif
|