From 85b29fc4f1a86df166753931a3dabcf9bebea0e3 Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Tue, 21 Jan 2025 20:29:21 +0100 Subject: [PATCH] Simplify --- experiments/2024-12-09/src/geometry/mod.rs | 2 - experiments/2024-12-09/src/geometry/shape.rs | 80 -------------------- experiments/2024-12-09/src/model.rs | 8 +- 3 files changed, 3 insertions(+), 87 deletions(-) delete mode 100644 experiments/2024-12-09/src/geometry/shape.rs diff --git a/experiments/2024-12-09/src/geometry/mod.rs b/experiments/2024-12-09/src/geometry/mod.rs index c37539979..4abb45971 100644 --- a/experiments/2024-12-09/src/geometry/mod.rs +++ b/experiments/2024-12-09/src/geometry/mod.rs @@ -1,12 +1,10 @@ mod operation; -mod shape; mod sketch; mod tri_mesh; mod triangle; pub use self::{ operation::{AnyOp, Handle, Operation}, - shape::Shape, sketch::Sketch, tri_mesh::TriMesh, triangle::Triangle, diff --git a/experiments/2024-12-09/src/geometry/shape.rs b/experiments/2024-12-09/src/geometry/shape.rs deleted file mode 100644 index b542cd8a8..000000000 --- a/experiments/2024-12-09/src/geometry/shape.rs +++ /dev/null @@ -1,80 +0,0 @@ -use tuples::CombinRight; - -use crate::storage::Store; - -use super::{ - operation::{AnyOp, Handle}, - tri_mesh::TriMesh, - Operation, -}; - -#[derive(Default)] -pub struct Shape { - children: Vec, -} - -impl Shape { - pub fn extend_with<'r, T>( - &'r mut self, - store: &'r mut Store, - ) -> ShapeExtender<'r, (), T> { - ShapeExtender::new(store, &mut self.children) - } -} - -impl Operation for Shape { - fn label(&self) -> &'static str { - "Shape" - } - - fn tri_mesh(&self) -> TriMesh { - let mut tri_mesh = TriMesh::new(); - - for op in &self.children { - tri_mesh = tri_mesh.merge(op.tri_mesh()); - } - - tri_mesh - } - - fn children(&self) -> Vec { - self.children - .iter() - .map(|op| AnyOp::new(op.clone())) - .collect() - } -} - -pub struct ShapeExtender<'r, NewOps, T> { - store: &'r mut Store, - ops: &'r mut Vec, - new_ops: NewOps, -} - -impl<'r, T> ShapeExtender<'r, (), T> { - fn new(store: &'r mut Store, ops: &'r mut Vec) -> Self { - Self { - store, - ops, - new_ops: (), - } - } -} - -impl<'r, NewOps, T> ShapeExtender<'r, NewOps, T> { - pub fn add(self, op: impl Into) -> ShapeExtender<'r, NewOps::Out, T> - where - NewOps: CombinRight>, - T: Operation + 'static, - { - let op = self.store.insert(op.into()); - - self.ops.push(op.to_any()); - - ShapeExtender { - store: self.store, - ops: self.ops, - new_ops: self.new_ops.push_right(op), - } - } -} diff --git a/experiments/2024-12-09/src/model.rs b/experiments/2024-12-09/src/model.rs index 33873330a..4cc4d09ae 100644 --- a/experiments/2024-12-09/src/model.rs +++ b/experiments/2024-12-09/src/model.rs @@ -1,13 +1,13 @@ use itertools::Itertools; use crate::{ - geometry::{Shape, Sketch}, + geometry::{AnyOp, Sketch}, math::{Bivector, Plane, Point, Vector}, storage::Stores, topology::{Face, Solid}, }; -pub fn model() -> Shape { +pub fn model() -> AnyOp { let mut stores = Stores::new(); let top = { @@ -44,7 +44,5 @@ pub fn model() -> Shape { .map(|face| stores.get().insert(face)), ); - let mut shape = Shape::default(); - shape.extend_with(stores.get::()).add(solid); - shape + AnyOp::new(solid) }