From 6105323ecc967ee7c781ecb1c53e1c605034682f Mon Sep 17 00:00:00 2001 From: Ari Vuollet Date: Tue, 5 Mar 2024 21:44:11 +0200 Subject: [PATCH] Update Transform component separately when applying Gizmo transform --- .../Viewport/MainEditorGizmoViewport.cs | 34 ++++++++++++++++--- .../Editor/Viewport/PrefabWindowViewport.cs | 26 +++++++++++--- 2 files changed, 51 insertions(+), 9 deletions(-) diff --git a/Source/Editor/Viewport/MainEditorGizmoViewport.cs b/Source/Editor/Viewport/MainEditorGizmoViewport.cs index 7d08213fa..034086ccc 100644 --- a/Source/Editor/Viewport/MainEditorGizmoViewport.cs +++ b/Source/Editor/Viewport/MainEditorGizmoViewport.cs @@ -471,7 +471,13 @@ namespace FlaxEditor.Viewport trans.SetRotation(ref world); trans.Translation += world.TranslationVector; } - obj.Transform = trans; + if (obj is ActorNode actorNode) + { + actorNode.Actor.Position = trans.Translation; + actorNode.Actor.Orientation = trans.Orientation; + } + else + obj.Transform = trans; } TransformGizmo.EndTransforming(); } @@ -520,7 +526,9 @@ namespace FlaxEditor.Viewport /// The scale delta. public void ApplyTransform(List selection, ref Vector3 translationDelta, ref Quaternion rotationDelta, ref Vector3 scaleDelta) { + bool applyTranslation = !translationDelta.IsZero; bool applyRotation = !rotationDelta.IsIdentity; + bool applyScale = !scaleDelta.IsZero; bool useObjCenter = TransformGizmo.ActivePivot == TransformGizmoBase.PivotType.ObjectCenter; Vector3 gizmoPosition = TransformGizmo.Position; @@ -555,13 +563,29 @@ namespace FlaxEditor.Viewport } // Apply scale - const float scaleLimit = 99_999_999.0f; - trans.Scale = Float3.Clamp(trans.Scale + scaleDelta, new Float3(-scaleLimit), new Float3(scaleLimit)); + if (applyScale) + { + const float scaleLimit = 99_999_999.0f; + trans.Scale = Float3.Clamp(trans.Scale + scaleDelta, new Float3(-scaleLimit), new Float3(scaleLimit)); ; + } // Apply translation - trans.Translation += translationDelta; + if (applyTranslation) + { + trans.Translation += translationDelta; + } - obj.Transform = trans; + if (obj is ActorNode actorNode) + { + if (applyTranslation) + actorNode.Actor.Position = trans.Translation; + if (applyRotation) + actorNode.Actor.Orientation = trans.Orientation; + if (applyScale) + actorNode.Actor.Scale = trans.Scale; + } + else + obj.Transform = trans; } } diff --git a/Source/Editor/Viewport/PrefabWindowViewport.cs b/Source/Editor/Viewport/PrefabWindowViewport.cs index d7624892d..2f4124e8c 100644 --- a/Source/Editor/Viewport/PrefabWindowViewport.cs +++ b/Source/Editor/Viewport/PrefabWindowViewport.cs @@ -357,7 +357,9 @@ namespace FlaxEditor.Viewport /// The scale delta. public void ApplyTransform(List selection, ref Vector3 translationDelta, ref Quaternion rotationDelta, ref Vector3 scaleDelta) { + bool applyTranslation = !translationDelta.IsZero; bool applyRotation = !rotationDelta.IsIdentity; + bool applyScale = !scaleDelta.IsZero; bool useObjCenter = TransformGizmo.ActivePivot == TransformGizmoBase.PivotType.ObjectCenter; Vector3 gizmoPosition = TransformGizmo.Position; @@ -387,13 +389,29 @@ namespace FlaxEditor.Viewport } // Apply scale - const float scaleLimit = 99_999_999.0f; - trans.Scale = Float3.Clamp(trans.Scale + scaleDelta, new Float3(-scaleLimit), new Float3(scaleLimit)); + if (applyScale) + { + const float scaleLimit = 99_999_999.0f; + trans.Scale = Float3.Clamp(trans.Scale + scaleDelta, new Float3(-scaleLimit), new Float3(scaleLimit)); + } // Apply translation - trans.Translation += translationDelta; + if (applyTranslation) + { + trans.Translation += translationDelta; + } - obj.Transform = trans; + if (obj is ActorNode actorNode) + { + if (applyTranslation) + actorNode.Actor.Position = trans.Translation; + if (applyRotation) + actorNode.Actor.Orientation = trans.Orientation; + if (applyScale) + actorNode.Actor.Scale = trans.Scale; + } + else + obj.Transform = trans; } }