diff --git a/src/openmesh.rs b/src/openmesh.rs index cd53b29..c622d0e 100644 --- a/src/openmesh.rs +++ b/src/openmesh.rs @@ -30,7 +30,7 @@ pub struct OpenMesh { impl OpenMesh { - pub fn transform(&self, xfm: Mat4) -> OpenMesh { + pub fn transform(&self, xfm: &Mat4) -> OpenMesh { OpenMesh { verts: self.verts.iter().map(|v| xfm * v).collect(), // TODO: Is the above faster if I pack vectors into a diff --git a/src/prim.rs b/src/prim.rs index ceb0d55..ec664e5 100644 --- a/src/prim.rs +++ b/src/prim.rs @@ -35,5 +35,5 @@ pub fn cube() -> OpenMesh { Tag::Body(0), Tag::Body(1), Tag::Body(5), Tag::Body(0), Tag::Body(5), Tag::Body(4), ], - }.transform(geometry::Translation3::new(-0.5, -0.5, -0.5).to_homogeneous()) + }.transform(&geometry::Translation3::new(-0.5, -0.5, -0.5).to_homogeneous()) } diff --git a/src/rule.rs b/src/rule.rs index bb76684..2b2d4b3 100644 --- a/src/rule.rs +++ b/src/rule.rs @@ -105,9 +105,9 @@ impl Rule { // Get sub-geometry (still un-transformed): let (submesh, eval) = sub.rule.to_mesh(iters_left - 1); // Tally up eval count: - evals += n; + evals += eval; - let m2 = submesh.transform(sub.xf); + let m2 = submesh.transform(&sub.xf); (m2, &sub.vmap) }).collect();