use crate::{
objects::{Curve, Vertex},
operations::insert::Insert,
storage::Handle,
Core,
};
use super::SweepCache;
pub trait SweepVertex: Sized {
fn sweep_vertex(
&self,
cache: &mut SweepCache,
core: &mut Core,
) -> (Handle<Curve>, Handle<Vertex>);
}
impl SweepVertex for Handle<Vertex> {
fn sweep_vertex(
&self,
cache: &mut SweepCache,
core: &mut Core,
) -> (Handle<Curve>, Handle<Vertex>) {
let curve = cache
.curves
.entry(self.id())
.or_insert_with(|| Curve::new().insert(core))
.clone();
let vertex = cache
.vertices
.entry(self.id())
.or_insert_with(|| Vertex::new().insert(core))
.clone();
(curve, vertex)
}
}