summaryrefslogtreecommitdiff
path: root/scene
diff options
context:
space:
mode:
authorRémi Verschelde <remi@verschelde.fr>2022-01-05 16:05:40 +0100
committerGitHub <noreply@github.com>2022-01-05 16:05:40 +0100
commit6af77c7b090f9e49aa5176783bf7350f8f6ec2e2 (patch)
treea46a85b8ee4ea4cdeca267dcaf38670a62243cdf /scene
parentbb4157a9afbce9adfa95c69ee20442590d4d66de (diff)
parent61759da5b35e44003ab3ffe3d4024dd611d17eff (diff)
Merge pull request #53684 from TokageItLab/orthogonal-mode
Diffstat (limited to 'scene')
-rw-r--r--scene/3d/node_3d.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/scene/3d/node_3d.cpp b/scene/3d/node_3d.cpp
index e189b705d8..4426a646f4 100644
--- a/scene/3d/node_3d.cpp
+++ b/scene/3d/node_3d.cpp
@@ -84,6 +84,9 @@ void Node3D::_notify_dirty() {
}
void Node3D::_update_local_transform() const {
+ if (this->get_rotation_edit_mode() != ROTATION_EDIT_MODE_BASIS) {
+ data.local_transform = data.local_transform.orthogonalized();
+ }
data.local_transform.basis.set_euler_scale(data.rotation, data.scale);
data.dirty &= ~DIRTY_LOCAL;
@@ -321,6 +324,14 @@ void Node3D::set_rotation_edit_mode(RotationEditMode p_mode) {
return;
}
data.rotation_edit_mode = p_mode;
+
+ // Shearing is not allowed except in ROTATION_EDIT_MODE_BASIS.
+ data.dirty |= DIRTY_LOCAL;
+ _propagate_transform_changed(this);
+ if (data.notify_local_transform) {
+ notification(NOTIFICATION_LOCAL_TRANSFORM_CHANGED);
+ }
+
notify_property_list_changed();
}