diff --git a/rtchallenge/src/shapes.rs b/rtchallenge/src/shapes.rs index bb9bc69..682b24b 100644 --- a/rtchallenge/src/shapes.rs +++ b/rtchallenge/src/shapes.rs @@ -47,11 +47,18 @@ impl PartialEq for Geometry { #[builder(default)] pub struct Shape { transform: Matrix4x4, + #[builder(private, default = "self.default_inverse_transform()?")] inverse_transform: Matrix4x4, pub material: Material, geometry: Geometry, } +impl ShapeBuilder { + fn default_inverse_transform(&self) -> Result { + Ok(self.transform.unwrap_or(Matrix4x4::identity()).inverse()) + } +} + impl Default for Shape { fn default() -> Shape { Shape {