1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- 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 BVH_ABB &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
|