diff options
author | Rémi Verschelde <remi@verschelde.fr> | 2022-01-05 16:05:40 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-05 16:05:40 +0100 |
commit | 6af77c7b090f9e49aa5176783bf7350f8f6ec2e2 (patch) | |
tree | a46a85b8ee4ea4cdeca267dcaf38670a62243cdf /scene | |
parent | bb4157a9afbce9adfa95c69ee20442590d4d66de (diff) | |
parent | 61759da5b35e44003ab3ffe3d4024dd611d17eff (diff) |
Merge pull request #53684 from TokageItLab/orthogonal-mode
Diffstat (limited to 'scene')
-rw-r--r-- | scene/3d/node_3d.cpp | 11 |
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(); } |