From ccccfb2c5b87686ed08ad2e617aa9db4f1fa56f8 Mon Sep 17 00:00:00 2001 From: greerdv Date: Tue, 25 May 2021 14:56:08 +0100 Subject: [PATCH] more tidying up --- .../GridMate/Serialize/CompressionMarshal.cpp | 15 +++++----- .../RowWidgets/TransformRowHandler.cpp | 10 +++---- .../SceneUI/RowWidgets/TransformRowWidget.cpp | 28 +++++++++++-------- .../SceneUI/RowWidgets/TransformRowWidget.h | 16 ++++------- .../RowWidgets/TransformRowWidgetTests.cpp | 20 +++++++------ Gems/PhysX/Code/Source/Utils.cpp | 6 ++-- .../Code/Include/ScriptCanvas/Core/Datum.cpp | 6 ++-- .../Libraries/Math/TransformNodes.h | 4 +-- 8 files changed, 53 insertions(+), 52 deletions(-) diff --git a/Code/Framework/GridMate/GridMate/Serialize/CompressionMarshal.cpp b/Code/Framework/GridMate/GridMate/Serialize/CompressionMarshal.cpp index 9dc7de1cf7..751e151ec6 100644 --- a/Code/Framework/GridMate/GridMate/Serialize/CompressionMarshal.cpp +++ b/Code/Framework/GridMate/GridMate/Serialize/CompressionMarshal.cpp @@ -488,17 +488,18 @@ void TransformCompressor::Marshal(WriteBuffer& wb, const AZ::Transform& value) c { AZ::u8 flags = 0; auto flagsMarker = wb.InsertMarker(flags); - float scale = value.GetUniformScale(); - AZ::Quaternion rot = value.GetRotation(); + AZ::Matrix3x3 m33 = AZ::Matrix3x3::CreateFromTransform(value); + AZ::Vector3 scale = m33.ExtractScale(); + AZ::Quaternion rot = AZ::Quaternion::CreateFromMatrix3x3(m33.GetOrthogonalized()); if (!rot.IsIdentity()) { flags |= HAS_ROT; wb.Write(rot, QuatCompMarshaler()); } - if (!AZ::IsClose(scale, 1.0f)) + if (!scale.IsClose(AZ::Vector3::CreateOne())) { flags |= HAS_SCALE; - wb.Write(scale, HalfMarshaler()); + wb.Write(scale, Vec3CompMarshaler()); } AZ::Vector3 pos = value.GetTranslation(); if (!pos.IsZero()) @@ -526,9 +527,9 @@ void TransformCompressor::Unmarshal(AZ::Transform& value, ReadBuffer& rb) const } if (flags & HAS_SCALE) { - float scale; - rb.Read(scale, HalfMarshaler()); - xform.MultiplyByUniformScale(scale); + AZ::Vector3 scale; + rb.Read(scale, Vec3CompMarshaler()); + xform.MultiplyByScale(scale); } if (flags & HAS_POS) { diff --git a/Code/Tools/SceneAPI/SceneUI/RowWidgets/TransformRowHandler.cpp b/Code/Tools/SceneAPI/SceneUI/RowWidgets/TransformRowHandler.cpp index 640c092070..322aa9ac51 100644 --- a/Code/Tools/SceneAPI/SceneUI/RowWidgets/TransformRowHandler.cpp +++ b/Code/Tools/SceneAPI/SceneUI/RowWidgets/TransformRowHandler.cpp @@ -13,7 +13,6 @@ #include #include #include -#include #include namespace AZ @@ -59,11 +58,10 @@ namespace AZ } else { - AzToolsFramework::Vector3PropertyHandler vector3Handler; - vector3Handler.ConsumeAttribute(widget->GetTranslationWidget(), attrib, attrValue, debugName); - vector3Handler.ConsumeAttribute(widget->GetRotationWidget(), attrib, attrValue, debugName); - AzToolsFramework::doublePropertySpinboxHandler spinboxHandler; - spinboxHandler.ConsumeAttribute(widget->GetScaleWidget(), attrib, attrValue, debugName); + AzToolsFramework::Vector3PropertyHandler handler; + handler.ConsumeAttribute(widget->GetTranslationWidget(), attrib, attrValue, debugName); + handler.ConsumeAttribute(widget->GetRotationWidget(), attrib, attrValue, debugName); + handler.ConsumeAttribute(widget->GetScaleWidget(), attrib, attrValue, debugName); } } diff --git a/Code/Tools/SceneAPI/SceneUI/RowWidgets/TransformRowWidget.cpp b/Code/Tools/SceneAPI/SceneUI/RowWidgets/TransformRowWidget.cpp index e8ecaa0c27..10e0fd2a68 100644 --- a/Code/Tools/SceneAPI/SceneUI/RowWidgets/TransformRowWidget.cpp +++ b/Code/Tools/SceneAPI/SceneUI/RowWidgets/TransformRowWidget.cpp @@ -15,7 +15,6 @@ #include #include #include -#include #include #include @@ -48,7 +47,7 @@ namespace AZ ExpandedTransform::ExpandedTransform() : m_translation(0, 0, 0) , m_rotation(0, 0, 0) - , m_scale(1) + , m_scale(1, 1, 1) { } @@ -61,14 +60,14 @@ namespace AZ { m_translation = transform.GetTranslation(); m_rotation = transform.GetEulerDegrees(); - m_scale = transform.GetUniformScale(); + m_scale = transform.GetScale(); } void ExpandedTransform::GetTransform(AZ::Transform& transform) const { transform = Transform::CreateTranslation(m_translation); transform *= AZ::ConvertEulerDegreesToTransform(m_rotation); - transform.MultiplyByUniformScale(m_scale); + transform.MultiplyByScale(m_scale); } const AZ::Vector3& ExpandedTransform::GetTranslation() const @@ -91,12 +90,12 @@ namespace AZ m_rotation = rotation; } - const float ExpandedTransform::GetScale() const + const AZ::Vector3& ExpandedTransform::GetScale() const { return m_scale; } - void ExpandedTransform::SetScale(const float scale) + void ExpandedTransform::SetScale(const AZ::Vector3& scale) { m_scale = scale; } @@ -132,7 +131,7 @@ namespace AZ m_rotationWidget->setMaximum(360); m_rotationWidget->setSuffix(" degrees"); - m_scaleWidget = new AzToolsFramework::PropertyDoubleSpinCtrl(this); + m_scaleWidget = new AzQtComponents::VectorInput(this, 3); m_scaleWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); m_scaleWidget->setMinimum(0); m_scaleWidget->setMaximum(10000); @@ -192,10 +191,13 @@ namespace AZ AzToolsFramework::PropertyEditorGUIMessages::Bus::Broadcast(&AzToolsFramework::PropertyEditorGUIMessages::RequestWrite, this); }); - QObject::connect(m_scaleWidget, &AzToolsFramework::PropertyDoubleSpinCtrl::valueChanged, this, [this] + QObject::connect(m_scaleWidget, &AzQtComponents::VectorInput::valueChanged, this, [this] { - AzToolsFramework::PropertyDoubleSpinCtrl* widget = this->GetScaleWidget(); - float scale = aznumeric_cast(widget->value()); + AzQtComponents::VectorInput* widget = this->GetScaleWidget(); + AZ::Vector3 scale; + + PopulateVector3(widget, scale); + m_transform.SetScale(scale); AzToolsFramework::PropertyEditorGUIMessages::Bus::Broadcast(&AzToolsFramework::PropertyEditorGUIMessages::RequestWrite, this); }); @@ -222,7 +224,9 @@ namespace AZ m_rotationWidget->setValuebyIndex(m_transform.GetRotation().GetY(), 1); m_rotationWidget->setValuebyIndex(m_transform.GetRotation().GetZ(), 2); - m_scaleWidget->setValue(m_transform.GetScale()); + m_scaleWidget->setValuebyIndex(m_transform.GetScale().GetX(), 0); + m_scaleWidget->setValuebyIndex(m_transform.GetScale().GetY(), 1); + m_scaleWidget->setValuebyIndex(m_transform.GetScale().GetZ(), 2); blockSignals(false); } @@ -247,7 +251,7 @@ namespace AZ return m_rotationWidget; } - AzToolsFramework::PropertyDoubleSpinCtrl* TransformRowWidget::GetScaleWidget() + AzQtComponents::VectorInput* TransformRowWidget::GetScaleWidget() { return m_scaleWidget; } diff --git a/Code/Tools/SceneAPI/SceneUI/RowWidgets/TransformRowWidget.h b/Code/Tools/SceneAPI/SceneUI/RowWidgets/TransformRowWidget.h index 3977d26c7c..dc3286f80e 100644 --- a/Code/Tools/SceneAPI/SceneUI/RowWidgets/TransformRowWidget.h +++ b/Code/Tools/SceneAPI/SceneUI/RowWidgets/TransformRowWidget.h @@ -21,7 +21,6 @@ #include #include #include - #endif namespace AzQtComponents @@ -29,11 +28,6 @@ namespace AzQtComponents class VectorInput; } -namespace AzToolsFramework -{ - class PropertyDoubleSpinCtrl; -} - namespace AZ { namespace SceneAPI @@ -57,14 +51,14 @@ namespace AZ const AZ::Vector3& GetRotation() const; void SetRotation(const AZ::Vector3& translation); - const float GetScale() const; - void SetScale(const float scale); + const AZ::Vector3& GetScale() const; + void SetScale(const AZ::Vector3& scale); private: AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING AZ::Vector3 m_translation; AZ::Vector3 m_rotation; - float m_scale; + AZ::Vector3 m_scale; AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING }; @@ -84,7 +78,7 @@ namespace AZ AzQtComponents::VectorInput* GetTranslationWidget(); AzQtComponents::VectorInput* GetRotationWidget(); - AzToolsFramework::PropertyDoubleSpinCtrl* GetScaleWidget(); + AzQtComponents::VectorInput* GetScaleWidget(); protected: ExpandedTransform m_transform; @@ -93,7 +87,7 @@ namespace AZ AzQtComponents::VectorInput* m_translationWidget; AzQtComponents::VectorInput* m_rotationWidget; - AzToolsFramework::PropertyDoubleSpinCtrl* m_scaleWidget; + AzQtComponents::VectorInput* m_scaleWidget; }; } // namespace SceneUI } // namespace SceneAPI diff --git a/Code/Tools/SceneAPI/SceneUI/Tests/RowWidgets/TransformRowWidgetTests.cpp b/Code/Tools/SceneAPI/SceneUI/Tests/RowWidgets/TransformRowWidgetTests.cpp index cda6582e63..05082f29fb 100644 --- a/Code/Tools/SceneAPI/SceneUI/Tests/RowWidgets/TransformRowWidgetTests.cpp +++ b/Code/Tools/SceneAPI/SceneUI/Tests/RowWidgets/TransformRowWidgetTests.cpp @@ -30,7 +30,7 @@ namespace AZ Vector3 m_translation = Vector3(10.0f, 20.0f, 30.0f); Vector3 m_rotation = Vector3(30.0f, 45.0f, 60.0f); - float m_scale = 3.0f; + Vector3 m_scale = Vector3(2.0f, 3.0f, 4.0f); }; TEST_F(TransformRowWidgetTest, GetTranslation_TranslationInMatrix_TranslationCanBeRetrievedDirectly) @@ -83,22 +83,26 @@ namespace AZ TEST_F(TransformRowWidgetTest, GetScale_ScaleInMatrix_ScaleCanBeRetrievedDirectly) { - m_transform = Transform::CreateUniformScale(m_scale); + m_transform = Transform::CreateScale(m_scale); m_expanded.SetTransform(m_transform); - const float returned = m_expanded.GetScale(); - EXPECT_NEAR(m_scale, returned, 0.1f); + const Vector3& returned = m_expanded.GetScale(); + EXPECT_NEAR(m_scale.GetX(), returned.GetX(), 0.1f); + EXPECT_NEAR(m_scale.GetY(), returned.GetY(), 0.1f); + EXPECT_NEAR(m_scale.GetZ(), returned.GetZ(), 0.1f); } TEST_F(TransformRowWidgetTest, GetScale_ScaleInMatrix_ScaleCanBeRetrievedFromTransform) { - m_transform = Transform::CreateUniformScale(m_scale); + m_transform = Transform::CreateScale(m_scale); m_expanded.SetTransform(m_transform); Transform rebuild; m_expanded.GetTransform(rebuild); - float returned = rebuild.GetUniformScale(); - EXPECT_NEAR(m_scale, returned, 0.1f); + Vector3 returned = rebuild.GetScale(); + EXPECT_NEAR(m_scale.GetX(), returned.GetX(), 0.1f); + EXPECT_NEAR(m_scale.GetY(), returned.GetY(), 0.1f); + EXPECT_NEAR(m_scale.GetZ(), returned.GetZ(), 0.1f); } TEST_F(TransformRowWidgetTest, GetTransform_RotateAndTranslateInMatrix_ReconstructedTransformMatchesOriginal) @@ -117,7 +121,7 @@ namespace AZ { Quaternion quaternion = AZ::ConvertEulerDegreesToQuaternion(m_rotation); m_transform = Transform::CreateFromQuaternionAndTranslation(quaternion, m_translation); - m_transform.MultiplyByUniformScale(m_scale); + m_transform.MultiplyByScale(m_scale); m_expanded.SetTransform(m_transform); Transform rebuild; diff --git a/Gems/PhysX/Code/Source/Utils.cpp b/Gems/PhysX/Code/Source/Utils.cpp index 87cadcd929..a85426d532 100644 --- a/Gems/PhysX/Code/Source/Utils.cpp +++ b/Gems/PhysX/Code/Source/Utils.cpp @@ -920,9 +920,9 @@ namespace PhysX AZ::Vector3 GetTransformScale(AZ::EntityId entityId) { - float worldScale = 1.0f; - AZ::TransformBus::EventResult(worldScale, entityId, &AZ::TransformBus::Events::GetWorldUniformScale); - return AZ::Vector3(worldScale); + AZ::Vector3 worldScale = AZ::Vector3::CreateOne(); + AZ::TransformBus::EventResult(worldScale, entityId, &AZ::TransformBus::Events::GetWorldScale); + return worldScale; } AZ::Vector3 GetUniformScale(AZ::EntityId entityId) diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Datum.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Datum.cpp index 30e55cee49..a0db02c3a8 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Datum.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Datum.cpp @@ -2527,15 +2527,15 @@ namespace ScriptCanvas { Data::TransformType copy(source); AZ::Vector3 pos = copy.GetTranslation(); - float scale = copy.ExtractUniformScale(); + AZ::Vector3 scale = copy.ExtractScale(); AZ::Vector3 rotation = AZ::ConvertTransformToEulerDegrees(copy); return AZStd::string::format ( "(Position: X: %f, Y: %f, Z: %f," " Rotation: X: %f, Y: %f, Z: %f," - " Scale: %f)" + " Scale: X: %f, Y: %f, Z: %f)" , static_cast(pos.GetX()), static_cast(pos.GetY()), static_cast(pos.GetZ()) , static_cast(rotation.GetX()), static_cast(rotation.GetY()), static_cast(rotation.GetZ()) - , scale); + , static_cast(scale.GetX()), static_cast(scale.GetY()), static_cast(scale.GetZ())); } AZStd::string Datum::ToStringVector2(const AZ::Vector2& source) const diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/TransformNodes.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/TransformNodes.h index 7aafdf584e..6a0f082272 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/TransformNodes.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/TransformNodes.h @@ -26,9 +26,9 @@ namespace ScriptCanvas using namespace MathNodeUtilities; static const char* k_categoryName = "Math/Transform"; - AZ_INLINE std::tuple ExtractScale(TransformType source) + AZ_INLINE std::tuple ExtractScale(TransformType source) { - auto scale(source.ExtractUniformScale()); + auto scale(source.ExtractScale()); return std::make_tuple( scale, source ); } SCRIPT_CANVAS_GENERIC_FUNCTION_MULTI_RESULTS_NODE(ExtractScale, k_categoryName, "{8DFE5247-0950-4CD1-87E6-0CAAD42F1637}", "returns a vector which is the length of the scale components, and a transform with the scale extracted ", "Source", "Scale", "Extracted");