use honeycomb_core::{cmap::CMap2, geometry::CoordsFloat, stm::atomically_with_err};
use crate::cell_insertion::insert_vertices_on_edge;
use super::{DartSlices, IntersectionsPerEdge};
pub(crate) fn insert_intersections<T: CoordsFloat>(
cmap: &CMap2<T>,
edge_intersec: &IntersectionsPerEdge<T>,
dart_slices: &DartSlices,
) {
for ((edge_id, vs), new_darts) in edge_intersec.iter().zip(dart_slices.iter()) {
atomically_with_err(|t| {
insert_vertices_on_edge(
cmap,
t,
*edge_id,
new_darts,
&vs.iter().map(|(_, t, _)| *t).collect::<Vec<_>>(),
)
})
.unwrap();
}
}