From 52011bd92f836242142c97a94a20c719a390d026 Mon Sep 17 00:00:00 2001 From: Nova Date: Sun, 22 Jan 2023 00:24:38 -0500 Subject: [PATCH] fix(spatial): reference space can be self --- src/nodes/spatial/mod.rs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/nodes/spatial/mod.rs b/src/nodes/spatial/mod.rs index 49974af..83938aa 100644 --- a/src/nodes/spatial/mod.rs +++ b/src/nodes/spatial/mod.rs @@ -96,9 +96,23 @@ impl Spatial { reference_space: Option<&Spatial>, transform: Transform, ) { + if reference_space == Some(self) { + self.set_local_transform( + self.local_transform() + * Mat4::from_scale_rotation_translation( + transform.scale.map(|s| s.into()).unwrap_or_default(), + transform.rotation.map(|r| r.into()).unwrap_or_default(), + transform.position.map(|t| t.into()).unwrap_or_default(), + ), + ); + return; + } let reference_to_parent_transform = reference_space .map(|reference_space| { - Spatial::space_to_space_matrix(Some(reference_space), self.parent.lock().as_deref()) + Spatial::space_to_space_matrix( + Some(reference_space), + self.parent.lock().clone().as_deref(), + ) }) .unwrap_or(Mat4::IDENTITY); let mut local_transform_in_reference_space =