mirror of
https://github.com/hannobraun/Fornjot
synced 2025-05-08 11:58:27 +00:00
Add infrastructure for defining curve geometry
This commit is contained in:
parent
e6229c3f0d
commit
79ebba2009
@ -62,6 +62,14 @@ impl Geometry {
|
||||
self_
|
||||
}
|
||||
|
||||
pub(crate) fn define_curve_inner(
|
||||
&mut self,
|
||||
curve: Handle<Curve>,
|
||||
geometry: CurveGeom,
|
||||
) {
|
||||
self.curve.insert(curve, geometry);
|
||||
}
|
||||
|
||||
pub(crate) fn define_half_edge_inner(
|
||||
&mut self,
|
||||
half_edge: Handle<HalfEdge>,
|
||||
|
@ -1,14 +1,20 @@
|
||||
//! Layer infrastructure for [`Geometry`]
|
||||
|
||||
use crate::{
|
||||
geometry::{Geometry, HalfEdgeGeom, SurfaceGeom},
|
||||
geometry::{CurveGeom, Geometry, HalfEdgeGeom, SurfaceGeom},
|
||||
storage::Handle,
|
||||
topology::{HalfEdge, Surface},
|
||||
topology::{Curve, HalfEdge, Surface},
|
||||
};
|
||||
|
||||
use super::{Command, Event, Layer};
|
||||
|
||||
impl Layer<Geometry> {
|
||||
/// Define the geometry of the provided curve
|
||||
pub fn define_curve(&mut self, curve: Handle<Curve>, geometry: CurveGeom) {
|
||||
let mut events = Vec::new();
|
||||
self.process(DefineCurve { curve, geometry }, &mut events);
|
||||
}
|
||||
|
||||
/// Define the geometry of the provided half-edge
|
||||
pub fn define_half_edge(
|
||||
&mut self,
|
||||
@ -41,6 +47,31 @@ impl Layer<Geometry> {
|
||||
}
|
||||
}
|
||||
|
||||
/// Define the geometry of a curve
|
||||
pub struct DefineCurve {
|
||||
curve: Handle<Curve>,
|
||||
geometry: CurveGeom,
|
||||
}
|
||||
|
||||
impl Command<Geometry> for DefineCurve {
|
||||
type Result = ();
|
||||
type Event = Self;
|
||||
|
||||
fn decide(
|
||||
self,
|
||||
_: &Geometry,
|
||||
events: &mut Vec<Self::Event>,
|
||||
) -> Self::Result {
|
||||
events.push(self);
|
||||
}
|
||||
}
|
||||
|
||||
impl Event<Geometry> for DefineCurve {
|
||||
fn evolve(&self, state: &mut Geometry) {
|
||||
state.define_curve_inner(self.curve.clone(), self.geometry.clone());
|
||||
}
|
||||
}
|
||||
|
||||
/// Define the geometry of a half-edge
|
||||
pub struct DefineHalfEdge {
|
||||
half_edge: Handle<HalfEdge>,
|
||||
|
Loading…
Reference in New Issue
Block a user