| 
						
						
							
								
							
						
						
					 | 
					@ -139,30 +139,28 @@ bool upward_propagation(blobtree_t& tree, const int leaf_node_index, const int r | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					} | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					// eNodeLocation evaluate(const virtual_node_t& node, const raw_vector3d_t& point)
 | 
					 | 
					 | 
					// eNodeLocation evaluate(const virtual_node_t& node, const raw_vector3d_t& point)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					// {
 | 
					 | 
					 | 
					//{
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					//     auto temp = structures[node.main_index];
 | 
					 | 
					 | 
					//     auto  tree       = structures[node.main_index];
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					
 | 
					 | 
					 | 
					//     auto& leaf_index = tree.leaf_index;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					//     auto& leaf_index = temp.leaf_index;
 | 
					 | 
					 | 
					//     for (auto& index : leaf_index) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					//     for (size_t i = 0; i < leaf_index.size(); i++) {
 | 
					 | 
					 | 
					//         auto sdf              = evaluate(primitives[node_fetch_primitive_index(tree.nodes[index])], point);
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					//         auto sdf              = evaluate(primitives[leaf_index[i]], point);
 | 
					 | 
					 | 
					//         auto leaf_node_in_out = node_fetch_in_out(tree.nodes[index]);
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					 | 
					 | 
					//         auto leaf_node_in_out = node_fetch_in_out(temp.nodes[leaf_index[i]]);
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					//         if (sdf <= 0.0)
 | 
					 | 
					 | 
					//         if (sdf <= 0.0)
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					//             leaf_node_in_out = eNodeLocation::in;
 | 
					 | 
					 | 
					//             leaf_node_in_out = eNodeLocation::in;
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					//         else
 | 
					 | 
					 | 
					//         else
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					//             leaf_node_in_out = eNodeLocation::out;
 | 
					 | 
					 | 
					//             leaf_node_in_out = eNodeLocation::out;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					
 | 
					 | 
					 | 
					//         if (upward_propagation(tree, index, node.inner_index)) { break; }
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					 | 
					 | 
					//         if (upward_propagation(temp, leaf_index[i], node.inner_index)) { break; }
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					//     }
 | 
					 | 
					 | 
					//     }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					
 | 
					 | 
					 | 
					//     return node_fetch_in_out(tree.nodes[node.inner_index]);
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					 | 
					 | 
					//     return node_fetch_in_out(temp.nodes[node.inner_index]);
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					// }
 | 
					 | 
					 | 
					// }
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					aabb_t get_aabb(const virtual_node_t& node) | 
					 | 
					 | 
					aabb_t get_aabb(const virtual_node_t& node) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					{ | 
					 | 
					 | 
					{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					    auto&  leaf_index = structures[node.main_index].leaf_index; | 
					 | 
					 | 
					    auto&  tree       = structures[node.main_index]; | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    auto&  leaf_index = tree.leaf_index; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    aabb_t result{}; | 
					 | 
					 | 
					    aabb_t result{}; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    for (auto& index : leaf_index) { | 
					 | 
					 | 
					    for (auto& index : leaf_index) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					        auto& type = primitives[index].type; | 
					 | 
					 | 
					        auto& type = primitives[node_fetch_primitive_index(tree.nodes[index])].type; | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					        if (type != PRIMITIVE_TYPE_CONSTANT && type != PRIMITIVE_TYPE_PLANE) { result.extend(aabbs[index]); } | 
					 | 
					 | 
					        if (type != PRIMITIVE_TYPE_CONSTANT && type != PRIMITIVE_TYPE_PLANE) { result.extend(aabbs[index]); } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    } | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    return result; | 
					 | 
					 | 
					    return result; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					
  |