| 448 | .collect::<Vec<_>>(); |
| 449 | if triangles.len() <= keep_tris { |
| 450 | return flatten_tris(&triangles); |
| 451 | } |
| 452 | let metric = SimplifyMetric::from_vertices(vertices, source); |
| 453 | let mut scratch = SimplifyScratch::default(); |
| 454 | let mut guard = 0usize; |
| 455 | while triangles.len() > keep_tris && guard < 128 { |
| 456 | guard += 1; |
| 457 | scratch.prepare(vertices.len(), triangles.len()); |
| 458 | build_topology(vertices, &triangles, &mut scratch); |
| 459 | let quadrics = build_vertex_quadrics(vertices, &triangles); |
| 460 | let collapses = ranked_collapses( |
| 461 | vertices, |
| 462 | &triangles, |
| 463 | &quadrics, |
| 464 | &scratch.edge_list, |
| 465 | &scratch.adjacency, |