diff --git a/src/object/quad.rs b/src/object/quad.rs index e0bbd78..aca63ef 100644 --- a/src/object/quad.rs +++ b/src/object/quad.rs @@ -50,6 +50,10 @@ impl Renderable for Quad { fn as_any(&self) -> &dyn Any { self } + + fn center(&self) -> crate::ds::Vector3 { + self.q + self.u/2.0 + self.v/2.0 + } } impl ToGpu for Quad { diff --git a/src/object/renderable.rs b/src/object/renderable.rs index 520009f..33001dd 100644 --- a/src/object/renderable.rs +++ b/src/object/renderable.rs @@ -1,5 +1,6 @@ pub trait Renderable: Send + Sync { fn as_any(&self) -> &dyn std::any::Any; + fn center(&self) -> crate::ds::Vector3; } pub trait ToGpu { diff --git a/src/object/sphere.rs b/src/object/sphere.rs index e4cfc1f..bf13123 100644 --- a/src/object/sphere.rs +++ b/src/object/sphere.rs @@ -38,6 +38,10 @@ impl Renderable for Sphere { fn as_any(&self) -> &dyn Any { self } + + fn center(&self) -> crate::ds::Vector3 { + self.center + } } impl ToGpu for Sphere {