| 
						
						
							
								
							
						
						
					 | 
					@ -82,12 +82,12 @@ void compute_patches(const stl_vector_mp<stl_vector_mp<edge_key_t>>&    edges_of | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    } | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					} | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					void compute_chains(const flat_hash_map_mp<edge_key_t, edge_header_t>&   patch_edges, | 
					 | 
					 | 
					void compute_chains(const flat_hash_map_mp<edge_key_t, edge_header_t>& patch_edges, | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					                    const flat_hash_set_mp<edge_key_t>&                  patch_boundary_edges, | 
					 | 
					 | 
					                    const flat_hash_set_mp<edge_key_t>&                patch_boundary_edges, | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					                    const stl_vector_mp<polygon_face_t>&                 iso_faces, | 
					 | 
					 | 
					                    const stl_vector_mp<polygon_face_t>&               iso_faces, | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					                    stl_vector_mp<stl_vector_mp<uint32_t>>&              chain_vertices, | 
					 | 
					 | 
					                    stl_vector_mp<stl_vector_mp<uint32_t>>&            chain_vertices, | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					                    stl_vector_mp<boundary_edge_header_t>&               chain_edge_headers, | 
					 | 
					 | 
					                    stl_vector_mp<boundary_edge_header_t>&             chain_edge_headers, | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					                    stl_vector_mp<chain_header_t>&                       chain_headers) | 
					 | 
					 | 
					                    stl_vector_mp<chain_header_t>&                     chain_headers) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					{ | 
					 | 
					 | 
					{ | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    flat_hash_map_mp<uint32_t, stl_vector_mp<uint32_t>> non_manifold_edges_of_vert{}; | 
					 | 
					 | 
					    flat_hash_map_mp<uint32_t, stl_vector_mp<uint32_t>> non_manifold_edges_of_vert{}; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    non_manifold_edges_of_vert.reserve(patch_boundary_edges.size() / 2); | 
					 | 
					 | 
					    non_manifold_edges_of_vert.reserve(patch_boundary_edges.size() / 2); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					@ -117,10 +117,7 @@ void compute_chains(const flat_hash_map_mp<edge_key_t, edge_header_t>&   patch_e | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            flat_hash_set_mp<uint32_t> unique_volume_indices{}; | 
					 | 
					 | 
					            flat_hash_set_mp<uint32_t> unique_volume_indices{}; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            new_chain_edge_headers.subface_indices.reserve(new_chain_headers.face_indices.size()); | 
					 | 
					 | 
					            new_chain_edge_headers.subface_indices.reserve(new_chain_headers.face_indices.size()); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            for (const auto& face_index : new_chain_headers.face_indices) { | 
					 | 
					 | 
					            for (const auto& face_index : new_chain_headers.face_indices) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					                std::transform(iso_faces[face_index].headers.begin(), | 
					 | 
					 | 
					                for (const auto& [volume_index, _] : iso_faces[face_index].headers) unique_volume_indices.emplace(volume_index); | 
				
			
			
				
				
			
		
	
		
		
			
				
					 | 
					 | 
					                               iso_faces[face_index].headers.end(), | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                               std::back_inserter(unique_volume_indices), | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                               [](const face_header_t& header) { return header.volume_index; }); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					                new_chain_edge_headers.subface_indices.emplace_back(iso_faces[face_index].subface_index); | 
					 | 
					 | 
					                new_chain_edge_headers.subface_indices.emplace_back(iso_faces[face_index].subface_index); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            } | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            std::move(unique_volume_indices.begin(), | 
					 | 
					 | 
					            std::move(unique_volume_indices.begin(), | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					
  |