more tidying up
This commit is contained in:
@@ -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)
|
||||
{
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
#include <AzCore/EBus/EBus.h>
|
||||
#include <AzToolsFramework/Debug/TraceContext.h>
|
||||
#include <AzToolsFramework/UI/PropertyEditor/PropertyVectorCtrl.hxx>
|
||||
#include <AzToolsFramework/UI/PropertyEditor/PropertyDoubleSpinCtrl.hxx>
|
||||
#include <SceneAPI/SceneUI/RowWidgets/TransformRowHandler.h>
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
#include <QGridLayout>
|
||||
#include <SceneAPI/SceneUI/RowWidgets/TransformRowWidget.h>
|
||||
#include <AzQtComponents/Components/Widgets/VectorInput.h>
|
||||
#include <AzToolsFramework/UI/PropertyEditor/PropertyDoubleSpinCtrl.hxx>
|
||||
#include <AzToolsFramework/UI/PropertyEditor/PropertyEditorAPI.h>
|
||||
#include <AzToolsFramework/UI/PropertyEditor/PropertyRowWidget.hxx>
|
||||
|
||||
@@ -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<float>(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;
|
||||
}
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
#include <AzCore/Math/Uuid.h>
|
||||
#include <AzCore/Memory/SystemAllocator.h>
|
||||
#include <SceneAPI/SceneUI/SceneUIConfiguration.h>
|
||||
|
||||
#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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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<float>(pos.GetX()), static_cast<float>(pos.GetY()), static_cast<float>(pos.GetZ())
|
||||
, static_cast<float>(rotation.GetX()), static_cast<float>(rotation.GetY()), static_cast<float>(rotation.GetZ())
|
||||
, scale);
|
||||
, static_cast<float>(scale.GetX()), static_cast<float>(scale.GetY()), static_cast<float>(scale.GetZ()));
|
||||
}
|
||||
|
||||
AZStd::string Datum::ToStringVector2(const AZ::Vector2& source) const
|
||||
|
||||
@@ -26,9 +26,9 @@ namespace ScriptCanvas
|
||||
using namespace MathNodeUtilities;
|
||||
static const char* k_categoryName = "Math/Transform";
|
||||
|
||||
AZ_INLINE std::tuple<NumberType, TransformType> ExtractScale(TransformType source)
|
||||
AZ_INLINE std::tuple<Vector3Type, TransformType> 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");
|
||||
|
||||
Reference in New Issue
Block a user