From 784ff23adcc998738f7ec816a088d960b9b3ff1f Mon Sep 17 00:00:00 2001 From: JFonS Date: Tue, 10 Mar 2020 16:23:22 +0100 Subject: [PATCH] Fix rotation gizmo for empty Spatials The AABB for an empty Spatial has 0 size, since the stored and compared Transform was scaled by the AABB size, it would completely destroy the rotation information. If there is no rotation information, the gizmo doesn't update when the rotation changes. (cherry picked from commit a0af3094b47fabb1fd6bb7f5e5aecc8fefd2486c) --- editor/plugins/spatial_editor_plugin.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/editor/plugins/spatial_editor_plugin.cpp b/editor/plugins/spatial_editor_plugin.cpp index a716579e501..325882884de 100644 --- a/editor/plugins/spatial_editor_plugin.cpp +++ b/editor/plugins/spatial_editor_plugin.cpp @@ -2389,11 +2389,18 @@ void SpatialEditorViewport::_notification(int p_what) { if (!se) continue; + Transform t = sp->get_global_gizmo_transform(); + + exist = true; + if (se->last_xform == t) + continue; + changed = true; + se->last_xform = t; + VisualInstance *vi = Object::cast_to(sp); se->aabb = vi ? vi->get_aabb() : _calculate_spatial_bounds(sp); - Transform t = sp->get_global_gizmo_transform(); t.translate(se->aabb.position); // apply AABB scaling before item's global transform @@ -2401,11 +2408,6 @@ void SpatialEditorViewport::_notification(int p_what) { aabb_s.scale(se->aabb.size); t.basis = t.basis * aabb_s; - exist = true; - if (se->last_xform == t) - continue; - changed = true; - se->last_xform = t; VisualServer::get_singleton()->instance_set_transform(se->sbox_instance, t); }