| 637 | tri_normals, |
| 638 | keep, |
| 639 | remove, |
| 640 | ) { |
| 641 | continue; |
| 642 | } |
| 643 | let cost = collapse_cost(vertices, quadrics, keep, remove, metric) * boundary_penalty; |
| 644 | best = better_collapse(best, Some(Collapse { keep, remove, cost })); |
| 645 | } |
| 646 | best |
| 647 | }; |
| 648 | let mut out = if edges.len() >= PARALLEL_EDGE_SCORE_THRESHOLD |
| 649 | && triangles.len() >= PARALLEL_EDGE_SCORE_TRI_THRESHOLD |
| 650 | { |
| 651 | edges.par_iter().filter_map(score_edge).collect::<Vec<_>>() |
| 652 | } else { |
| 653 | edges.iter().filter_map(score_edge).collect::<Vec<_>>() |
| 654 | }; |
| 655 | out.sort_unstable_by(|a, b| { |
| 656 | a.cost |