fix(spatial): reference space can be self
This commit is contained in:
@@ -96,9 +96,23 @@ impl Spatial {
|
|||||||
reference_space: Option<&Spatial>,
|
reference_space: Option<&Spatial>,
|
||||||
transform: Transform,
|
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
|
let reference_to_parent_transform = reference_space
|
||||||
.map(|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);
|
.unwrap_or(Mat4::IDENTITY);
|
||||||
let mut local_transform_in_reference_space =
|
let mut local_transform_in_reference_space =
|
||||||
|
|||||||
Reference in New Issue
Block a user