From a71a5746ccd6734a68b8c592cab757879993301f Mon Sep 17 00:00:00 2001
From: sphrose <82213493+sphrose@users.noreply.github.com>
Date: Tue, 13 Apr 2021 17:15:10 +0100
Subject: [PATCH 001/629] [LY-113714] Jira: LY-113714
https://jira.agscollab.com/browse/LY-113714
---
.../Serialization/EditContextConstants.inl | 2 +
.../Components/img/UI20/line.svg | 7 ++++
.../AzQtComponents/Components/resources.qrc | 1 +
.../UI/PropertyEditor/PropertyRowWidget.cpp | 37 ++++++++++++++++++-
.../UI/PropertyEditor/PropertyRowWidget.hxx | 8 ++++
Code/Sandbox/Editor/Style/Editor.qss | 5 +++
Gems/Vegetation/Code/Source/Descriptor.cpp | 2 +
7 files changed, 61 insertions(+), 1 deletion(-)
create mode 100644 Code/Framework/AzQtComponents/AzQtComponents/Components/img/UI20/line.svg
diff --git a/Code/Framework/AzCore/AzCore/Serialization/EditContextConstants.inl b/Code/Framework/AzCore/AzCore/Serialization/EditContextConstants.inl
index d4658d4e8c..de67013741 100644
--- a/Code/Framework/AzCore/AzCore/Serialization/EditContextConstants.inl
+++ b/Code/Framework/AzCore/AzCore/Serialization/EditContextConstants.inl
@@ -62,6 +62,8 @@ namespace AZ
const static AZ::Crc32 ButtonTooltip = AZ_CRC("ButtonTooltip", 0x1605a7d2);
const static AZ::Crc32 CheckboxTooltip = AZ_CRC("CheckboxTooltip", 0x1159eb78);
const static AZ::Crc32 CheckboxDefaultValue = AZ_CRC("CheckboxDefaultValue", 0x03f117e6);
+ //! Emboldens the text and adds a line above this item within the RPE.
+ const static AZ::Crc32 RPESectionSeparator = AZ_CRC("RPESectionSeparator", 0xc6249a95);
//! Affects the display order of a node relative to it's parent/children. Higher values display further down (after) lower values. Default is 0, negative values are allowed. Must be applied as an attribute to the EditorData element
const static AZ::Crc32 DisplayOrder = AZ_CRC("DisplayOrder", 0x23660ec2);
//! Specifies whether the UI should support multi-edit for aggregate instances of this property
diff --git a/Code/Framework/AzQtComponents/AzQtComponents/Components/img/UI20/line.svg b/Code/Framework/AzQtComponents/AzQtComponents/Components/img/UI20/line.svg
new file mode 100644
index 0000000000..60f7c07c8d
--- /dev/null
+++ b/Code/Framework/AzQtComponents/AzQtComponents/Components/img/UI20/line.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/Code/Framework/AzQtComponents/AzQtComponents/Components/resources.qrc b/Code/Framework/AzQtComponents/AzQtComponents/Components/resources.qrc
index 77dead96a1..decc1bd72f 100644
--- a/Code/Framework/AzQtComponents/AzQtComponents/Components/resources.qrc
+++ b/Code/Framework/AzQtComponents/AzQtComponents/Components/resources.qrc
@@ -627,6 +627,7 @@
img/UI20/Settings.svg
img/UI20/Asset_Folder.svg
img/UI20/Asset_File.svg
+ img/UI20/line.svg
img/UI20/AssetEditor/default_document.svg
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyRowWidget.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyRowWidget.cpp
index 8c371baf8c..a16c1f7480 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyRowWidget.cpp
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyRowWidget.cpp
@@ -44,6 +44,24 @@ namespace AzToolsFramework
m_iconOpen = s_iconOpen;
m_iconClosed = s_iconClosed;
+ m_outerLayout = new QVBoxLayout(nullptr);
+ m_outerLayout->setSpacing(0);
+ m_outerLayout->setContentsMargins(0, 0, 0, 0);
+
+ // separatorLayout will contain a spacer and a separator line. The width of the spacer is adjusted later to ensure the line is the
+ // correct length.
+ QHBoxLayout* separatorLayout = new QHBoxLayout(nullptr);
+ m_outerLayout->addLayout(separatorLayout);
+
+ m_separatorIndent = new QSpacerItem(1, 1);
+ separatorLayout->addItem(m_separatorIndent);
+
+ m_separatorLine.load(QStringLiteral(":/Gallery/line.svg"));
+ m_separatorLine.setFixedHeight(3);
+
+ separatorLayout->addWidget(&m_separatorLine);
+ m_separatorLine.setVisible(false);
+
m_mainLayout = new QHBoxLayout();
m_mainLayout->setSpacing(0);
m_mainLayout->setContentsMargins(0, 1, 0, 1);
@@ -118,7 +136,8 @@ namespace AzToolsFramework
m_handler = nullptr;
m_containerSize = 0;
- setLayout(m_mainLayout);
+ m_outerLayout->addLayout(m_mainLayout);
+ setLayout(m_outerLayout);
}
bool PropertyRowWidget::HasChildWidgetAlready() const
@@ -301,6 +320,9 @@ namespace AzToolsFramework
}
}
+ m_isSectionSeparator = false;
+ m_separatorLine.setVisible(false);
+
RefreshAttributesFromNode(true);
// --------------------- HANDLER discovery:
@@ -946,6 +968,11 @@ namespace AzToolsFramework
{
HandleChangeNotifyAttribute(reader, m_sourceNode ? m_sourceNode->GetParent() : nullptr, m_editingCompleteNotifiers);
}
+ else if (attributeName == AZ::Edit::Attributes::RPESectionSeparator)
+ {
+ m_separatorLine.setVisible(true);
+ m_isSectionSeparator = true;
+ }
}
void PropertyRowWidget::SetReadOnlyQueryFunction(const ReadOnlyQueryFunction& readOnlyQueryFunction)
@@ -1070,6 +1097,7 @@ namespace AzToolsFramework
{
m_dropDownArrow->hide();
}
+ m_separatorIndent->changeSize((m_treeDepth * m_treeIndentation) + m_leafIndentation, 1, QSizePolicy::Fixed, QSizePolicy::Fixed);
m_indent->changeSize((m_treeDepth * m_treeIndentation) + m_leafIndentation, 1, QSizePolicy::Fixed, QSizePolicy::Fixed);
m_leftHandSideLayout->invalidate();
m_leftHandSideLayout->update();
@@ -1085,6 +1113,7 @@ namespace AzToolsFramework
connect(m_dropDownArrow, &QCheckBox::clicked, this, &PropertyRowWidget::OnClickedExpansionButton);
}
m_dropDownArrow->show();
+ m_separatorIndent->changeSize((m_treeDepth * m_treeIndentation), 1, QSizePolicy::Fixed, QSizePolicy::Fixed);
m_indent->changeSize((m_treeDepth * m_treeIndentation), 1, QSizePolicy::Fixed, QSizePolicy::Fixed);
m_leftHandSideLayout->invalidate();
m_leftHandSideLayout->update();
@@ -1095,6 +1124,7 @@ namespace AzToolsFramework
void PropertyRowWidget::SetIndentSize(int w)
{
+ m_separatorIndent->changeSize(w, 1, QSizePolicy::Fixed, QSizePolicy::Fixed);
m_indent->changeSize(w, 1, QSizePolicy::Fixed, QSizePolicy::Fixed);
m_leftHandSideLayout->invalidate();
m_leftHandSideLayout->update();
@@ -1318,6 +1348,11 @@ namespace AzToolsFramework
return canBeTopLevel(this);
}
+ bool PropertyRowWidget::IsSectionSeparator() const
+ {
+ return m_isSectionSeparator;
+ }
+
bool PropertyRowWidget::GetAppendDefaultLabelToName()
{
return false;
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyRowWidget.hxx b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyRowWidget.hxx
index e4b538ccdc..af1b68b66f 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyRowWidget.hxx
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyRowWidget.hxx
@@ -25,6 +25,7 @@ AZ_PUSH_DISABLE_WARNING(4251, "-Wunknown-warning-option") // class '...' needs t
#include
#include
#include
+#include
#include
AZ_POP_DISABLE_WARNING
@@ -44,6 +45,7 @@ namespace AzToolsFramework
Q_PROPERTY(bool hasChildRows READ HasChildRows);
Q_PROPERTY(bool isTopLevel READ IsTopLevel);
Q_PROPERTY(int getLevel READ GetLevel);
+ Q_PROPERTY(bool isSectionSeparator READ IsSectionSeparator);
Q_PROPERTY(bool appendDefaultLabelToName READ GetAppendDefaultLabelToName WRITE AppendDefaultLabelToName)
public:
AZ_CLASS_ALLOCATOR(PropertyRowWidget, AZ::SystemAllocator, 0)
@@ -82,6 +84,7 @@ namespace AzToolsFramework
PropertyRowWidget* GetParentRow() const { return m_parentRow; }
int GetLevel() const;
bool IsTopLevel() const;
+ bool IsSectionSeparator() const;
// Remove the default label and append the text to the name label.
bool GetAppendDefaultLabelToName();
@@ -161,6 +164,9 @@ namespace AzToolsFramework
QHBoxLayout* m_leftHandSideLayout;
QHBoxLayout* m_middleLayout;
QHBoxLayout* m_rightHandSideLayout;
+ QVBoxLayout* m_outerLayout;
+ QSvgWidget m_separatorLine;
+ QSpacerItem* m_separatorIndent;
QPointer m_dropDownArrow;
QPointer m_containerClearButton;
@@ -229,6 +235,8 @@ namespace AzToolsFramework
int m_treeIndentation = 14;
int m_leafIndentation = 16;
+ bool m_isSectionSeparator = false;
+
QIcon m_iconOpen;
QIcon m_iconClosed;
diff --git a/Code/Sandbox/Editor/Style/Editor.qss b/Code/Sandbox/Editor/Style/Editor.qss
index 0c3f64b85c..7887560105 100644
--- a/Code/Sandbox/Editor/Style/Editor.qss
+++ b/Code/Sandbox/Editor/Style/Editor.qss
@@ -38,6 +38,11 @@ AzToolsFramework--ComponentPaletteWidget > QTreeView
background-color: #222222;
}
+AzToolsFramework--PropertyRowWidget[isSectionSeparator="true"] QLabel#Name
+{
+ font-weight: bold;
+}
+
/* Style for visualizing property values overridden from their prefab values */
AzToolsFramework--PropertyRowWidget[IsOverridden=true] #Name QLabel,
AzToolsFramework--ComponentEditorHeader #Title[IsOverridden="true"]
diff --git a/Gems/Vegetation/Code/Source/Descriptor.cpp b/Gems/Vegetation/Code/Source/Descriptor.cpp
index 93a301f073..4fd1037f09 100644
--- a/Gems/Vegetation/Code/Source/Descriptor.cpp
+++ b/Gems/Vegetation/Code/Source/Descriptor.cpp
@@ -170,6 +170,8 @@ namespace Vegetation
{
edit->Class(
"Vegetation Descriptor", "Details used to create vegetation instances")
+ ->ClassElement(AZ::Edit::ClassElements::EditorData, "")
+ ->Attribute(AZ::Edit::Attributes::RPESectionSeparator, true)
// For this ComboBox to actually work, there is a PropertyHandler registration in EditorVegetationSystemComponent.cpp
->DataElement(AZ::Edit::UIHandlers::ComboBox, &Descriptor::m_spawnerType, "Instance Spawner", "The type of instances to spawn")
->Attribute(AZ::Edit::Attributes::GenericValueList, &Descriptor::GetSpawnerTypeList)
From a94700786133526d14971bddfdd87e5d989d8678 Mon Sep 17 00:00:00 2001
From: sphrose <82213493+sphrose@users.noreply.github.com>
Date: Wed, 14 Apr 2021 15:15:42 +0100
Subject: [PATCH 002/629] Darken line
---
.../AzQtComponents/AzQtComponents/Components/img/UI20/line.svg | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Code/Framework/AzQtComponents/AzQtComponents/Components/img/UI20/line.svg b/Code/Framework/AzQtComponents/AzQtComponents/Components/img/UI20/line.svg
index 60f7c07c8d..fe01efddba 100644
--- a/Code/Framework/AzQtComponents/AzQtComponents/Components/img/UI20/line.svg
+++ b/Code/Framework/AzQtComponents/AzQtComponents/Components/img/UI20/line.svg
@@ -2,6 +2,6 @@
\ No newline at end of file
From 2dbd9e4a050e141a45c85a12b4d245f0695f581a Mon Sep 17 00:00:00 2001
From: sphrose <82213493+sphrose@users.noreply.github.com>
Date: Mon, 19 Apr 2021 15:54:41 +0100
Subject: [PATCH 003/629] Changed to use direct line drawing rather than adding
svg.
---
.../Components/img/UI20/line.svg | 7 ----
.../UI/PropertyEditor/PropertyRowWidget.cpp | 40 +++++++------------
.../UI/PropertyEditor/PropertyRowWidget.hxx | 4 +-
3 files changed, 16 insertions(+), 35 deletions(-)
delete mode 100644 Code/Framework/AzQtComponents/AzQtComponents/Components/img/UI20/line.svg
diff --git a/Code/Framework/AzQtComponents/AzQtComponents/Components/img/UI20/line.svg b/Code/Framework/AzQtComponents/AzQtComponents/Components/img/UI20/line.svg
deleted file mode 100644
index fe01efddba..0000000000
--- a/Code/Framework/AzQtComponents/AzQtComponents/Components/img/UI20/line.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
\ No newline at end of file
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyRowWidget.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyRowWidget.cpp
index a16c1f7480..5b02e81e6d 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyRowWidget.cpp
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyRowWidget.cpp
@@ -27,6 +27,7 @@ AZ_PUSH_DISABLE_WARNING(4244 4251 4800, "-Wunknown-warning-option") // 4244: con
#include
#include
#include
+#include
AZ_POP_DISABLE_WARNING
static const int LabelColumnStretch = 2;
@@ -44,24 +45,6 @@ namespace AzToolsFramework
m_iconOpen = s_iconOpen;
m_iconClosed = s_iconClosed;
- m_outerLayout = new QVBoxLayout(nullptr);
- m_outerLayout->setSpacing(0);
- m_outerLayout->setContentsMargins(0, 0, 0, 0);
-
- // separatorLayout will contain a spacer and a separator line. The width of the spacer is adjusted later to ensure the line is the
- // correct length.
- QHBoxLayout* separatorLayout = new QHBoxLayout(nullptr);
- m_outerLayout->addLayout(separatorLayout);
-
- m_separatorIndent = new QSpacerItem(1, 1);
- separatorLayout->addItem(m_separatorIndent);
-
- m_separatorLine.load(QStringLiteral(":/Gallery/line.svg"));
- m_separatorLine.setFixedHeight(3);
-
- separatorLayout->addWidget(&m_separatorLine);
- m_separatorLine.setVisible(false);
-
m_mainLayout = new QHBoxLayout();
m_mainLayout->setSpacing(0);
m_mainLayout->setContentsMargins(0, 1, 0, 1);
@@ -136,8 +119,20 @@ namespace AzToolsFramework
m_handler = nullptr;
m_containerSize = 0;
- m_outerLayout->addLayout(m_mainLayout);
- setLayout(m_outerLayout);
+ setLayout(m_mainLayout);
+ }
+
+ void PropertyRowWidget::paintEvent(QPaintEvent* event)
+ {
+ QStylePainter p(this);
+
+ if (IsSectionSeparator())
+ {
+ const QPen linePen(QColor(0x3B3E3F));
+ p.setPen(linePen);
+ int indent = m_treeDepth * m_treeIndentation;
+ p.drawLine(event->rect().topLeft() + QPoint(indent, 0), event->rect().topRight());
+ }
}
bool PropertyRowWidget::HasChildWidgetAlready() const
@@ -321,7 +316,6 @@ namespace AzToolsFramework
}
m_isSectionSeparator = false;
- m_separatorLine.setVisible(false);
RefreshAttributesFromNode(true);
@@ -970,7 +964,6 @@ namespace AzToolsFramework
}
else if (attributeName == AZ::Edit::Attributes::RPESectionSeparator)
{
- m_separatorLine.setVisible(true);
m_isSectionSeparator = true;
}
}
@@ -1097,7 +1090,6 @@ namespace AzToolsFramework
{
m_dropDownArrow->hide();
}
- m_separatorIndent->changeSize((m_treeDepth * m_treeIndentation) + m_leafIndentation, 1, QSizePolicy::Fixed, QSizePolicy::Fixed);
m_indent->changeSize((m_treeDepth * m_treeIndentation) + m_leafIndentation, 1, QSizePolicy::Fixed, QSizePolicy::Fixed);
m_leftHandSideLayout->invalidate();
m_leftHandSideLayout->update();
@@ -1113,7 +1105,6 @@ namespace AzToolsFramework
connect(m_dropDownArrow, &QCheckBox::clicked, this, &PropertyRowWidget::OnClickedExpansionButton);
}
m_dropDownArrow->show();
- m_separatorIndent->changeSize((m_treeDepth * m_treeIndentation), 1, QSizePolicy::Fixed, QSizePolicy::Fixed);
m_indent->changeSize((m_treeDepth * m_treeIndentation), 1, QSizePolicy::Fixed, QSizePolicy::Fixed);
m_leftHandSideLayout->invalidate();
m_leftHandSideLayout->update();
@@ -1124,7 +1115,6 @@ namespace AzToolsFramework
void PropertyRowWidget::SetIndentSize(int w)
{
- m_separatorIndent->changeSize(w, 1, QSizePolicy::Fixed, QSizePolicy::Fixed);
m_indent->changeSize(w, 1, QSizePolicy::Fixed, QSizePolicy::Fixed);
m_leftHandSideLayout->invalidate();
m_leftHandSideLayout->update();
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyRowWidget.hxx b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyRowWidget.hxx
index af1b68b66f..d08779caa4 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyRowWidget.hxx
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyRowWidget.hxx
@@ -129,6 +129,7 @@ namespace AzToolsFramework
void SetSelectionEnabled(bool selectionEnabled);
void SetSelected(bool selected);
bool eventFilter(QObject *watched, QEvent *event) override;
+ void paintEvent(QPaintEvent*) override;
/// Apply tooltip to widget and some of its children.
void SetDescription(const QString& text);
@@ -164,9 +165,6 @@ namespace AzToolsFramework
QHBoxLayout* m_leftHandSideLayout;
QHBoxLayout* m_middleLayout;
QHBoxLayout* m_rightHandSideLayout;
- QVBoxLayout* m_outerLayout;
- QSvgWidget m_separatorLine;
- QSpacerItem* m_separatorIndent;
QPointer m_dropDownArrow;
QPointer m_containerClearButton;
From b1d8330870f31399d05aa0c1d1b28e5f55512580 Mon Sep 17 00:00:00 2001
From: sphrose <82213493+sphrose@users.noreply.github.com>
Date: Tue, 20 Apr 2021 17:20:19 +0100
Subject: [PATCH 004/629] Review fixes.
---
.../AzQtComponents/AzQtComponents/Components/resources.qrc | 1 -
.../AzToolsFramework/UI/PropertyEditor/PropertyRowWidget.hxx | 1 -
2 files changed, 2 deletions(-)
diff --git a/Code/Framework/AzQtComponents/AzQtComponents/Components/resources.qrc b/Code/Framework/AzQtComponents/AzQtComponents/Components/resources.qrc
index e253c6492d..f9e601fb6d 100644
--- a/Code/Framework/AzQtComponents/AzQtComponents/Components/resources.qrc
+++ b/Code/Framework/AzQtComponents/AzQtComponents/Components/resources.qrc
@@ -630,7 +630,6 @@
img/UI20/Settings.svg
img/UI20/Asset_Folder.svg
img/UI20/Asset_File.svg
- img/UI20/line.svg
img/UI20/AssetEditor/default_document.svg
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyRowWidget.hxx b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyRowWidget.hxx
index d08779caa4..2fb695fca5 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyRowWidget.hxx
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyRowWidget.hxx
@@ -25,7 +25,6 @@ AZ_PUSH_DISABLE_WARNING(4251, "-Wunknown-warning-option") // class '...' needs t
#include
#include
#include
-#include
#include
AZ_POP_DISABLE_WARNING
From 099f43237debb61e3ac047f27451760599445eac Mon Sep 17 00:00:00 2001
From: greerdv
Date: Fri, 23 Apr 2021 10:13:24 +0100
Subject: [PATCH 005/629] removing long deprecated transform scale functions
---
.../AzCore/AzCore/Component/TransformBus.h | 40 --------
.../Components/TransformComponent.cpp | 93 -------------------
.../Components/TransformComponent.h | 10 --
.../ToolsComponents/TransformComponent.cpp | 70 --------------
.../ToolsComponents/TransformComponent.h | 10 --
.../Tests/ShapeColliderComponentTests.cpp | 2 +-
6 files changed, 1 insertion(+), 224 deletions(-)
diff --git a/Code/Framework/AzCore/AzCore/Component/TransformBus.h b/Code/Framework/AzCore/AzCore/Component/TransformBus.h
index 2003b949e2..e34fa6a97b 100644
--- a/Code/Framework/AzCore/AzCore/Component/TransformBus.h
+++ b/Code/Framework/AzCore/AzCore/Component/TransformBus.h
@@ -287,46 +287,6 @@ namespace AZ
//! Scale modifiers
//! @{
- //! @deprecated Use SetLocalScale()
- //! Scales the entity along the world's axes. The origin of the axes is the entity's position in the world.
- //! @param scale A three-dimensional vector that represents the multipliers with which to scale the entity in world space.
- virtual void SetScale([[maybe_unused]] const AZ::Vector3& scale) {}
-
- //! @deprecated Use SetLocalScaleX()
- //! Scales the entity along the world's X axis. The origin of the axis is the entity's position in the world.
- //! @param scaleX The multiplier by which to scale the entity along the X axis in world space.
- virtual void SetScaleX([[maybe_unused]] float scaleX) {}
-
- //! @deprecated Use SetLocalScaleY()
- //! Scales the entity along the world's Y axis. The origin of the axis is the entity's position in the world.
- //! @param scaleY The multiplier by which to scale the entity along the Y axis in world space.
- virtual void SetScaleY([[maybe_unused]] float scaleY) {}
-
- //! @deprecated Use SetLocalScaleZ()
- //! Scales the entity along the world's Z axis. The origin of the axis is the entity's position in the world.
- //! @param scaleZ The multiplier by which to scale the entity along the Z axis in world space.
- virtual void SetScaleZ([[maybe_unused]] float scaleZ) {}
-
- //! @deprecated Use GetLocalScale()
- //! Gets the scale of the entity in world space.
- //! @return A three-dimensional vector that represents the scale of the entity in world space.
- virtual AZ::Vector3 GetScale() { return AZ::Vector3(FLT_MAX); }
-
- //! @deprecated Use GetLocalScale()
- //! Gets the amount by which an entity is scaled along the world's X axis.
- //! @return The amount by which an entity is scaled along the X axis in world space.
- virtual float GetScaleX() { return FLT_MAX; }
-
- //! @deprecated Use GetLocalScale()
- //! Gets the amount by which an entity is scaled along the world's Y axis.
- //! @return The amount by which an entity is scaled along the Y axis in world space.
- virtual float GetScaleY() { return FLT_MAX; }
-
- //! @deprecated Use GetLocalScale()
- //! Gets the amount by which an entity is scaled along the world's Z axis.
- //! @return The amount by which an entity is scaled along the Z axis in world space.
- virtual float GetScaleZ() { return FLT_MAX; }
-
//! Set local scale of the transform.
//! @param scale The new scale to set along three local axes.
virtual void SetLocalScale([[maybe_unused]] const AZ::Vector3& scale) {}
diff --git a/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.cpp b/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.cpp
index 910d6749af..4914279e7e 100644
--- a/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.cpp
+++ b/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.cpp
@@ -510,75 +510,6 @@ namespace AzFramework
return m_localTM.GetRotation();
}
- void TransformComponent::SetScale(const AZ::Vector3& scale)
- {
- AZ_Warning("TransformComponent", false, "SetScale is deprecated, please use SetLocalScale");
-
- if (!m_worldTM.GetScale().IsClose(scale))
- {
- AZ::Transform newWorldTransform = m_worldTM;
- newWorldTransform.SetScale(scale);
- SetWorldTM(newWorldTransform);
- }
- }
-
- void TransformComponent::SetScaleX(float scaleX)
- {
- AZ_Warning("TransformComponent", false, "SetScaleX is deprecated, please use SetLocalScaleX");
-
- AZ::Vector3 newScale = m_worldTM.GetScale();
- newScale.SetX(scaleX);
- AZ::Transform newWorldTransform = m_worldTM;
- newWorldTransform.SetScale(newScale);
- SetWorldTM(newWorldTransform);
- }
-
- void TransformComponent::SetScaleY(float scaleY)
- {
- AZ_Warning("TransformComponent", false, "SetScaleY is deprecated, please use SetLocalScaleY");
-
- AZ::Vector3 newScale = m_worldTM.GetScale();
- newScale.SetY(scaleY);
- AZ::Transform newWorldTransform = m_worldTM;
- newWorldTransform.SetScale(newScale);
- SetWorldTM(newWorldTransform);
- }
-
- void TransformComponent::SetScaleZ(float scaleZ)
- {
- AZ_Warning("TransformComponent", false, "SetScaleZ is deprecated, please use SetLocalScaleZ");
-
- AZ::Vector3 newScale = m_worldTM.GetScale();
- newScale.SetZ(scaleZ);
- AZ::Transform newWorldTransform = m_worldTM;
- newWorldTransform.SetScale(newScale);
- SetWorldTM(newWorldTransform);
- }
-
- AZ::Vector3 TransformComponent::GetScale()
- {
- AZ_Warning("TransformComponent", false, "GetScale is deprecated, please use GetLocalScale");
- return m_worldTM.GetScale();
- }
-
- float TransformComponent::GetScaleX()
- {
- AZ_Warning("TransformComponent", false, "GetScaleX is deprecated, please use GetLocalScale");
- return m_worldTM.GetScale().GetX();
- }
-
- float TransformComponent::GetScaleY()
- {
- AZ_Warning("TransformComponent", false, "GetScaleY is deprecated, please use GetLocalScale");
- return m_worldTM.GetScale().GetY();
- }
-
- float TransformComponent::GetScaleZ()
- {
- AZ_Warning("TransformComponent", false, "GetScaleZ is deprecated, please use GetLocalScale");
- return m_worldTM.GetScale().GetZ();
- }
-
void TransformComponent::SetLocalScale(const AZ::Vector3& scale)
{
AZ::Transform newLocalTM = m_localTM;
@@ -972,30 +903,6 @@ namespace AzFramework
->Event("GetLocalRotationQuaternion", &AZ::TransformBus::Events::GetLocalRotationQuaternion)
->Attribute("Rotation", AZ::Edit::Attributes::PropertyRotation)
->VirtualProperty("Rotation", "GetLocalRotationQuaternion", "SetLocalRotationQuaternion")
- ->Event("SetScale", &AZ::TransformBus::Events::SetScale)
- ->Attribute(AZ::Script::Attributes::Deprecated, true)
- ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All)
- ->Event("SetScaleX", &AZ::TransformBus::Events::SetScaleX)
- ->Attribute(AZ::Script::Attributes::Deprecated, true)
- ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All)
- ->Event("SetScaleY", &AZ::TransformBus::Events::SetScaleY)
- ->Attribute(AZ::Script::Attributes::Deprecated, true)
- ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All)
- ->Event("SetScaleZ", &AZ::TransformBus::Events::SetScaleZ)
- ->Attribute(AZ::Script::Attributes::Deprecated, true)
- ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All)
- ->Event("GetScale", &AZ::TransformBus::Events::GetScale)
- ->Attribute(AZ::Script::Attributes::Deprecated, true)
- ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All)
- ->Event("GetScaleX", &AZ::TransformBus::Events::GetScaleX)
- ->Attribute(AZ::Script::Attributes::Deprecated, true)
- ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All)
- ->Event("GetScaleY", &AZ::TransformBus::Events::GetScaleY)
- ->Attribute(AZ::Script::Attributes::Deprecated, true)
- ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All)
- ->Event("GetScaleZ", &AZ::TransformBus::Events::GetScaleZ)
- ->Attribute(AZ::Script::Attributes::Deprecated, true)
- ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All)
->Event("SetLocalScale", &AZ::TransformBus::Events::SetLocalScale)
->Event("SetLocalScaleX", &AZ::TransformBus::Events::SetLocalScaleX)
->Event("SetLocalScaleY", &AZ::TransformBus::Events::SetLocalScaleY)
diff --git a/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.h b/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.h
index abea0bd4dd..f78a621096 100644
--- a/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.h
+++ b/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.h
@@ -145,16 +145,6 @@ namespace AzFramework
AZ::Quaternion GetLocalRotationQuaternion() override;
// Scale Modifiers
- void SetScale(const AZ::Vector3& scale) override;
- void SetScaleX(float scaleX) override;
- void SetScaleY(float scaleY) override;
- void SetScaleZ(float scaleZ) override;
-
- AZ::Vector3 GetScale() override;
- float GetScaleX() override;
- float GetScaleY() override;
- float GetScaleZ() override;
-
void SetLocalScale(const AZ::Vector3& scale) override;
void SetLocalScaleX(float scaleX) override;
void SetLocalScaleY(float scaleY) override;
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.cpp
index 7ce11e5957..147667ae75 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.cpp
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.cpp
@@ -643,76 +643,6 @@ namespace AzToolsFramework
return result;
}
- void TransformComponent::SetScale(const AZ::Vector3& newScale)
- {
- AZ_Warning("AzToolsFramework::TransformComponent", false, "SetScale is deprecated, please use SetLocalScale");
-
- AZ::Transform newWorldTransform = GetWorldTM();
- AZ::Vector3 prevScale = newWorldTransform.ExtractScale();
- if (!prevScale.IsClose(newScale))
- {
- newWorldTransform.MultiplyByScale(newScale);
- SetWorldTM(newWorldTransform);
- }
- }
-
- void TransformComponent::SetScaleX(float newScale)
- {
- AZ_Warning("AzToolsFramework::TransformComponent", false, "SetScaleX is deprecated, please use SetLocalScaleX");
-
- AZ::Transform newWorldTransform = GetWorldTM();
- AZ::Vector3 scale = newWorldTransform.ExtractScale();
- scale.SetX(newScale);
- newWorldTransform.MultiplyByScale(scale);
- SetWorldTM(newWorldTransform);
- }
-
- void TransformComponent::SetScaleY(float newScale)
- {
- AZ_Warning("AzToolsFramework::TransformComponent", false, "SetScaleY is deprecated, please use SetLocalScaleY");
-
- AZ::Transform newWorldTransform = GetWorldTM();
- AZ::Vector3 scale = newWorldTransform.ExtractScale();
- scale.SetY(newScale);
- newWorldTransform.MultiplyByScale(scale);
- SetWorldTM(newWorldTransform);
- }
-
- void TransformComponent::SetScaleZ(float newScale)
- {
- AZ_Warning("AzToolsFramework::TransformComponent", false, "SetScaleZ is deprecated, please use SetLocalScaleZ");
-
- AZ::Transform newWorldTransform = GetWorldTM();
- AZ::Vector3 scale = newWorldTransform.ExtractScale();
- scale.SetZ(newScale);
- newWorldTransform.MultiplyByScale(scale);
- SetWorldTM(newWorldTransform);
- }
-
- AZ::Vector3 TransformComponent::GetScale()
- {
- AZ_Warning("AzToolsFramework::TransformComponent", false, "GetScale is deprecated, please use GetLocalScale");
- return GetWorldTM().GetScale();
- }
-
- float TransformComponent::GetScaleX()
- {
- AZ_Warning("AzToolsFramework::TransformComponent", false, "GetScaleX is deprecated, please use GetLocalScale");
- return GetWorldTM().GetScale().GetX();
- }
-
- float TransformComponent::GetScaleY()
- {
- AZ_Warning("AzToolsFramework::TransformComponent", false, "GetScaleY is deprecated, please use GetLocalScale");
- return GetWorldTM().GetScale().GetY();
- }
-
- float TransformComponent::GetScaleZ()
- {
- AZ_Warning("AzToolsFramework::TransformComponent", false, "GetScaleZ is deprecated, please use GetLocalScale");
- return GetWorldTM().GetScale().GetZ();
- }
-
void TransformComponent::SetLocalScale(const AZ::Vector3& scale)
{
m_editorTransform.m_scale = scale;
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.h b/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.h
index 8327c5f128..0898e14d6b 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.h
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.h
@@ -129,16 +129,6 @@ namespace AzToolsFramework
AZ::Quaternion GetLocalRotationQuaternion() override;
// Scale Modifiers
- void SetScale(const AZ::Vector3& newScale) override;
- void SetScaleX(float newScale) override;
- void SetScaleY(float newScale) override;
- void SetScaleZ(float newScale) override;
-
- AZ::Vector3 GetScale() override;
- float GetScaleX() override;
- float GetScaleY() override;
- float GetScaleZ() override;
-
void SetLocalScale(const AZ::Vector3& scale) override;
void SetLocalScaleX(float scaleX) override;
void SetLocalScaleY(float scaleY) override;
diff --git a/Gems/PhysX/Code/Tests/ShapeColliderComponentTests.cpp b/Gems/PhysX/Code/Tests/ShapeColliderComponentTests.cpp
index 422385a777..8af9defff8 100644
--- a/Gems/PhysX/Code/Tests/ShapeColliderComponentTests.cpp
+++ b/Gems/PhysX/Code/Tests/ShapeColliderComponentTests.cpp
@@ -241,7 +241,7 @@ namespace PhysXEditorTests
SetPolygonPrismHeight(entityId, 2.0f);
// update the transform scale and non-uniform scale
- AZ::TransformBus::Event(entityId, &AZ::TransformBus::Events::SetScale, AZ::Vector3(2.0f));
+ AZ::TransformBus::Event(entityId, &AZ::TransformBus::Events::SetLocalScale, AZ::Vector3(2.0f));
AZ::NonUniformScaleRequestBus::Event(entityId, &AZ::NonUniformScaleRequests::SetScale, AZ::Vector3(0.5f, 1.5f, 2.0f));
EntityPtr gameEntity = CreateActiveGameEntityFromEditorEntity(editorEntity.get());
From 40655eba030b0ed6c02cd795993beda647abef53 Mon Sep 17 00:00:00 2001
From: greerdv
Date: Fri, 23 Apr 2021 11:30:17 +0100
Subject: [PATCH 006/629] removing element-wise scale setters from transform
bus
---
.../AzCore/AzCore/Component/TransformBus.h | 12 -----
.../Components/TransformComponent.cpp | 30 -------------
.../Components/TransformComponent.h | 3 --
.../ToolsComponents/TransformComponent.cpp | 18 --------
.../ToolsComponents/TransformComponent.h | 3 --
Code/Framework/Tests/TransformComponent.cpp | 45 -------------------
Gems/Blast/Code/Tests/Mocks/BlastMocks.h | 11 -----
7 files changed, 122 deletions(-)
diff --git a/Code/Framework/AzCore/AzCore/Component/TransformBus.h b/Code/Framework/AzCore/AzCore/Component/TransformBus.h
index e34fa6a97b..64af853e99 100644
--- a/Code/Framework/AzCore/AzCore/Component/TransformBus.h
+++ b/Code/Framework/AzCore/AzCore/Component/TransformBus.h
@@ -291,18 +291,6 @@ namespace AZ
//! @param scale The new scale to set along three local axes.
virtual void SetLocalScale([[maybe_unused]] const AZ::Vector3& scale) {}
- //! Set local scale of the transform on x-axis.
- //! @param scaleX The new x-axis scale to set.
- virtual void SetLocalScaleX([[maybe_unused]] float scaleX) {}
-
- //! Set local scale of the transform on y-axis.
- //! @param scaleY The new y-axis scale to set.
- virtual void SetLocalScaleY([[maybe_unused]] float scaleY) {}
-
- //! Set local scale of the transform on z-axis.
- //! @param scaleZ The new z-axis scale to set.
- virtual void SetLocalScaleZ([[maybe_unused]] float scaleZ) {}
-
//! Get the scale value on each axis in local space
//! @return The scale value of type Vector3 along each axis in local space.
virtual AZ::Vector3 GetLocalScale() { return AZ::Vector3(FLT_MAX); }
diff --git a/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.cpp b/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.cpp
index 4914279e7e..4b805fd3e1 100644
--- a/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.cpp
+++ b/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.cpp
@@ -517,33 +517,6 @@ namespace AzFramework
SetLocalTM(newLocalTM);
}
- void TransformComponent::SetLocalScaleX(float scaleX)
- {
- AZ::Transform newLocalTM = m_localTM;
- AZ::Vector3 newScale = newLocalTM.GetScale();
- newScale.SetX(scaleX);
- newLocalTM.SetScale(newScale);
- SetLocalTM(newLocalTM);
- }
-
- void TransformComponent::SetLocalScaleY(float scaleY)
- {
- AZ::Transform newLocalTM = m_localTM;
- AZ::Vector3 newScale = newLocalTM.GetScale();
- newScale.SetY(scaleY);
- newLocalTM.SetScale(newScale);
- SetLocalTM(newLocalTM);
- }
-
- void TransformComponent::SetLocalScaleZ(float scaleZ)
- {
- AZ::Transform newLocalTM = m_localTM;
- AZ::Vector3 newScale = newLocalTM.GetScale();
- newScale.SetZ(scaleZ);
- newLocalTM.SetScale(newScale);
- SetLocalTM(newLocalTM);
- }
-
AZ::Vector3 TransformComponent::GetLocalScale()
{
return m_localTM.GetScale();
@@ -904,9 +877,6 @@ namespace AzFramework
->Attribute("Rotation", AZ::Edit::Attributes::PropertyRotation)
->VirtualProperty("Rotation", "GetLocalRotationQuaternion", "SetLocalRotationQuaternion")
->Event("SetLocalScale", &AZ::TransformBus::Events::SetLocalScale)
- ->Event("SetLocalScaleX", &AZ::TransformBus::Events::SetLocalScaleX)
- ->Event("SetLocalScaleY", &AZ::TransformBus::Events::SetLocalScaleY)
- ->Event("SetLocalScaleZ", &AZ::TransformBus::Events::SetLocalScaleZ)
->Event("GetLocalScale", &AZ::TransformBus::Events::GetLocalScale)
->Attribute("Scale", AZ::Edit::Attributes::PropertyScale)
->VirtualProperty("Scale", "GetLocalScale", "SetLocalScale")
diff --git a/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.h b/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.h
index f78a621096..f393e22064 100644
--- a/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.h
+++ b/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.h
@@ -146,9 +146,6 @@ namespace AzFramework
// Scale Modifiers
void SetLocalScale(const AZ::Vector3& scale) override;
- void SetLocalScaleX(float scaleX) override;
- void SetLocalScaleY(float scaleY) override;
- void SetLocalScaleZ(float scaleZ) override;
AZ::Vector3 GetLocalScale() override;
AZ::Vector3 GetWorldScale() override;
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.cpp
index 147667ae75..671a56b4d4 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.cpp
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.cpp
@@ -649,24 +649,6 @@ namespace AzToolsFramework
TransformChanged();
}
- void TransformComponent::SetLocalScaleX(float scaleX)
- {
- m_editorTransform.m_scale.SetX(scaleX);
- TransformChanged();
- }
-
- void TransformComponent::SetLocalScaleY(float scaleY)
- {
- m_editorTransform.m_scale.SetY(scaleY);
- TransformChanged();
- }
-
- void TransformComponent::SetLocalScaleZ(float scaleZ)
- {
- m_editorTransform.m_scale.SetZ(scaleZ);
- TransformChanged();
- }
-
AZ::Vector3 TransformComponent::GetLocalScale()
{
return m_editorTransform.m_scale;
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.h b/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.h
index 0898e14d6b..bbdf770dab 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.h
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.h
@@ -130,9 +130,6 @@ namespace AzToolsFramework
// Scale Modifiers
void SetLocalScale(const AZ::Vector3& scale) override;
- void SetLocalScaleX(float scaleX) override;
- void SetLocalScaleY(float scaleY) override;
- void SetLocalScaleZ(float scaleZ) override;
AZ::Vector3 GetLocalScale() override;
AZ::Vector3 GetWorldScale() override;
diff --git a/Code/Framework/Tests/TransformComponent.cpp b/Code/Framework/Tests/TransformComponent.cpp
index de172dc051..44008686cd 100644
--- a/Code/Framework/Tests/TransformComponent.cpp
+++ b/Code/Framework/Tests/TransformComponent.cpp
@@ -584,51 +584,6 @@ namespace UnitTest
EXPECT_TRUE(scales.IsClose(expectedScales));
}
- TEST_F(TransformComponentTransformMatrixSetGet, SetLocalScaleX_SimpleValues_Set)
- {
- float sx = 64.336f;
- Transform tm;
- TransformBus::EventResult(tm, m_childId, &TransformBus::Events::GetLocalTM);
- Vector3 expectedScales = tm.GetScale();
- expectedScales.SetX(sx);
-
- TransformBus::Event(m_childId, &TransformBus::Events::SetLocalScaleX, sx);
-
- TransformBus::EventResult(tm, m_childId, &TransformBus::Events::GetLocalTM);
- Vector3 scales = tm.GetScale();
- EXPECT_TRUE(scales.IsClose(expectedScales));
- }
-
- TEST_F(TransformComponentTransformMatrixSetGet, SetLocalScaleY_SimpleValues_Set)
- {
- float sy = 23.754f;
- Transform tm;
- TransformBus::EventResult(tm, m_childId, &TransformBus::Events::GetLocalTM);
- Vector3 expectedScales = tm.GetScale();
- expectedScales.SetY(sy);
-
- TransformBus::Event(m_childId, &TransformBus::Events::SetLocalScaleY, sy);
-
- TransformBus::EventResult(tm, m_childId, &TransformBus::Events::GetLocalTM);
- Vector3 scales = tm.GetScale();
- EXPECT_TRUE(scales.IsClose(expectedScales));
- }
-
- TEST_F(TransformComponentTransformMatrixSetGet, SetLocalScaleZ_SimpleValues_Set)
- {
- float sz = 65.140f;
- Transform tm;
- TransformBus::EventResult(tm, m_childId, &TransformBus::Events::GetLocalTM);
- Vector3 expectedScales = tm.GetScale();
- expectedScales.SetZ(sz);
-
- TransformBus::Event(m_childId, &TransformBus::Events::SetLocalScaleZ, sz);
-
- TransformBus::EventResult(tm, m_childId, &TransformBus::Events::GetLocalTM);
- Vector3 scales = tm.GetScale();
- EXPECT_TRUE(scales.IsClose(expectedScales));
- }
-
TEST_F(TransformComponentTransformMatrixSetGet, GetLocalScale_SimpleValues_Return)
{
float sx = 43.463f;
diff --git a/Gems/Blast/Code/Tests/Mocks/BlastMocks.h b/Gems/Blast/Code/Tests/Mocks/BlastMocks.h
index 95a16c311f..88c22cf67f 100644
--- a/Gems/Blast/Code/Tests/Mocks/BlastMocks.h
+++ b/Gems/Blast/Code/Tests/Mocks/BlastMocks.h
@@ -666,18 +666,7 @@ namespace Blast
MOCK_METHOD1(RotateAroundLocalZ, void(float));
MOCK_METHOD0(GetLocalRotation, AZ::Vector3());
MOCK_METHOD0(GetLocalRotationQuaternion, AZ::Quaternion());
- MOCK_METHOD1(SetScale, void(const AZ::Vector3&));
- MOCK_METHOD1(SetScaleX, void(float));
- MOCK_METHOD1(SetScaleY, void(float));
- MOCK_METHOD1(SetScaleZ, void(float));
- MOCK_METHOD0(GetScale, AZ::Vector3());
- MOCK_METHOD0(GetScaleX, float());
- MOCK_METHOD0(GetScaleY, float());
- MOCK_METHOD0(GetScaleZ, float());
MOCK_METHOD1(SetLocalScale, void(const AZ::Vector3&));
- MOCK_METHOD1(SetLocalScaleX, void(float));
- MOCK_METHOD1(SetLocalScaleY, void(float));
- MOCK_METHOD1(SetLocalScaleZ, void(float));
MOCK_METHOD0(GetLocalScale, AZ::Vector3());
MOCK_METHOD0(GetWorldScale, AZ::Vector3());
MOCK_METHOD0(GetParentId, AZ::EntityId());
From b113f09a713833b1e98a4e7179568fce27a6fe06 Mon Sep 17 00:00:00 2001
From: greerdv
Date: Tue, 27 Apr 2021 18:12:46 +0100
Subject: [PATCH 007/629] first pass of changing transform to use float for
scale internally rather than Vector3
---
Code/CryEngine/CryCommon/IMovieSystem.h | 4 +-
.../AzCore/AzCore/Component/TransformBus.h | 22 ++--
Code/Framework/AzCore/AzCore/Math/Spline.h | 4 +-
.../AzCore/AzCore/Math/Transform.cpp | 14 +--
Code/Framework/AzCore/AzCore/Math/Transform.h | 23 ++--
.../AzCore/AzCore/Math/Transform.inl | 78 +++++++++----
.../AzCore/Math/TransformSerializer.cpp | 10 +-
.../AzCore/Tests/Math/MathTestData.h | 4 +-
Code/Framework/AzCore/Tests/Math/ObbTests.cpp | 8 +-
.../Tests/Math/TransformPerformanceTests.cpp | 6 +-
.../AzCore/Tests/Math/TransformTests.cpp | 36 ++----
Code/Framework/AzCore/Tests/ScriptMath.cpp | 24 ++--
.../Json/TransformSerializerTests.cpp | 6 +-
.../Components/TransformComponent.cpp | 38 +++---
.../Components/TransformComponent.h | 5 +-
.../Manipulators/ScaleManipulators.cpp | 4 +-
.../AzToolsFramework/Slice/SliceUtilities.cpp | 2 -
.../ToolsComponents/TransformComponent.cpp | 37 +++---
.../ToolsComponents/TransformComponent.h | 6 +-
.../ToolsComponents/TransformComponentBus.h | 5 +-
.../EditorTransformComponentSelection.cpp | 37 +++---
.../EditorTransformComponentSelection.h | 8 +-
...torTransformComponentSelectionRequestBus.h | 4 +-
.../GridMate/Serialize/CompressionMarshal.cpp | 15 ++-
Code/Framework/Tests/TransformComponent.cpp | 110 +++++++-----------
.../Sandbox/Editor/Objects/SelectionGroup.cpp | 22 ----
Code/Sandbox/Editor/Objects/SelectionGroup.h | 1 -
.../Editor/TrackView/TrackViewAnimNode.cpp | 18 +--
.../Editor/TrackView/TrackViewAnimNode.h | 4 +-
.../Editor/TrackView/TrackViewSequence.cpp | 6 +-
.../Containers/Utilities/SceneUtilities.cpp | 2 +-
.../RowWidgets/TransformRowHandler.cpp | 12 +-
.../SceneUI/RowWidgets/TransformRowHandler.h | 2 +-
.../SceneUI/RowWidgets/TransformRowWidget.cpp | 28 ++---
.../SceneUI/RowWidgets/TransformRowWidget.h | 16 ++-
.../RowWidgets/TransformRowWidgetTests.cpp | 20 ++--
.../Viewport/MaterialViewportRenderer.cpp | 4 +-
.../CoreLights/PolygonLightDelegate.cpp | 1 -
Gems/Blast/Code/Tests/BlastFamilyTest.cpp | 2 +-
Gems/Blast/Code/Tests/Mocks/BlastMocks.h | 3 +
.../EMotionFX/Rendering/Common/RenderUtil.cpp | 2 +-
.../Code/Include/GradientSignal/Util.h | 9 +-
.../Components/GradientTransformComponent.cpp | 13 ++-
.../Components/GradientTransformComponent.h | 5 +-
.../Source/Animation/AttachmentComponent.cpp | 4 +-
.../Animation/EditorAttachmentComponent.cpp | 2 +-
.../Scripting/EditorLookAtComponent.cpp | 14 ++-
.../Code/Source/Shape/BoxShape.cpp | 2 +-
.../Code/Source/Shape/PolygonPrismShape.cpp | 22 ++--
.../Code/Source/Shape/ShapeDisplay.h | 9 +-
.../Code/Source/Shape/TubeShape.cpp | 32 ++---
Gems/LmbrCentral/Code/Tests/BoxShapeTest.cpp | 28 ++---
.../Code/Tests/CapsuleShapeTest.cpp | 18 +--
.../Code/Tests/CylinderShapeTest.cpp | 14 +--
Gems/LmbrCentral/Code/Tests/DiskShapeTest.cpp | 2 +-
.../Code/Tests/PolygonPrismShapeTest.cpp | 12 +-
Gems/LmbrCentral/Code/Tests/QuadShapeTest.cpp | 12 +-
.../Code/Tests/SphereShapeTest.cpp | 14 +--
Gems/LmbrCentral/Code/Tests/TubeShapeTest.cpp | 2 +-
.../Source/Cinematics/AnimAZEntityNode.cpp | 6 +-
.../Code/Source/Cinematics/AnimAZEntityNode.h | 4 +-
.../Source/Cinematics/AnimComponentNode.cpp | 17 ++-
.../Source/Cinematics/AnimComponentNode.h | 6 +-
.../Maestro/Code/Source/Cinematics/AnimNode.h | 4 +-
Gems/PhysX/Code/Source/RigidBodyComponent.cpp | 17 +--
Gems/PhysX/Code/Source/RigidBodyComponent.h | 1 -
Gems/PhysX/Code/Source/Utils.cpp | 6 +-
.../PhysX/Code/Tests/ColliderScalingTests.cpp | 12 +-
Gems/PhysX/Code/Tests/DebugDrawTests.cpp | 14 +--
.../Code/Tests/RigidBodyComponentTests.cpp | 8 +-
.../Tests/ShapeColliderComponentTests.cpp | 12 +-
.../Code/Include/ScriptCanvas/Core/Datum.cpp | 6 +-
.../ScriptCanvas/Libraries/Entity/Rotate.cpp | 15 +--
.../Libraries/Entity/RotateMethod.cpp | 18 +--
.../Libraries/Math/TransformNodes.h | 4 +-
.../RotateCameraLookAt.cpp | 16 +--
76 files changed, 487 insertions(+), 546 deletions(-)
diff --git a/Code/CryEngine/CryCommon/IMovieSystem.h b/Code/CryEngine/CryCommon/IMovieSystem.h
index c22394e1b3..ca723eb6bd 100644
--- a/Code/CryEngine/CryCommon/IMovieSystem.h
+++ b/Code/CryEngine/CryCommon/IMovieSystem.h
@@ -696,7 +696,7 @@ public:
//! Rotate entity node.
virtual void SetRotate(float time, const Quat& quat) = 0;
//! Scale entity node.
- virtual void SetScale(float time, const Vec3& scale) = 0;
+ virtual void SetScale(float time, const float scale) = 0;
//! Compute and return the offset which brings the current position to the given position
virtual Vec3 GetOffsetPosition(const Vec3& position) { return position - GetPos(); }
@@ -708,7 +708,7 @@ public:
//! Get entity rotation at specified time.
virtual Quat GetRotate(float time) = 0;
//! Get current entity scale.
- virtual Vec3 GetScale() = 0;
+ virtual float GetScale() = 0;
// General Set param.
// Set float/vec3/vec4 parameter at given time.
diff --git a/Code/Framework/AzCore/AzCore/Component/TransformBus.h b/Code/Framework/AzCore/AzCore/Component/TransformBus.h
index 64af853e99..95c8f6e719 100644
--- a/Code/Framework/AzCore/AzCore/Component/TransformBus.h
+++ b/Code/Framework/AzCore/AzCore/Component/TransformBus.h
@@ -288,18 +288,26 @@ namespace AZ
//! Scale modifiers
//! @{
//! Set local scale of the transform.
- //! @param scale The new scale to set along three local axes.
+ //! @param scale The new scale to set.
virtual void SetLocalScale([[maybe_unused]] const AZ::Vector3& scale) {}
- //! Get the scale value on each axis in local space
- //! @return The scale value of type Vector3 along each axis in local space.
+ //! Get the scale value in local space.
+ //! @return The scale value in local space.
virtual AZ::Vector3 GetLocalScale() { return AZ::Vector3(FLT_MAX); }
- //! Get the scale value on each axis in world space.
- //! Note the transform will be skewed when it is rotated and has a parent transform scaled, in which
- //! case the returned world-scale from this function will be inaccurate.
- //! @return The scale value of type Vector3 along each axis in world space.
+ //! Get the scale value in world space.
+ //! @return The scale value in world space.
virtual AZ::Vector3 GetWorldScale() { return AZ::Vector3(FLT_MAX); }
+
+
+ virtual void SetLocalUniformScale([[maybe_unused]] float scale) {}
+
+ virtual float GetLocalUniformScale() { return FLT_MAX; }
+
+ virtual float GetWorldUniformScale() { return FLT_MAX; }
+
+
+
//! @}
//! Transform hierarchy
diff --git a/Code/Framework/AzCore/AzCore/Math/Spline.h b/Code/Framework/AzCore/AzCore/Math/Spline.h
index 912c10f46f..1adfc9b2fa 100644
--- a/Code/Framework/AzCore/AzCore/Math/Spline.h
+++ b/Code/Framework/AzCore/AzCore/Math/Spline.h
@@ -441,10 +441,10 @@ namespace AZ
const Transform& worldFromLocal, const Vector3& src, const Vector3& dir, const Spline& spline)
{
Transform worldFromLocalNormalized = worldFromLocal;
- const Vector3 scale = worldFromLocalNormalized.ExtractScale();
+ const float scale = worldFromLocalNormalized.ExtractUniformScale();
const Transform localFromWorldNormalized = worldFromLocalNormalized.GetInverse();
- const Vector3 localRayOrigin = localFromWorldNormalized.TransformPoint(src) * scale.GetReciprocal();
+ const Vector3 localRayOrigin = localFromWorldNormalized.TransformPoint(src) / scale;
const Vector3 localRayDirection = localFromWorldNormalized.TransformVector(dir);
return spline.GetNearestAddressRay(localRayOrigin, localRayDirection);
}
diff --git a/Code/Framework/AzCore/AzCore/Math/Transform.cpp b/Code/Framework/AzCore/AzCore/Math/Transform.cpp
index bb3f764492..ad57daa5e4 100644
--- a/Code/Framework/AzCore/AzCore/Math/Transform.cpp
+++ b/Code/Framework/AzCore/AzCore/Math/Transform.cpp
@@ -130,7 +130,7 @@ namespace AZ
const Transform* transform = reinterpret_cast(classPtr);
float data[NumFloats];
transform->GetRotation().StoreToFloat4(data);
- transform->GetScale().StoreToFloat3(&data[4]);
+ Vector3(transform->GetScale()).StoreToFloat3(&data[4]);
transform->GetTranslation().StoreToFloat3(&data[7]);
for (int i = 0; i < NumFloats; i++)
@@ -220,7 +220,7 @@ namespace AZ
Vector3 translation = Vector3::CreateFromFloat3(&data[7]);
*reinterpret_cast(classPtr) =
- Transform::CreateFromQuaternionAndTranslation(rotation, translation) * Transform::CreateScale(scale);
+ Transform::CreateFromQuaternionAndTranslation(rotation, translation) * Transform::CreateUniformScale(scale.GetMaxElement());
return true;
}
@@ -250,7 +250,7 @@ namespace AZ
Attribute(Script::Attributes::ExcludeFrom, Script::Attributes::ExcludeFlags::All)->
Attribute(Script::Attributes::Storage, Script::Attributes::StorageType::Value)->
Attribute(Script::Attributes::GenericConstructorOverride, &Internal::TransformDefaultConstructor)->
- Constructor()->
+ Constructor()->
Method("GetBasis", &Transform::GetBasis)->
Method("GetBasisX", &Transform::GetBasisX)->
Method("GetBasisY", &Transform::GetBasisY)->
@@ -284,7 +284,7 @@ namespace AZ
Method("GetRotation", &Transform::GetRotation)->
Method("SetRotation", &Transform::SetRotation)->
Method("GetScale", &Transform::GetScale)->
- Method("SetScale", &Transform::SetScale)->
+ Method("SetScale", static_cast(&Transform::SetScale))->
Method("ExtractScale", &Transform::ExtractScale)->
Attribute(Script::Attributes::ExcludeFrom, Script::Attributes::ExcludeFlags::All)->
Method("MultiplyByScale", &Transform::MultiplyByScale)->
@@ -315,7 +315,7 @@ namespace AZ
{
Transform result;
Matrix3x3 tmp = value;
- result.m_scale = tmp.ExtractScale();
+ result.m_scale = tmp.ExtractScale().GetMaxElement();
result.m_rotation = Quaternion::CreateFromMatrix3x3(tmp);
result.m_translation = Vector3::CreateZero();
return result;
@@ -325,7 +325,7 @@ namespace AZ
{
Transform result;
Matrix3x3 tmp = value;
- result.m_scale = tmp.ExtractScale();
+ result.m_scale = tmp.ExtractScale().GetMaxElement();
result.m_rotation = Quaternion::CreateFromMatrix3x3(tmp);
result.m_translation = p;
return result;
@@ -335,7 +335,7 @@ namespace AZ
{
Transform result;
Matrix3x4 tmp = value;
- result.m_scale = tmp.ExtractScale();
+ result.m_scale = tmp.ExtractScale().GetMaxElement();
result.m_rotation = Quaternion::CreateFromMatrix3x4(tmp);
result.m_translation = value.GetTranslation();
return result;
diff --git a/Code/Framework/AzCore/AzCore/Math/Transform.h b/Code/Framework/AzCore/AzCore/Math/Transform.h
index eb1a12a912..ba08722338 100644
--- a/Code/Framework/AzCore/AzCore/Math/Transform.h
+++ b/Code/Framework/AzCore/AzCore/Math/Transform.h
@@ -63,7 +63,7 @@ namespace AZ
Transform() = default;
//! Construct a transform from components.
- Transform(const Vector3& translation, const Quaternion& rotation, const Vector3& scale);
+ Transform(const Vector3& translation, const Quaternion& rotation, const float scale);
//! Creates an identity transform.
static Transform CreateIdentity();
@@ -89,8 +89,11 @@ namespace AZ
static Transform CreateFromMatrix3x4(const Matrix3x4& value);
- //! Sets the matrix to be a scale matrix, translation is set to zero.
- static Transform CreateScale(const Vector3& scale);
+ //! Sets the transform to apply (uniform) scale only, no rotation or translation.
+ static Transform CreateScale(const AZ::Vector3& scale);
+
+ //! Sets the transform to apply (uniform) scale only, no rotation or translation.
+ static Transform CreateUniformScale(const float scale);
//! Sets the matrix to be a translation matrix, rotation part is set to identity.
static Transform CreateTranslation(const Vector3& translation);
@@ -119,13 +122,19 @@ namespace AZ
const Quaternion& GetRotation() const;
void SetRotation(const Quaternion& rotation);
- const Vector3& GetScale() const;
+ Vector3 GetScale() const;
+ float GetUniformScale() const;
void SetScale(const Vector3& v);
+ void SetUniformScale(const float scale);
- //! Sets the transforms scale to a unit value and returns the previous scale value.
+ //! Sets the transform's scale to a unit value and returns the previous scale value.
Vector3 ExtractScale();
- void MultiplyByScale(const Vector3& scale);
+ //! Sets the transform's scale to a unit value and returns the previous scale value.
+ float ExtractUniformScale();
+
+ void MultiplyByScale(const AZ::Vector3& scale);
+ void MultiplyByUniformScale(float scale);
Transform operator*(const Transform& rhs) const;
Transform& operator*=(const Transform& rhs);
@@ -159,7 +168,7 @@ namespace AZ
private:
Quaternion m_rotation;
- Vector3 m_scale;
+ float m_scale;
Vector3 m_translation;
};
diff --git a/Code/Framework/AzCore/AzCore/Math/Transform.inl b/Code/Framework/AzCore/AzCore/Math/Transform.inl
index 63425e6e41..c92208da54 100644
--- a/Code/Framework/AzCore/AzCore/Math/Transform.inl
+++ b/Code/Framework/AzCore/AzCore/Math/Transform.inl
@@ -12,7 +12,7 @@
namespace AZ
{
- AZ_MATH_INLINE Transform::Transform(const Vector3& translation, const Quaternion& rotation, const Vector3& scale)
+ AZ_MATH_INLINE Transform::Transform(const Vector3& translation, const Quaternion& rotation, const float scale)
: m_translation(translation)
, m_rotation(rotation)
, m_scale(scale)
@@ -25,7 +25,7 @@ namespace AZ
{
Transform result;
result.m_rotation = Quaternion::CreateIdentity();
- result.m_scale = Vector3::CreateOne();
+ result.m_scale = 1.0f;
result.m_translation = Vector3::CreateZero();
return result;
}
@@ -49,7 +49,7 @@ namespace AZ
{
Transform result;
result.m_rotation = q;
- result.m_scale = Vector3::CreateOne();
+ result.m_scale = 1.0f;
result.m_translation = Vector3::CreateZero();
return result;
}
@@ -58,12 +58,22 @@ namespace AZ
{
Transform result;
result.m_rotation = q;
- result.m_scale = Vector3::CreateOne();
+ result.m_scale = 1.0f;
result.m_translation = p;
return result;
}
- AZ_MATH_INLINE Transform Transform::CreateScale(const Vector3& scale)
+ AZ_MATH_INLINE Transform Transform::CreateScale(const AZ::Vector3& scale)
+ {
+ AZ_Warning("Transform", false, "CreateScale is deprecated, please use CreateUniformScale instead.");
+ Transform result;
+ result.m_rotation = Quaternion::CreateIdentity();
+ result.m_scale = scale.GetMaxElement();
+ result.m_translation = Vector3::CreateZero();
+ return result;
+ }
+
+ AZ_MATH_INLINE Transform Transform::CreateUniformScale(float scale)
{
Transform result;
result.m_rotation = Quaternion::CreateIdentity();
@@ -76,7 +86,7 @@ namespace AZ
{
Transform result;
result.m_rotation = Quaternion::CreateIdentity();
- result.m_scale = Vector3::CreateOne();
+ result.m_scale = 1.0f;
result.m_translation = translation;
return result;
}
@@ -104,17 +114,17 @@ namespace AZ
AZ_MATH_INLINE Vector3 Transform::GetBasisX() const
{
- return m_rotation.TransformVector(Vector3::CreateAxisX(m_scale.GetX()));
+ return m_rotation.TransformVector(Vector3::CreateAxisX(m_scale));
}
AZ_MATH_INLINE Vector3 Transform::GetBasisY() const
{
- return m_rotation.TransformVector(Vector3::CreateAxisY(m_scale.GetY()));
+ return m_rotation.TransformVector(Vector3::CreateAxisY(m_scale));
}
AZ_MATH_INLINE Vector3 Transform::GetBasisZ() const
{
- return m_rotation.TransformVector(Vector3::CreateAxisZ(m_scale.GetZ()));
+ return m_rotation.TransformVector(Vector3::CreateAxisZ(m_scale));
}
AZ_MATH_INLINE void Transform::GetBasisAndTranslation(Vector3* basisX, Vector3* basisY, Vector3* basisZ, Vector3* pos) const
@@ -150,24 +160,50 @@ namespace AZ
m_rotation = rotation;
}
- AZ_MATH_INLINE const Vector3& Transform::GetScale() const
+ AZ_MATH_INLINE Vector3 Transform::GetScale() const
+ {
+ AZ_Warning("Transform", false, "GetScale is deprecated, please use GetUniformScale instead.");
+ return Vector3(m_scale);
+ }
+
+ AZ_MATH_INLINE float Transform::GetUniformScale() const
{
return m_scale;
}
AZ_MATH_INLINE void Transform::SetScale(const Vector3& scale)
+ {
+ AZ_Warning("Transform", false, "SetScale is deprecated, please use SetUniformScale instead.");
+ m_scale = scale.GetMaxElement();
+ }
+
+ AZ_MATH_INLINE void Transform::SetUniformScale(const float scale)
{
m_scale = scale;
}
AZ_MATH_INLINE Vector3 Transform::ExtractScale()
{
- const Vector3 scale = m_scale;
- m_scale = Vector3::CreateOne();
+ AZ_Warning("Transform", false, "ExtractScale is deprecated, please use ExtractUniformScale instead.");
+ const float scale = m_scale;
+ m_scale = 1.0f;
+ return Vector3(scale);
+ }
+
+ AZ_MATH_INLINE float Transform::ExtractUniformScale()
+ {
+ const float scale = m_scale;
+ m_scale = 1.0f;
return scale;
}
- AZ_MATH_INLINE void Transform::MultiplyByScale(const Vector3& scale)
+ AZ_MATH_INLINE void Transform::MultiplyByScale(const AZ::Vector3& scale)
+ {
+ AZ_Warning("Transform", false, "MultiplyByScale is deprecated, please use MultiplyByUniformScale instead.");
+ m_scale *= scale.GetMaxElement();
+ }
+
+ AZ_MATH_INLINE void Transform::MultiplyByUniformScale(float scale)
{
m_scale *= scale;
}
@@ -207,7 +243,7 @@ namespace AZ
// note - need to be careful about how to calculate inverse when there is non-uniform scale
Transform out;
out.m_rotation = m_rotation.GetConjugate();
- out.m_scale = m_scale.GetReciprocal();
+ out.m_scale = 1.0f / m_scale;
out.m_translation = -out.m_scale * (out.m_rotation.TransformVector(m_translation));
return out;
}
@@ -219,27 +255,27 @@ namespace AZ
AZ_MATH_INLINE bool Transform::IsOrthogonal(float tolerance) const
{
- return m_scale.IsClose(Vector3::CreateOne(), tolerance);
+ return AZ::IsClose(m_scale, 1.0f, tolerance);
}
AZ_MATH_INLINE Transform Transform::GetOrthogonalized() const
{
Transform result;
result.m_rotation = m_rotation;
- result.m_scale = Vector3::CreateOne();
+ result.m_scale = 1.0f;
result.m_translation = m_translation;
return result;
}
AZ_MATH_INLINE void Transform::Orthogonalize()
{
- *this = GetOrthogonalized();
+ m_scale = 1.0f;
}
AZ_MATH_INLINE bool Transform::IsClose(const Transform& rhs, float tolerance) const
{
return m_rotation.IsClose(rhs.m_rotation, tolerance)
- && m_scale.IsClose(rhs.m_scale, tolerance)
+ && AZ::IsClose(m_scale, rhs.m_scale, tolerance)
&& m_translation.IsClose(rhs.m_translation, tolerance);
}
@@ -268,21 +304,21 @@ namespace AZ
AZ_MATH_INLINE void Transform::SetFromEulerDegrees(const Vector3& eulerDegrees)
{
m_translation = Vector3::CreateZero();
- m_scale = Vector3::CreateOne();
+ m_scale = 1.0f;
m_rotation.SetFromEulerDegrees(eulerDegrees);
}
AZ_MATH_INLINE void Transform::SetFromEulerRadians(const Vector3& eulerRadians)
{
m_translation = Vector3::CreateZero();
- m_scale = Vector3::CreateOne();
+ m_scale = 1.0f;
m_rotation.SetFromEulerRadians(eulerRadians);
}
AZ_MATH_INLINE bool Transform::IsFinite() const
{
return m_rotation.IsFinite()
- && m_scale.IsFinite()
+ && IsFiniteFloat(m_scale)
&& m_translation.IsFinite();
}
diff --git a/Code/Framework/AzCore/AzCore/Math/TransformSerializer.cpp b/Code/Framework/AzCore/AzCore/Math/TransformSerializer.cpp
index 0a3e02ee0d..46440ac000 100644
--- a/Code/Framework/AzCore/AzCore/Math/TransformSerializer.cpp
+++ b/Code/Framework/AzCore/AzCore/Math/TransformSerializer.cpp
@@ -58,9 +58,7 @@ namespace AZ
}
{
- // Scale is transitioning to a single uniform scale value, but since it's still internally represented as a Vector3,
- // we need to pick one number to use for load/store operations.
- float scale = transformInstance->GetScale().GetMaxElement();
+ float scale = transformInstance->GetUniformScale();
JSR::ResultCode loadResult =
ContinueLoadingFromJsonObjectField(&scale, azrtti_typeid(), inputValue, ScaleTag, context);
@@ -122,10 +120,8 @@ namespace AZ
{
AZ::ScopedContextPath subPathName(context, ScaleTag);
- // Scale is transitioning to a single uniform scale value, but since it's still internally represented as a Vector3,
- // we need to pick one number to use for load/store operations.
- float scale = transformInstance->GetScale().GetMaxElement();
- float defaultScale = defaultTransformInstance ? defaultTransformInstance->GetScale().GetMaxElement() : 0.0f;
+ float scale = transformInstance->GetUniformScale();
+ float defaultScale = defaultTransformInstance ? defaultTransformInstance->GetUniformScale() : 0.0f;
JSR::ResultCode storeResult = ContinueStoringToJsonObjectField(
outputValue, ScaleTag, &scale, defaultTransformInstance ? &defaultScale : nullptr, azrtti_typeid(),
diff --git a/Code/Framework/AzCore/Tests/Math/MathTestData.h b/Code/Framework/AzCore/Tests/Math/MathTestData.h
index cd3ade7854..c82c5caea7 100644
--- a/Code/Framework/AzCore/Tests/Math/MathTestData.h
+++ b/Code/Framework/AzCore/Tests/Math/MathTestData.h
@@ -61,8 +61,8 @@ namespace MathTestData
};
static const AZ::Transform NonOrthogonalTransforms[] = {
- AZ::Transform::CreateScale(AZ::Vector3(2.4f, 0.3f, 1.7f)),
- AZ::Transform::CreateRotationX(2.2f) * AZ::Transform::CreateScale(AZ::Vector3(0.2f, 0.8f, 1.4f))
+ AZ::Transform::CreateUniformScale(2.4f),
+ AZ::Transform::CreateRotationX(2.2f) * AZ::Transform::CreateUniformScale(0.8f)
};
static const AZ::Transform OrthogonalTransforms[] = {
diff --git a/Code/Framework/AzCore/Tests/Math/ObbTests.cpp b/Code/Framework/AzCore/Tests/Math/ObbTests.cpp
index a90d66f288..de267b4265 100644
--- a/Code/Framework/AzCore/Tests/Math/ObbTests.cpp
+++ b/Code/Framework/AzCore/Tests/Math/ObbTests.cpp
@@ -59,11 +59,11 @@ namespace UnitTest
TEST(MATH_Obb, TestScaleTransform)
{
Obb obb = Obb::CreateFromPositionRotationAndHalfLengths(position, rotation, halfLengths);
- Vector3 scaleFactors = Vector3(1.0f, 2.0f, 3.0f);
- Transform transform = Transform::CreateScale(scaleFactors);
+ float scale = 3.0f;
+ Transform transform = Transform::CreateUniformScale(scale);
obb = transform * obb;
- EXPECT_THAT(obb.GetPosition(), IsClose(Vector3(1.0f, 4.0f, 9.0f)));
- EXPECT_THAT(obb.GetHalfLengths(), IsClose(Vector3(0.5f, 1.0f, 1.5f)));
+ EXPECT_THAT(obb.GetPosition(), IsClose(Vector3(3.0f, 6.0f, 9.0f)));
+ EXPECT_THAT(obb.GetHalfLengths(), IsClose(Vector3(1.5f, 1.5f, 1.5f)));
}
TEST(MATH_Obb, TestSetPosition)
diff --git a/Code/Framework/AzCore/Tests/Math/TransformPerformanceTests.cpp b/Code/Framework/AzCore/Tests/Math/TransformPerformanceTests.cpp
index 400a845913..a9788375ad 100644
--- a/Code/Framework/AzCore/Tests/Math/TransformPerformanceTests.cpp
+++ b/Code/Framework/AzCore/Tests/Math/TransformPerformanceTests.cpp
@@ -186,7 +186,7 @@ namespace Benchmark
{
for (auto& testData : m_testDataArray)
{
- AZ::Transform result = AZ::Transform::CreateScale(testData.v3);
+ AZ::Transform result = AZ::Transform::CreateUniformScale(testData.value[0]);
benchmark::DoNotOptimize(result);
}
}
@@ -350,7 +350,7 @@ namespace Benchmark
{
for (auto& testData : m_testDataArray)
{
- AZ::Vector3 result = testData.t1.GetScale();
+ float result = testData.t1.GetUniformScale();
benchmark::DoNotOptimize(result);
}
}
@@ -376,7 +376,7 @@ namespace Benchmark
for (auto& testData : m_testDataArray)
{
AZ::Transform testTransform = testData.t2;
- AZ::Vector3 result = testTransform.ExtractScale();
+ float result = testTransform.ExtractUniformScale();
benchmark::DoNotOptimize(result);
}
}
diff --git a/Code/Framework/AzCore/Tests/Math/TransformTests.cpp b/Code/Framework/AzCore/Tests/Math/TransformTests.cpp
index d0343211c3..49607573ce 100644
--- a/Code/Framework/AzCore/Tests/Math/TransformTests.cpp
+++ b/Code/Framework/AzCore/Tests/Math/TransformTests.cpp
@@ -184,12 +184,12 @@ namespace UnitTest
TEST(MATH_Transform, CreateScale)
{
- const AZ::Vector3 scale(1.7f, 0.3f, 2.4f);
- const AZ::Transform transform = AZ::Transform::CreateScale(scale);
+ const float scale = 1.7f;
+ const AZ::Transform transform = AZ::Transform::CreateUniformScale(scale);
const AZ::Vector3 vector(0.2f, -1.6f, 0.4f);
EXPECT_THAT(transform.GetTranslation(), IsClose(AZ::Vector3::CreateZero()));
const AZ::Vector3 transformedVector = transform.TransformPoint(vector);
- const AZ::Vector3 expected(0.34f, -0.48f, 0.96f);
+ const AZ::Vector3 expected(0.34f, -2.72f, 0.68f);
EXPECT_THAT(transformedVector, IsClose(expected));
}
@@ -237,10 +237,10 @@ namespace UnitTest
TEST(MATH_Transform, MultiplyByTransform)
{
const AZ::Transform transform1 = AZ::Transform::CreateRotationY(0.3f);
- const AZ::Transform transform2 = AZ::Transform::CreateScale(AZ::Vector3(1.3f, 1.5f, 0.4f));
+ const AZ::Transform transform2 = AZ::Transform::CreateUniformScale(1.3f);
const AZ::Transform transform3 = AZ::Transform::CreateFromQuaternionAndTranslation(
AZ::Quaternion(0.42f, 0.46f, -0.66f, 0.42f), AZ::Vector3(2.8f, -3.7f, 1.6f));
- const AZ::Transform transform4 = AZ::Transform::CreateRotationX(-0.7f) * AZ::Transform::CreateScale(AZ::Vector3(0.6f, 1.3f, 0.7f));
+ const AZ::Transform transform4 = AZ::Transform::CreateRotationX(-0.7f) * AZ::Transform::CreateUniformScale(0.6f);
AZ::Transform transform5 = transform1;
transform5 *= transform4;
const AZ::Vector3 vector(1.9f, 2.3f, 0.2f);
@@ -341,10 +341,10 @@ namespace UnitTest
AZ::Transform unscaledTransform = orthogonalTransform;
unscaledTransform.ExtractScale();
EXPECT_THAT(unscaledTransform.GetScale(), IsClose(AZ::Vector3::CreateOne()));
- const AZ::Vector3 scale(2.8f, 0.7f, 1.3f);
+ const float scale = 2.8f;
AZ::Transform scaledTransform = orthogonalTransform;
- scaledTransform.MultiplyByScale(scale);
- EXPECT_THAT(scaledTransform.GetScale(), IsClose(scale));
+ scaledTransform.MultiplyByUniformScale(scale);
+ EXPECT_NEAR(scaledTransform.GetUniformScale(), scale, AZ::Constants::Tolerance);
}
INSTANTIATE_TEST_CASE_P(MATH_Transform, TransformScaleFixture, ::testing::ValuesIn(MathTestData::OrthogonalTransforms));
@@ -353,24 +353,11 @@ namespace UnitTest
{
EXPECT_TRUE(AZ::Transform::CreateIdentity().IsOrthogonal());
EXPECT_TRUE(AZ::Transform::CreateRotationZ(0.3f).IsOrthogonal());
- EXPECT_FALSE(AZ::Transform::CreateScale(AZ::Vector3(0.8f, 0.3f, 1.2f)).IsOrthogonal());
+ EXPECT_FALSE(AZ::Transform::CreateUniformScale(0.8f).IsOrthogonal());
EXPECT_TRUE(AZ::Transform::CreateFromQuaternion(AZ::Quaternion(-0.52f, -0.08f, 0.56f, 0.64f)).IsOrthogonal());
AZ::Transform transform;
transform.SetFromEulerRadians(AZ::Vector3(0.2f, 0.4f, 0.1f));
EXPECT_TRUE(transform.IsOrthogonal());
-
- // want to test each possible way the transform could fail to be orthogonal, which we can do by testing for one
- // axis, then using a rotation which cycles the axes
- const AZ::Transform axisCycle = AZ::Transform::CreateFromQuaternion(AZ::Quaternion(0.5f, 0.5f, 0.5f, 0.5f));
-
- // a transform which is normalized in 2 axes, but not the third
- AZ::Transform nonOrthogonalTransform1 = AZ::Transform::CreateScale(AZ::Vector3(1.0f, 1.0f, 2.0f));
-
- for (int i = 0; i < 3; i++)
- {
- EXPECT_FALSE(nonOrthogonalTransform1.IsOrthogonal());
- nonOrthogonalTransform1 = axisCycle * nonOrthogonalTransform1;
- }
}
using TransformSetFromEulerDegreesFixture = ::testing::TestWithParam;
@@ -465,10 +452,11 @@ namespace UnitTest
AZ::Transform* deserializedTransform = AZ::Utils::LoadObjectFromBuffer(objectStreamBuffer, strlen(objectStreamBuffer) + 1);
const AZ::Vector3 expectedTranslation(513.7845459f, 492.5420837f, 32.0000000f);
- const AZ::Vector3 expectedScale(1.5f, 0.5f, 1.2f);
+ const float expectedScale = 1.5f;
const AZ::Quaternion expectedRotation(0.2624075f, 0.4405251f, 0.2029076f, 0.8342113f);
const AZ::Transform expectedTransform =
- AZ::Transform::CreateFromQuaternionAndTranslation(expectedRotation, expectedTranslation) * AZ::Transform::CreateScale(expectedScale);
+ AZ::Transform::CreateFromQuaternionAndTranslation(expectedRotation, expectedTranslation) *
+ AZ::Transform::CreateUniformScale(expectedScale);
EXPECT_TRUE(deserializedTransform->IsClose(expectedTransform));
azfree(deserializedTransform);
diff --git a/Code/Framework/AzCore/Tests/ScriptMath.cpp b/Code/Framework/AzCore/Tests/ScriptMath.cpp
index cb673e92e7..493a21de36 100644
--- a/Code/Framework/AzCore/Tests/ScriptMath.cpp
+++ b/Code/Framework/AzCore/Tests/ScriptMath.cpp
@@ -1275,10 +1275,10 @@ namespace UnitTest
script->Execute("AZTestAssert(t1:TransformVector(Vector3(1, 0, 0)):IsClose(Vector3(1, 0, 0)))");
script->Execute("AZTestAssert(t1:TransformVector(Vector3(0, 1, 0)):IsClose(Vector3(0, 0.866, 0.5)))");
script->Execute("AZTestAssert(t1:TransformVector(Vector3(0, 0, 1)):IsClose(Vector3(0, -0.5, 0.866)))");
- script->Execute("t1 = Transform.CreateScale(Vector3(1, 2, 3))");
- script->Execute("AZTestAssert(t1:TransformVector(Vector3(1, 0, 0)):IsClose(Vector3(1, 0, 0)))");
+ script->Execute("t1 = Transform.CreateScale(2)");
+ script->Execute("AZTestAssert(t1:TransformVector(Vector3(1, 0, 0)):IsClose(Vector3(2, 0, 0)))");
script->Execute("AZTestAssert(t1:TransformVector(Vector3(0, 1, 0)):IsClose(Vector3(0, 2, 0)))");
- script->Execute("AZTestAssert(t1:TransformVector(Vector3(0, 0, 1)):IsClose(Vector3(0, 0, 3)))");
+ script->Execute("AZTestAssert(t1:TransformVector(Vector3(0, 0, 1)):IsClose(Vector3(0, 0, 2)))");
script->Execute("t1 = Transform.CreateTranslation(Vector3(1, 2, 3))");
script->Execute("AZTestAssert(t1:TransformVector(Vector3(1, 0, 0)):IsClose(Vector3(1, 0, 0)))");
script->Execute("AZTestAssert(t1:TransformVector(Vector3(0, 1, 0)):IsClose(Vector3(0, 1, 0)))");
@@ -1341,19 +1341,19 @@ namespace UnitTest
script->Execute("AZTestAssert(t3:GetTranslation():IsClose(Vector3(-5.90, 25.415, 19.645), 0.001))");
////test inverse, should handle non-orthogonal matrices
- script->Execute("t1 = Transform.CreateRotationX(1) * Transform.CreateScale(Vector3(1, 2, 3))");
+ script->Execute("t1 = Transform.CreateRotationX(1) * Transform.CreateScale(2)");
script->Execute("AZTestAssert((t1*t1:GetInverse()):IsClose(Transform.CreateIdentity()))");
////scale access
- script->Execute("t1 = Transform.CreateRotationX(Math.DegToRad(40)) * Transform.CreateScale(Vector3(2, 3, 4))");
- script->Execute("AZTestAssert(t1:GetScale():IsClose(Vector3(2, 3, 4)))");
- script->Execute("AZTestAssert(t1:ExtractScale():IsClose(Vector3(2, 3, 4)))");
- script->Execute("AZTestAssert(t1:GetScale():IsClose(Vector3.CreateOne()))");
- script->Execute("t1:MultiplyByScale(Vector3(3, 4, 5))");
- script->Execute("AZTestAssert(t1:GetScale():IsClose(Vector3(3, 4, 5)))");
+ script->Execute("t1 = Transform.CreateRotationX(Math.DegToRad(40)) * Transform.CreateScale(3)");
+ script->Execute("AZTestAssert(t1:GetScale():IsClose(3))");
+ script->Execute("AZTestAssert(t1:ExtractScale():IsClose(3))");
+ script->Execute("AZTestAssert(t1:GetScale():IsClose(1))");
+ script->Execute("t1:MultiplyByScale(2)");
+ script->Execute("AZTestAssert(t1:GetScale():IsClose(2))");
////orthogonalize
- script->Execute("t1 = Transform.CreateRotationX(Math.DegToRad(30)) * Transform.CreateScale(Vector3(2, 3, 4))");
+ script->Execute("t1 = Transform.CreateRotationX(Math.DegToRad(30)) * Transform.CreateScale(3)");
script->Execute("t1:SetTranslation(Vector3(1,2,3))");
script->Execute("t2 = t1:GetOrthogonalized()");
script->Execute("AZTestAssertFloatClose(t2:GetBasisX():GetLength(), 1)");
@@ -1372,7 +1372,7 @@ namespace UnitTest
script->Execute("t1 = Transform.CreateRotationX(Math.DegToRad(30))");
script->Execute("t1:SetTranslation(Vector3(1, 2, 3))");
script->Execute("AZTestAssert(t1:IsOrthogonal(0.05))");
- script->Execute("t1 = Transform.CreateRotationX(Math.DegToRad(30)) * Transform.CreateScale(Vector3(2, 3, 4))");
+ script->Execute("t1 = Transform.CreateRotationX(Math.DegToRad(30)) * Transform.CreateScale(2)");
script->Execute("AZTestAssert( not t1:IsOrthogonal(0.05))");
////IsClose
diff --git a/Code/Framework/AzCore/Tests/Serialization/Json/TransformSerializerTests.cpp b/Code/Framework/AzCore/Tests/Serialization/Json/TransformSerializerTests.cpp
index 12711b1e1a..7febbbb5d9 100644
--- a/Code/Framework/AzCore/Tests/Serialization/Json/TransformSerializerTests.cpp
+++ b/Code/Framework/AzCore/Tests/Serialization/Json/TransformSerializerTests.cpp
@@ -44,7 +44,7 @@ namespace JsonSerializationTests
AZStd::shared_ptr CreateFullySetInstance() override
{
return AZStd::make_shared(
- AZ::Vector3(1.0f, 2.0f, 3.0f), AZ::Quaternion(0.25f, 0.5f, 0.75f, 1.0f), AZ::Vector3(9.0f));
+ AZ::Vector3(1.0f, 2.0f, 3.0f), AZ::Quaternion(0.25f, 0.5f, 0.75f, 1.0f), 9.0f);
}
AZStd::string_view GetJsonForFullySetInstance() override
@@ -95,7 +95,7 @@ namespace JsonSerializationTests
AZ::Transform expectedTransform(
AZ::Vector3(2.25f, 3.5f, 4.75f),
AZ::Quaternion(0.25f, 0.5f, 0.75f, 1.0f),
- AZ::Vector3(5.5f));
+ 5.5f);
rapidjson::Document json;
json.Parse(R"({ "Translation": [ 2.25, 3.5, 4.75 ], "Rotation": [ 0.25, 0.5, 0.75, 1.0 ], "Scale": 5.5 })");
@@ -189,7 +189,7 @@ namespace JsonSerializationTests
TEST_F(JsonTransformSerializerTests, Load_FullySetTransform_ReturnsSuccessWithOnlyScale)
{
AZ::Transform testTransform = AZ::Transform::CreateIdentity();
- AZ::Transform expectedTransform = AZ::Transform::CreateScale(AZ::Vector3(5.5f));
+ AZ::Transform expectedTransform = AZ::Transform::CreateUniformScale(5.5f);
rapidjson::Document json;
json.Parse(R"({ "Scale" : 5.5 })");
diff --git a/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.cpp b/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.cpp
index 4b805fd3e1..b1b2378174 100644
--- a/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.cpp
+++ b/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.cpp
@@ -447,29 +447,12 @@ namespace AzFramework
static AZ::Transform RotateAroundLocalHelper(float eulerAngleRadian, const AZ::Transform& localTM, AZ::Vector3 axis)
{
- //get the existing translation and scale
- AZ::Vector3 translation = localTM.GetTranslation();
- AZ::Vector3 scale = localTM.GetScale();
-
//normalize the axis before creating rotation
axis.Normalize();
AZ::Quaternion rotate = AZ::Quaternion::CreateFromAxisAngle(axis, eulerAngleRadian);
- //create new rotation transform
- AZ::Quaternion currentRotate = localTM.GetRotation();
- AZ::Quaternion newRotate = rotate * currentRotate;
- newRotate.Normalize();
-
- //scale
- AZ::Transform newLocalTM = AZ::Transform::CreateScale(scale);
-
- //rotate
- AZ::Transform rotateLocalTM = AZ::Transform::CreateFromQuaternion(newRotate);
- newLocalTM = rotateLocalTM * newLocalTM;
-
- //translate
- newLocalTM.SetTranslation(translation);
-
+ AZ::Transform newLocalTM = localTM;
+ newLocalTM.SetRotation((rotate * localTM.GetRotation()).GetNormalized());
return newLocalTM;
}
@@ -527,6 +510,23 @@ namespace AzFramework
return m_worldTM.GetScale();
}
+ void TransformComponent::SetLocalUniformScale(float scale)
+ {
+ AZ::Transform newLocalTM = m_localTM;
+ newLocalTM.SetUniformScale(scale);
+ SetLocalTM(newLocalTM);
+ }
+
+ float TransformComponent::GetLocalUniformScale()
+ {
+ return m_localTM.GetUniformScale();
+ }
+
+ float TransformComponent::GetWorldUniformScale()
+ {
+ return m_worldTM.GetUniformScale();
+ }
+
AZStd::vector TransformComponent::GetChildren()
{
AZStd::vector children;
diff --git a/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.h b/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.h
index f393e22064..f0fa1b6985 100644
--- a/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.h
+++ b/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.h
@@ -146,10 +146,13 @@ namespace AzFramework
// Scale Modifiers
void SetLocalScale(const AZ::Vector3& scale) override;
-
AZ::Vector3 GetLocalScale() override;
AZ::Vector3 GetWorldScale() override;
+ void SetLocalUniformScale(float scale) override;
+ float GetLocalUniformScale() override;
+ float GetWorldUniformScale() override;
+
// Transform hierarchy
AZStd::vector GetChildren() override;
AZStd::vector GetAllDescendants() override;
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Manipulators/ScaleManipulators.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Manipulators/ScaleManipulators.cpp
index 3af09f644d..caeedd834f 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/Manipulators/ScaleManipulators.cpp
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Manipulators/ScaleManipulators.cpp
@@ -82,9 +82,7 @@ namespace AzToolsFramework
m_uniformScaleManipulator->SetVisualOrientationOverride(
QuaternionFromTransformNoScaling(localTransform));
- m_uniformScaleManipulator->SetLocalTransform(
- AZ::Transform::CreateTranslation(localTransform.GetTranslation()) *
- AZ::Transform::CreateScale(localTransform.GetScale()));
+ m_uniformScaleManipulator->SetLocalOrientation(AZ::Quaternion::CreateIdentity());
}
void ScaleManipulators::SetLocalPositionImpl(const AZ::Vector3& localPosition)
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Slice/SliceUtilities.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Slice/SliceUtilities.cpp
index 75070d9b41..e13d4fdb47 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/Slice/SliceUtilities.cpp
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Slice/SliceUtilities.cpp
@@ -1475,10 +1475,8 @@ namespace AzToolsFramework
// to avoid pushing them to the slice.
// Only scale is preserved on the root entity of a slice.
transformComponent->SetParent(AZ::EntityId());
- AZ::Vector3 scale = transformComponent->GetLocalScale();
transformComponent->SetWorldTranslation(AZ::Vector3::CreateZero());
transformComponent->SetLocalRotation(AZ::Vector3::CreateZero());
- transformComponent->SetLocalScale(scale);
}
}
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.cpp
index 671a56b4d4..bcd8e3fa4a 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.cpp
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.cpp
@@ -46,9 +46,9 @@ namespace AzToolsFramework
const AZ::u32 ParentEntityCRC = AZ_CRC("Parent Entity", 0x5b1b276c);
// Decompose a transform into euler angles in degrees, scale (along basis, any shear will be dropped), and translation.
- void DecomposeTransform(const AZ::Transform& transform, AZ::Vector3& translation, AZ::Vector3& rotation, AZ::Vector3& scale)
+ void DecomposeTransform(const AZ::Transform& transform, AZ::Vector3& translation, AZ::Vector3& rotation, float& scale)
{
- scale = transform.GetScale();
+ scale = transform.GetUniformScale();
translation = transform.GetTranslation();
rotation = transform.GetRotation().GetEulerDegrees();
}
@@ -323,7 +323,7 @@ namespace AzToolsFramework
AZ::Transform TransformComponent::GetLocalScaleTM() const
{
- return AZ::Transform::CreateScale(m_editorTransform.m_scale);
+ return AZ::Transform::CreateUniformScale(m_editorTransform.m_scale);
}
const AZ::Transform& TransformComponent::GetLocalTM()
@@ -340,7 +340,8 @@ namespace AzToolsFramework
// given a local transform, update local transform.
void TransformComponent::SetLocalTM(const AZ::Transform& finalTx)
{
- AZ::Vector3 tx, rot, scale;
+ AZ::Vector3 tx, rot;
+ float scale;
Internal::DecomposeTransform(finalTx, tx, rot, scale);
m_editorTransform.m_translate = tx;
@@ -645,13 +646,13 @@ namespace AzToolsFramework
void TransformComponent::SetLocalScale(const AZ::Vector3& scale)
{
- m_editorTransform.m_scale = scale;
+ m_editorTransform.m_scale = scale.GetMaxElement();
TransformChanged();
}
AZ::Vector3 TransformComponent::GetLocalScale()
{
- return m_editorTransform.m_scale;
+ return AZ::Vector3(m_editorTransform.m_scale);
}
AZ::Vector3 TransformComponent::GetWorldScale()
@@ -659,6 +660,22 @@ namespace AzToolsFramework
return GetWorldTM().GetScale();
}
+ void TransformComponent::SetLocalUniformScale(float scale)
+ {
+ m_editorTransform.m_scale = scale;
+ TransformChanged();
+ }
+
+ float TransformComponent::GetLocalUniformScale()
+ {
+ return m_editorTransform.m_scale;
+ }
+
+ float TransformComponent::GetWorldUniformScale()
+ {
+ return GetWorldTM().GetUniformScale();
+ }
+
const AZ::Transform& TransformComponent::GetParentWorldTM() const
{
auto parent = GetParentTransformComponent();
@@ -1062,12 +1079,6 @@ namespace AzToolsFramework
ModifyEditorTransform(m_editorTransform.m_rotate, data, parent);
}
- void TransformComponent::ScaleBy(const AZ::Vector3& data)
- {
- //scale is always local
- ModifyEditorTransform(m_editorTransform.m_scale, data, AZ::Transform::Identity());
- }
-
AZ::EntityId TransformComponent::GetSliceEntityParentId()
{
return GetParentId();
@@ -1214,7 +1225,7 @@ namespace AzToolsFramework
{
AzToolsFramework::ScopedUndoBatch undo("Reset transform values");
m_editorTransform.m_translate = AZ::Vector3::CreateZero();
- m_editorTransform.m_scale = AZ::Vector3::CreateOne();
+ m_editorTransform.m_scale = 1.0f;
m_editorTransform.m_rotate = AZ::Vector3::CreateZero();
OnTransformChanged();
SetDirty();
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.h b/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.h
index bbdf770dab..06d1101c58 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.h
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.h
@@ -130,10 +130,13 @@ namespace AzToolsFramework
// Scale Modifiers
void SetLocalScale(const AZ::Vector3& scale) override;
-
AZ::Vector3 GetLocalScale() override;
AZ::Vector3 GetWorldScale() override;
+ void SetLocalUniformScale(float scale) override;
+ float GetLocalUniformScale() override;
+ float GetWorldUniformScale() override;
+
AZ::EntityId GetParentId() override;
AZ::TransformInterface* GetParent() override;
void SetParent(AZ::EntityId parentId) override;
@@ -147,7 +150,6 @@ namespace AzToolsFramework
// TransformComponentMessages::Bus
void TranslateBy(const AZ::Vector3&) override;
void RotateBy(const AZ::Vector3&) override; // euler in degrees
- void ScaleBy(const AZ::Vector3&) override;
const EditorTransform& GetLocalEditorTransform() override;
void SetLocalEditorTransform(const EditorTransform& dest) override;
bool IsTransformLocked() override;
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponentBus.h b/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponentBus.h
index f1cb8459c4..6082bda4bd 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponentBus.h
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponentBus.h
@@ -30,7 +30,7 @@ namespace AzToolsFramework
EditorTransform()
{
m_translate = AZ::Vector3::CreateZero();
- m_scale = AZ::Vector3::CreateOne();
+ m_scale = 1.0f;
m_rotate = AZ::Vector3::CreateZero();
m_locked = false;
}
@@ -41,7 +41,7 @@ namespace AzToolsFramework
}
AZ::Vector3 m_translate; //! Translation in engine units (meters)
- AZ::Vector3 m_scale;
+ float m_scale;
AZ::Vector3 m_rotate; //! Rotation in degrees
bool m_locked;
};
@@ -65,7 +65,6 @@ namespace AzToolsFramework
virtual void TranslateBy(const AZ::Vector3&) = 0;
virtual void RotateBy(const AZ::Vector3&) = 0;
- virtual void ScaleBy(const AZ::Vector3&) = 0;
virtual bool IsTransformLocked() = 0;
};
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.cpp
index 433602e6d8..65ba51908d 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.cpp
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.cpp
@@ -1472,7 +1472,7 @@ namespace AzToolsFramework
{
const AZ::Quaternion rotation = entityIdLookupIt->second.m_initial.GetRotation().GetNormalized();
const AZ::Vector3 position = entityIdLookupIt->second.m_initial.GetTranslation();
- const AZ::Vector3 scale = entityIdLookupIt->second.m_initial.GetScale();
+ const float scale = entityIdLookupIt->second.m_initial.GetUniformScale();
const AZ::Vector3 centerOffset = CalculateCenterOffset(entityId, m_pivotMode);
@@ -1483,7 +1483,7 @@ namespace AzToolsFramework
AZ::Transform::CreateFromQuaternion(rotation) *
AZ::Transform::CreateTranslation(centerOffset) * offsetRotation *
AZ::Transform::CreateTranslation(-centerOffset) *
- AZ::Transform::CreateScale(scale));
+ AZ::Transform::CreateUniformScale(scale));
}
break;
case ReferenceFrame::Parent:
@@ -1595,16 +1595,15 @@ namespace AzToolsFramework
}
const AZ::Transform initial = entityIdLookupIt->second.m_initial;
- const AZ::Vector3 initialScale = initial.GetScale();
+ const float initialScale = initial.GetUniformScale();
const auto sumVectorElements = [](const AZ::Vector3& vec) {
return vec.GetX() + vec.GetY() + vec.GetZ();
};
- const AZ::Vector3 uniformScale = AZ::Vector3(action.m_start.m_sign * sumVectorElements(action.LocalScaleOffset()));
- const AZ::Vector3 scale = (AZ::Vector3::CreateOne() +
- (uniformScale / initialScale)).GetClamp(AZ::Vector3(AZ::MinTransformScale), AZ::Vector3(AZ::MaxTransformScale));
- const AZ::Transform scaleTransform = AZ::Transform::CreateScale(scale);
+ const float uniformScale = action.m_start.m_sign * sumVectorElements(action.LocalScaleOffset());
+ const float scale = AZ::GetClamp(1.0f + uniformScale / initialScale, AZ::MinTransformScale, AZ::MaxTransformScale);
+ const AZ::Transform scaleTransform = AZ::Transform::CreateUniformScale(scale);
if (action.m_modifiers.Alt())
{
@@ -1866,7 +1865,7 @@ namespace AzToolsFramework
CopyOrientationToSelectedEntitiesGroup(QuaternionFromTransformNoScaling(worldFromLocal));
break;
case Mode::Scale:
- CopyScaleToSelectedEntitiesIndividualWorld(worldFromLocal.GetScale());
+ CopyScaleToSelectedEntitiesIndividualWorld(worldFromLocal.GetUniformScale());
break;
case Mode::Translation:
CopyTranslationToSelectedEntitiesGroup(worldFromLocal.GetTranslation());
@@ -1895,7 +1894,7 @@ namespace AzToolsFramework
CopyOrientationToSelectedEntitiesIndividual(QuaternionFromTransformNoScaling(worldFromLocal));
break;
case Mode::Scale:
- CopyScaleToSelectedEntitiesIndividualWorld(worldFromLocal.GetScale());
+ CopyScaleToSelectedEntitiesIndividualWorld(worldFromLocal.GetUniformScale());
break;
case Mode::Translation:
CopyTranslationToSelectedEntitiesIndividual(worldFromLocal.GetTranslation());
@@ -2388,7 +2387,7 @@ namespace AzToolsFramework
ResetOrientationForSelectedEntitiesLocal();
break;
case Mode::Scale:
- CopyScaleToSelectedEntitiesIndividualLocal(AZ::Vector3::CreateOne());
+ CopyScaleToSelectedEntitiesIndividualLocal(1.0f);
break;
case Mode::Translation:
ResetTranslationForSelectedEntitiesLocal();
@@ -2414,7 +2413,7 @@ namespace AzToolsFramework
ResetOrientationForSelectedEntitiesLocal();
break;
case Mode::Scale:
- CopyScaleToSelectedEntitiesIndividualWorld(AZ::Vector3::CreateOne());
+ CopyScaleToSelectedEntitiesIndividualWorld(1.0f);
break;
case Mode::Translation:
// do nothing
@@ -2934,7 +2933,7 @@ namespace AzToolsFramework
}
}
- void EditorTransformComponentSelection::CopyScaleToSelectedEntitiesIndividualWorld(const AZ::Vector3& scale)
+ void EditorTransformComponentSelection::CopyScaleToSelectedEntitiesIndividualWorld(float scale)
{
AZ_PROFILE_FUNCTION(AZ::Debug::ProfileCategory::AzToolsFramework);
@@ -2949,7 +2948,7 @@ namespace AzToolsFramework
const auto transformsBefore = RecordTransformsBefore(manipulatorEntityIds.m_entityIds);
// update scale relative to initial
- const AZ::Transform scaleTransform = AZ::Transform::CreateScale(scale);
+ const AZ::Transform scaleTransform = AZ::Transform::CreateUniformScale(scale);
for (AZ::EntityId entityId : manipulatorEntityIds.m_entityIds)
{
ScopedUndoBatch::MarkEntityDirty(entityId);
@@ -2968,7 +2967,7 @@ namespace AzToolsFramework
RefreshUiAfterChange(manipulatorEntityIds.m_entityIds);
}
- void EditorTransformComponentSelection::CopyScaleToSelectedEntitiesIndividualLocal(const AZ::Vector3& scale)
+ void EditorTransformComponentSelection::CopyScaleToSelectedEntitiesIndividualLocal(float scale)
{
AZ_PROFILE_FUNCTION(AZ::Debug::ProfileCategory::AzToolsFramework);
@@ -3014,9 +3013,9 @@ namespace AzToolsFramework
if (transformIt != transformsBefore.end())
{
AZ::Transform newWorldFromLocal = transformIt->second;
- const AZ::Vector3 scale = newWorldFromLocal.GetScale();
+ const float scale = newWorldFromLocal.GetUniformScale();
newWorldFromLocal.SetRotation(orientation);
- newWorldFromLocal *= AZ::Transform::CreateScale(scale);
+ newWorldFromLocal *= AZ::Transform::CreateUniformScale(scale);
SetEntityWorldTransform(entityId, newWorldFromLocal);
}
@@ -3661,7 +3660,7 @@ namespace AzToolsFramework
}
void EditorTransformComponentSelection::SetEntityLocalScale(
- const AZ::EntityId entityId, const AZ::Vector3& localScale)
+ const AZ::EntityId entityId, const float localScale)
{
ETCS::SetEntityLocalScale(entityId, localScale, m_transformChangedInternally);
}
@@ -3714,11 +3713,11 @@ namespace AzToolsFramework
entityId, &AZ::TransformBus::Events::SetWorldTM, worldTransform);
}
- void SetEntityLocalScale(AZ::EntityId entityId, const AZ::Vector3& localScale, bool& internal)
+ void SetEntityLocalScale(AZ::EntityId entityId, float localScale, bool& internal)
{
ScopeSwitch sw(internal);
AZ::TransformBus::Event(
- entityId, &AZ::TransformBus::Events::SetLocalScale, localScale);
+ entityId, &AZ::TransformBus::Events::SetLocalUniformScale, localScale);
}
void SetEntityLocalRotation(AZ::EntityId entityId, const AZ::Vector3& localRotation, bool& internal)
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.h b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.h
index 99265313fe..9fd16a6e21 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.h
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.h
@@ -212,8 +212,8 @@ namespace AzToolsFramework
void CopyOrientationToSelectedEntitiesIndividual(const AZ::Quaternion& orientation);
void CopyOrientationToSelectedEntitiesGroup(const AZ::Quaternion& orientation);
void ResetOrientationForSelectedEntitiesLocal();
- void CopyScaleToSelectedEntitiesIndividualLocal(const AZ::Vector3& scale);
- void CopyScaleToSelectedEntitiesIndividualWorld(const AZ::Vector3& scale);
+ void CopyScaleToSelectedEntitiesIndividualLocal(float scale);
+ void CopyScaleToSelectedEntitiesIndividualWorld(float scale);
// EditorManipulatorCommandUndoRedoRequestBus ...
void UndoRedoEntityManipulatorCommand(
@@ -248,7 +248,7 @@ namespace AzToolsFramework
void SetEntityWorldTranslation(AZ::EntityId entityId, const AZ::Vector3& worldTranslation);
void SetEntityLocalTranslation(AZ::EntityId entityId, const AZ::Vector3& localTranslation);
void SetEntityWorldTransform(AZ::EntityId entityId, const AZ::Transform& worldTransform);
- void SetEntityLocalScale(AZ::EntityId entityId, const AZ::Vector3& localScale);
+ void SetEntityLocalScale(AZ::EntityId entityId, float localScale);
void SetEntityLocalRotation(AZ::EntityId entityId, const AZ::Vector3& localRotation);
AZ::EntityId m_hoveredEntityId; ///< What EntityId is the mouse currently hovering over (if any).
@@ -316,7 +316,7 @@ namespace AzToolsFramework
void SetEntityWorldTranslation(AZ::EntityId entityId, const AZ::Vector3& worldTranslation, bool& internal);
void SetEntityLocalTranslation(AZ::EntityId entityId, const AZ::Vector3& localTranslation, bool& internal);
void SetEntityWorldTransform(AZ::EntityId entityId, const AZ::Transform& worldTransform, bool& internal);
- void SetEntityLocalScale(AZ::EntityId entityId, const AZ::Vector3& localScale, bool& internal);
+ void SetEntityLocalScale(AZ::EntityId entityId, float localScale, bool& internal);
void SetEntityLocalRotation(AZ::EntityId entityId, const AZ::Vector3& localRotation, bool& internal);
} // namespace ETCS
} // namespace AzToolsFramework
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelectionRequestBus.h b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelectionRequestBus.h
index 59c250b8f7..9cd78f8c50 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelectionRequestBus.h
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelectionRequestBus.h
@@ -101,10 +101,10 @@ namespace AzToolsFramework
virtual void ResetOrientationForSelectedEntitiesLocal() = 0;
/// Copy scale to each individual entity in local space without moving position.
- virtual void CopyScaleToSelectedEntitiesIndividualLocal(const AZ::Vector3& scale) = 0;
+ virtual void CopyScaleToSelectedEntitiesIndividualLocal(float scale) = 0;
/// Copy scale to to each individual entity in world (absolute) space.
- virtual void CopyScaleToSelectedEntitiesIndividualWorld(const AZ::Vector3& scale) = 0;
+ virtual void CopyScaleToSelectedEntitiesIndividualWorld(float scale) = 0;
protected:
~EditorTransformComponentSelectionRequests() = default;
diff --git a/Code/Framework/GridMate/GridMate/Serialize/CompressionMarshal.cpp b/Code/Framework/GridMate/GridMate/Serialize/CompressionMarshal.cpp
index 751e151ec6..9dc7de1cf7 100644
--- a/Code/Framework/GridMate/GridMate/Serialize/CompressionMarshal.cpp
+++ b/Code/Framework/GridMate/GridMate/Serialize/CompressionMarshal.cpp
@@ -488,18 +488,17 @@ void TransformCompressor::Marshal(WriteBuffer& wb, const AZ::Transform& value) c
{
AZ::u8 flags = 0;
auto flagsMarker = wb.InsertMarker(flags);
- AZ::Matrix3x3 m33 = AZ::Matrix3x3::CreateFromTransform(value);
- AZ::Vector3 scale = m33.ExtractScale();
- AZ::Quaternion rot = AZ::Quaternion::CreateFromMatrix3x3(m33.GetOrthogonalized());
+ float scale = value.GetUniformScale();
+ AZ::Quaternion rot = value.GetRotation();
if (!rot.IsIdentity())
{
flags |= HAS_ROT;
wb.Write(rot, QuatCompMarshaler());
}
- if (!scale.IsClose(AZ::Vector3::CreateOne()))
+ if (!AZ::IsClose(scale, 1.0f))
{
flags |= HAS_SCALE;
- wb.Write(scale, Vec3CompMarshaler());
+ wb.Write(scale, HalfMarshaler());
}
AZ::Vector3 pos = value.GetTranslation();
if (!pos.IsZero())
@@ -527,9 +526,9 @@ void TransformCompressor::Unmarshal(AZ::Transform& value, ReadBuffer& rb) const
}
if (flags & HAS_SCALE)
{
- AZ::Vector3 scale;
- rb.Read(scale, Vec3CompMarshaler());
- xform.MultiplyByScale(scale);
+ float scale;
+ rb.Read(scale, HalfMarshaler());
+ xform.MultiplyByUniformScale(scale);
}
if (flags & HAS_POS)
{
diff --git a/Code/Framework/Tests/TransformComponent.cpp b/Code/Framework/Tests/TransformComponent.cpp
index 44008686cd..0b6110e3aa 100644
--- a/Code/Framework/Tests/TransformComponent.cpp
+++ b/Code/Framework/Tests/TransformComponent.cpp
@@ -24,6 +24,8 @@
#include
#include
+#include
+
using namespace AZ;
using namespace AzFramework;
@@ -362,8 +364,8 @@ namespace UnitTest
TEST_F(TransformComponentTransformMatrixSetGet, SetLocalRotation_SimpleValues_Set)
{
// add some scale first
- float sx = 1.03f, sy = 0.67f, sz = 1.23f;
- Transform tm = Transform::CreateScale(Vector3(sx, sy, sz));
+ float scale = 1.23f;
+ Transform tm = Transform::CreateUniformScale(scale);
TransformBus::Event(m_childId, &TransformBus::Events::SetLocalTM, tm);
float rx = 42.435f;
@@ -379,13 +381,13 @@ namespace UnitTest
Matrix3x3 finalRotate = rotateX * rotateY * rotateZ;
Vector3 basisX = tm.GetBasisX();
- Vector3 expectedBasisX = finalRotate.GetBasisX() * sx;
+ Vector3 expectedBasisX = finalRotate.GetBasisX() * scale;
EXPECT_TRUE(basisX.IsClose(expectedBasisX));
Vector3 basisY = tm.GetBasisY();
- Vector3 expectedBasisY = finalRotate.GetBasisY() * sy;
+ Vector3 expectedBasisY = finalRotate.GetBasisY() * scale;
EXPECT_TRUE(basisY.IsClose(expectedBasisY));
Vector3 basisZ = tm.GetBasisZ();
- Vector3 expectedBasisZ = finalRotate.GetBasisZ() * sz;
+ Vector3 expectedBasisZ = finalRotate.GetBasisZ() * scale;
EXPECT_TRUE(basisZ.IsClose(expectedBasisZ));
}
@@ -476,18 +478,15 @@ namespace UnitTest
{
TransformBus::Event(m_childId, &TransformBus::Events::RotateAroundLocalX, rx);
}
- Vector3 localScale;
- TransformBus::EventResult(localScale, m_childId, &TransformBus::Events::GetLocalScale);
- EXPECT_TRUE(localScale.IsClose(Vector3(1.0f, 1.0f, 1.0f)));
+ float localScale = FLT_MAX;
+ TransformBus::EventResult(localScale, m_childId, &TransformBus::Events::GetLocalUniformScale);
+ EXPECT_NEAR(localScale, 1.0f, AZ::Constants::Tolerance);
}
TEST_F(TransformComponentTransformMatrixSetGet, RotateAroundLocalX_ScaleDoesNotSkewRotation)
{
- float sx = 42.564f;
- float sy = 12.460f;
- float sz = 28.692f;
- Vector3 expectedScales(sx, sy, sz);
- TransformBus::Event(m_childId, &TransformBus::Events::SetLocalScale, expectedScales);
+ float expectedScale = 42.564f;
+ TransformBus::Event(m_childId, &TransformBus::Events::SetLocalUniformScale, expectedScale);
float rx = 1.43f;
TransformBus::Event(m_childId, &TransformBus::Events::RotateAroundLocalX, rx);
@@ -513,18 +512,15 @@ namespace UnitTest
{
TransformBus::Event(m_childId, &TransformBus::Events::RotateAroundLocalY, ry);
}
- Vector3 localScale;
- TransformBus::EventResult(localScale, m_childId, &TransformBus::Events::GetLocalScale);
- EXPECT_TRUE(localScale.IsClose(Vector3(1.0f, 1.0f, 1.0f)));
+ float localScale = FLT_MAX;
+ TransformBus::EventResult(localScale, m_childId, &TransformBus::Events::GetLocalUniformScale);
+ EXPECT_NEAR(localScale, 1.0f, AZ::Constants::Tolerance);
}
TEST_F(TransformComponentTransformMatrixSetGet, RotateAroundLocalY_ScaleDoesNotSkewRotation)
{
- float sx = 42.564f;
- float sy = 12.460f;
- float sz = 28.692f;
- Vector3 expectedScales(sx, sy, sz);
- TransformBus::Event(m_childId, &TransformBus::Events::SetLocalScale, expectedScales);
+ float expectedScale = 42.564f;
+ TransformBus::Event(m_childId, &TransformBus::Events::SetLocalUniformScale, expectedScale);
float ry = 1.43f;
TransformBus::Event(m_childId, &TransformBus::Events::RotateAroundLocalY, ry);
@@ -550,18 +546,15 @@ namespace UnitTest
{
TransformBus::Event(m_childId, &TransformBus::Events::RotateAroundLocalZ, rz);
}
- Vector3 localScale;
- TransformBus::EventResult(localScale, m_childId, &TransformBus::Events::GetLocalScale);
- EXPECT_TRUE(localScale.IsClose(Vector3(1.0f, 1.0f, 1.0f)));
+ float localScale = FLT_MAX;
+ TransformBus::EventResult(localScale, m_childId, &TransformBus::Events::GetLocalUniformScale);
+ EXPECT_NEAR(localScale, 1.0f, AZ::Constants::Tolerance);
}
TEST_F(TransformComponentTransformMatrixSetGet, RotateAroundLocalZ_ScaleDoesNotSkewRotation)
{
- float sx = 42.564f;
- float sy = 12.460f;
- float sz = 28.692f;
- Vector3 expectedScales(sx, sy, sz);
- TransformBus::Event(m_childId, &TransformBus::Events::SetLocalScale, expectedScales);
+ float expectedScale = 42.564f;
+ TransformBus::Event(m_childId, &TransformBus::Events::SetLocalUniformScale, expectedScale);
float rz = 1.43f;
TransformBus::Event(m_childId, &TransformBus::Events::RotateAroundLocalZ, rz);
@@ -572,65 +565,50 @@ namespace UnitTest
TEST_F(TransformComponentTransformMatrixSetGet, SetLocalScale_SimpleValues_Set)
{
- float sx = 42.564f;
- float sy = 12.460f;
- float sz = 28.692f;
- Vector3 expectedScales(sx, sy, sz);
- TransformBus::Event(m_childId, &TransformBus::Events::SetLocalScale, expectedScales);
+ float expectedScale = 42.564f;
+ TransformBus::Event(m_childId, &TransformBus::Events::SetLocalUniformScale, expectedScale);
- Transform tm ;
+ Transform tm;
TransformBus::EventResult(tm, m_childId, &TransformBus::Events::GetLocalTM);
- Vector3 scales = tm.GetScale();
- EXPECT_TRUE(scales.IsClose(expectedScales));
+ float scale = tm.GetUniformScale();
+ EXPECT_NEAR(scale, expectedScale, AZ::Constants::Tolerance);
}
TEST_F(TransformComponentTransformMatrixSetGet, GetLocalScale_SimpleValues_Return)
{
- float sx = 43.463f;
- float sy = 346.22f;
- float sz = 863.32f;
- Vector3 expectedScales(sx, sy, sz);
- Transform scaleTM = Transform::CreateScale(expectedScales);
+ float expectedScale = 43.463f;
+ Transform scaleTM = Transform::CreateUniformScale(expectedScale);
TransformBus::Event(m_childId, &TransformBus::Events::SetLocalTM, scaleTM);
- Vector3 scales;
- TransformBus::EventResult(scales, m_childId, &TransformBus::Events::GetLocalScale);
- EXPECT_TRUE(scales.IsClose(expectedScales));
+ float scale;
+ TransformBus::EventResult(scale, m_childId, &TransformBus::Events::GetLocalUniformScale);
+ EXPECT_NEAR(scale, expectedScale, AZ::Constants::Tolerance);
}
TEST_F(TransformComponentTransformMatrixSetGet, GetWorldScale_ChildHasNoScale_ReturnScaleSameAsParent)
{
- float sx = 43.463f;
- float sy = 346.22f;
- float sz = 863.32f;
- Vector3 expectedScales(sx, sy, sz);
- Transform scaleTM = Transform::CreateScale(expectedScales);
+ float expectedScale = 43.463f;
+ Transform scaleTM = Transform::CreateUniformScale(expectedScale);
TransformBus::Event(m_parentId, &TransformBus::Events::SetLocalTM, scaleTM);
- Vector3 scales;
- TransformBus::EventResult(scales, m_childId, &TransformBus::Events::GetWorldScale);
- EXPECT_TRUE(scales.IsClose(expectedScales));
+ float scale = FLT_MAX;
+ TransformBus::EventResult(scale, m_childId, &TransformBus::Events::GetWorldUniformScale);
+ EXPECT_NEAR(scale, expectedScale, AZ::Constants::Tolerance);
}
TEST_F(TransformComponentTransformMatrixSetGet, GetWorldScale_ChildHasScale_ReturnCompoundScale)
{
- float sx = 4.463f;
- float sy = 3.22f;
- float sz = 8.32f;
- Vector3 parentScales(sx, sy, sz);
- Transform parentScaleTM = Transform::CreateScale(parentScales);
+ float parentScale = 4.463f;
+ Transform parentScaleTM = Transform::CreateUniformScale(parentScale);
TransformBus::Event(m_parentId, &TransformBus::Events::SetLocalTM, parentScaleTM);
- float csx = 1.64f;
- float csy = 9.35f;
- float csz = 1.57f;
- Vector3 childScales(csx, csy, csz);
- Transform childScaleTM = Transform::CreateScale(childScales);
+ float childScale = 1.64f;
+ Transform childScaleTM = Transform::CreateUniformScale(childScale);
TransformBus::Event(m_childId, &TransformBus::Events::SetLocalTM, childScaleTM);
- Vector3 scales;
- TransformBus::EventResult(scales, m_childId, &TransformBus::Events::GetWorldScale);
- EXPECT_TRUE(scales.IsClose(parentScales * childScales));
+ float scale = FLT_MAX;
+ TransformBus::EventResult(scale, m_childId, &TransformBus::Events::GetWorldUniformScale);
+ EXPECT_NEAR(scale, parentScale * childScale, AZ::Constants::Tolerance);
}
class TransformComponentHierarchy
diff --git a/Code/Sandbox/Editor/Objects/SelectionGroup.cpp b/Code/Sandbox/Editor/Objects/SelectionGroup.cpp
index b883b78e49..6363257e2f 100644
--- a/Code/Sandbox/Editor/Objects/SelectionGroup.cpp
+++ b/Code/Sandbox/Editor/Objects/SelectionGroup.cpp
@@ -490,28 +490,6 @@ void CSelectionGroup::StartScaling()
}
-void CSelectionGroup::FinishScaling(const Vec3& scale, [[maybe_unused]] int referenceCoordSys)
-{
- if (fabs(scale.x - scale.y) < 0.001f &&
- fabs(scale.y - scale.z) < 0.001f &&
- fabs(scale.z - scale.x) < 0.001f)
- {
- return;
- }
-
- for (int i = 0; i < GetFilteredCount(); ++i)
- {
- CBaseObject* obj = GetFilteredObject(i);
- Vec3 OriginalScale;
- if (obj->GetUntransformedScale(OriginalScale))
- {
- obj->TransformScale(scale);
- obj->SetScale(OriginalScale);
- }
- }
-}
-
-
//////////////////////////////////////////////////////////////////////////
void CSelectionGroup::Align()
{
diff --git a/Code/Sandbox/Editor/Objects/SelectionGroup.h b/Code/Sandbox/Editor/Objects/SelectionGroup.h
index 277ff2a492..9f672f28b2 100644
--- a/Code/Sandbox/Editor/Objects/SelectionGroup.h
+++ b/Code/Sandbox/Editor/Objects/SelectionGroup.h
@@ -103,7 +103,6 @@ public:
void StartScaling();
void Scale(const Vec3& scale, int referenceCoordSys);
void SetScale(const Vec3& scale, int referenceCoordSys);
- void FinishScaling(const Vec3& scale, int referenceCoordSys);
//! Align objects in selection to surface normal
void Align();
//! Very special method to move contents of a voxel.
diff --git a/Code/Sandbox/Editor/TrackView/TrackViewAnimNode.cpp b/Code/Sandbox/Editor/TrackView/TrackViewAnimNode.cpp
index ae7077b4fc..b9814e66c1 100644
--- a/Code/Sandbox/Editor/TrackView/TrackViewAnimNode.cpp
+++ b/Code/Sandbox/Editor/TrackView/TrackViewAnimNode.cpp
@@ -1869,7 +1869,7 @@ void CTrackViewAnimNode::SetPos(const Vec3& position)
}
//////////////////////////////////////////////////////////////////////////
-void CTrackViewAnimNode::SetScale(const Vec3& scale)
+void CTrackViewAnimNode::SetScale(float scale)
{
CTrackViewTrack* track = GetTrackForParameter(AnimParamType::Scale);
@@ -2012,9 +2012,9 @@ void CTrackViewAnimNode::SetPosRotScaleTracksDefaultValues(bool positionAllowed,
}
if (scaleAllowed)
{
- AZ::Vector3 scale = AZ::Vector3::CreateOne();
- AZ::TransformBus::EventResult(scale, entityId, &AZ::TransformBus::Events::GetWorldScale);
- m_animNode->SetScale(time, AZVec3ToLYVec3(scale));
+ float scale = 1.0f;
+ AZ::TransformBus::EventResult(scale, entityId, &AZ::TransformBus::Events::GetWorldUniformScale);
+ m_animNode->SetScale(time, scale);
}
}
}
@@ -2482,11 +2482,11 @@ Quat CTrackViewAnimNode::GetTransformDelegateRotation(const Quat& baseRotation)
//////////////////////////////////////////////////////////////////////////
Vec3 CTrackViewAnimNode::GetTransformDelegateScale(const Vec3& baseScale) const
{
- const Vec3 scale = GetScale();
+ float scale = GetScale();
- return Vec3(CheckTrackAnimated(AnimParamType::ScaleX) ? scale.x : baseScale.x,
- CheckTrackAnimated(AnimParamType::ScaleY) ? scale.y : baseScale.y,
- CheckTrackAnimated(AnimParamType::ScaleZ) ? scale.z : baseScale.z);
+ return Vec3(CheckTrackAnimated(AnimParamType::ScaleX) ? scale : baseScale.x,
+ CheckTrackAnimated(AnimParamType::ScaleY) ? scale : baseScale.y,
+ CheckTrackAnimated(AnimParamType::ScaleZ) ? scale : baseScale.z);
}
//////////////////////////////////////////////////////////////////////////
@@ -2504,7 +2504,7 @@ void CTrackViewAnimNode::SetTransformDelegateRotation(const Quat& rotation)
//////////////////////////////////////////////////////////////////////////
void CTrackViewAnimNode::SetTransformDelegateScale(const Vec3& scale)
{
- SetScale(scale);
+ SetScale(scale.x);
}
bool CTrackViewAnimNode::IsTransformAnimParamTypeDelegated(const AnimParamType animParamType) const
diff --git a/Code/Sandbox/Editor/TrackView/TrackViewAnimNode.h b/Code/Sandbox/Editor/TrackView/TrackViewAnimNode.h
index 1e0cc2262a..4435d0efc7 100644
--- a/Code/Sandbox/Editor/TrackView/TrackViewAnimNode.h
+++ b/Code/Sandbox/Editor/TrackView/TrackViewAnimNode.h
@@ -182,8 +182,8 @@ public:
// Rotation/Position & Scale
void SetPos(const Vec3& position);
Vec3 GetPos() const { return m_animNode->GetPos(); }
- void SetScale(const Vec3& scale);
- Vec3 GetScale() const { return m_animNode->GetScale(); }
+ void SetScale(float scale);
+ float GetScale() const { return m_animNode->GetScale(); }
void SetRotation(const Quat& rotation);
Quat GetRotation() const { return m_animNode->GetRotate(); }
Quat GetRotation(float time) const { return m_animNode != nullptr ? m_animNode->GetRotate(time) : Quat(0,0,0,0); }
diff --git a/Code/Sandbox/Editor/TrackView/TrackViewSequence.cpp b/Code/Sandbox/Editor/TrackView/TrackViewSequence.cpp
index f915c804f8..3642f21da6 100644
--- a/Code/Sandbox/Editor/TrackView/TrackViewSequence.cpp
+++ b/Code/Sandbox/Editor/TrackView/TrackViewSequence.cpp
@@ -825,10 +825,10 @@ void CTrackViewSequence::SyncSelectedTracksToBase()
{
const Vec3 position = pAnimNode->GetPos();
const Quat rotation = pAnimNode->GetRotation();
- const Vec3 scale = pAnimNode->GetScale();
+ const float scale = pAnimNode->GetScale();
AZ::Transform transform = AZ::Transform::CreateIdentity();
- transform.SetScale(LYVec3ToAZVec3(scale));
+ transform.SetUniformScale(scale);
transform.SetRotation(LYQuaternionToAZQuaternion(rotation));
transform.SetTranslation(LYVec3ToAZVec3(position));
@@ -870,7 +870,7 @@ void CTrackViewSequence::SyncSelectedTracksFromBase()
pAnimNode->SetPos(AZVec3ToLYVec3(transform.GetTranslation()));
pAnimNode->SetRotation(AZQuaternionToLYQuaternion(transform.GetRotation()));
- pAnimNode->SetScale(AZVec3ToLYVec3(transform.GetScale()));
+ pAnimNode->SetScale(transform.GetUniformScale());
bNothingWasSynced = false;
}
diff --git a/Code/Tools/SceneAPI/SceneCore/Containers/Utilities/SceneUtilities.cpp b/Code/Tools/SceneAPI/SceneCore/Containers/Utilities/SceneUtilities.cpp
index f5bb9d28a6..ac27ed54eb 100644
--- a/Code/Tools/SceneAPI/SceneCore/Containers/Utilities/SceneUtilities.cpp
+++ b/Code/Tools/SceneAPI/SceneCore/Containers/Utilities/SceneUtilities.cpp
@@ -79,7 +79,7 @@ namespace AZ
if (coordinateSystemRule->GetScale() != 1.0f)
{
float scale = coordinateSystemRule->GetScale();
- matrix.MultiplyByScale(Vector3(scale, scale, scale));
+ matrix.MultiplyByScale(Vector3(scale));
}
if (!coordinateSystemRule->GetOriginNodeName().empty())
{
diff --git a/Code/Tools/SceneAPI/SceneUI/RowWidgets/TransformRowHandler.cpp b/Code/Tools/SceneAPI/SceneUI/RowWidgets/TransformRowHandler.cpp
index 09588a606e..640c092070 100644
--- a/Code/Tools/SceneAPI/SceneUI/RowWidgets/TransformRowHandler.cpp
+++ b/Code/Tools/SceneAPI/SceneUI/RowWidgets/TransformRowHandler.cpp
@@ -13,6 +13,7 @@
#include
#include
#include
+#include
#include
namespace AZ
@@ -58,10 +59,11 @@ namespace AZ
}
else
{
- AzToolsFramework::Vector3PropertyHandler handler;
- handler.ConsumeAttribute(widget->GetTranslationWidget(), attrib, attrValue, debugName);
- handler.ConsumeAttribute(widget->GetRotationWidget(), attrib, attrValue, debugName);
- handler.ConsumeAttribute(widget->GetScaleWidget(), attrib, attrValue, debugName);
+ 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);
}
}
@@ -109,4 +111,4 @@ namespace AZ
} // namespace SceneAPI
} // namespace AZ
-#include
\ No newline at end of file
+#include
diff --git a/Code/Tools/SceneAPI/SceneUI/RowWidgets/TransformRowHandler.h b/Code/Tools/SceneAPI/SceneUI/RowWidgets/TransformRowHandler.h
index a020ee8198..582f32649e 100644
--- a/Code/Tools/SceneAPI/SceneUI/RowWidgets/TransformRowHandler.h
+++ b/Code/Tools/SceneAPI/SceneUI/RowWidgets/TransformRowHandler.h
@@ -60,4 +60,4 @@ namespace AZ
};
} // namespace SceneUI
} // namespace SceneAPI
-} // namespace AZ
\ No newline at end of file
+} // namespace AZ
diff --git a/Code/Tools/SceneAPI/SceneUI/RowWidgets/TransformRowWidget.cpp b/Code/Tools/SceneAPI/SceneUI/RowWidgets/TransformRowWidget.cpp
index 10e0fd2a68..e8ecaa0c27 100644
--- a/Code/Tools/SceneAPI/SceneUI/RowWidgets/TransformRowWidget.cpp
+++ b/Code/Tools/SceneAPI/SceneUI/RowWidgets/TransformRowWidget.cpp
@@ -15,6 +15,7 @@
#include
#include
#include
+#include
#include
#include
@@ -47,7 +48,7 @@ namespace AZ
ExpandedTransform::ExpandedTransform()
: m_translation(0, 0, 0)
, m_rotation(0, 0, 0)
- , m_scale(1, 1, 1)
+ , m_scale(1)
{
}
@@ -60,14 +61,14 @@ namespace AZ
{
m_translation = transform.GetTranslation();
m_rotation = transform.GetEulerDegrees();
- m_scale = transform.GetScale();
+ m_scale = transform.GetUniformScale();
}
void ExpandedTransform::GetTransform(AZ::Transform& transform) const
{
transform = Transform::CreateTranslation(m_translation);
transform *= AZ::ConvertEulerDegreesToTransform(m_rotation);
- transform.MultiplyByScale(m_scale);
+ transform.MultiplyByUniformScale(m_scale);
}
const AZ::Vector3& ExpandedTransform::GetTranslation() const
@@ -90,12 +91,12 @@ namespace AZ
m_rotation = rotation;
}
- const AZ::Vector3& ExpandedTransform::GetScale() const
+ const float ExpandedTransform::GetScale() const
{
return m_scale;
}
- void ExpandedTransform::SetScale(const AZ::Vector3& scale)
+ void ExpandedTransform::SetScale(const float scale)
{
m_scale = scale;
}
@@ -131,7 +132,7 @@ namespace AZ
m_rotationWidget->setMaximum(360);
m_rotationWidget->setSuffix(" degrees");
- m_scaleWidget = new AzQtComponents::VectorInput(this, 3);
+ m_scaleWidget = new AzToolsFramework::PropertyDoubleSpinCtrl(this);
m_scaleWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
m_scaleWidget->setMinimum(0);
m_scaleWidget->setMaximum(10000);
@@ -191,13 +192,10 @@ namespace AZ
AzToolsFramework::PropertyEditorGUIMessages::Bus::Broadcast(&AzToolsFramework::PropertyEditorGUIMessages::RequestWrite, this);
});
- QObject::connect(m_scaleWidget, &AzQtComponents::VectorInput::valueChanged, this, [this]
+ QObject::connect(m_scaleWidget, &AzToolsFramework::PropertyDoubleSpinCtrl::valueChanged, this, [this]
{
- AzQtComponents::VectorInput* widget = this->GetScaleWidget();
- AZ::Vector3 scale;
-
- PopulateVector3(widget, scale);
-
+ AzToolsFramework::PropertyDoubleSpinCtrl* widget = this->GetScaleWidget();
+ float scale = aznumeric_cast(widget->value());
m_transform.SetScale(scale);
AzToolsFramework::PropertyEditorGUIMessages::Bus::Broadcast(&AzToolsFramework::PropertyEditorGUIMessages::RequestWrite, this);
});
@@ -224,9 +222,7 @@ namespace AZ
m_rotationWidget->setValuebyIndex(m_transform.GetRotation().GetY(), 1);
m_rotationWidget->setValuebyIndex(m_transform.GetRotation().GetZ(), 2);
- m_scaleWidget->setValuebyIndex(m_transform.GetScale().GetX(), 0);
- m_scaleWidget->setValuebyIndex(m_transform.GetScale().GetY(), 1);
- m_scaleWidget->setValuebyIndex(m_transform.GetScale().GetZ(), 2);
+ m_scaleWidget->setValue(m_transform.GetScale());
blockSignals(false);
}
@@ -251,7 +247,7 @@ namespace AZ
return m_rotationWidget;
}
- AzQtComponents::VectorInput* TransformRowWidget::GetScaleWidget()
+ AzToolsFramework::PropertyDoubleSpinCtrl* TransformRowWidget::GetScaleWidget()
{
return m_scaleWidget;
}
diff --git a/Code/Tools/SceneAPI/SceneUI/RowWidgets/TransformRowWidget.h b/Code/Tools/SceneAPI/SceneUI/RowWidgets/TransformRowWidget.h
index dc3286f80e..3977d26c7c 100644
--- a/Code/Tools/SceneAPI/SceneUI/RowWidgets/TransformRowWidget.h
+++ b/Code/Tools/SceneAPI/SceneUI/RowWidgets/TransformRowWidget.h
@@ -21,6 +21,7 @@
#include
#include
#include
+
#endif
namespace AzQtComponents
@@ -28,6 +29,11 @@ namespace AzQtComponents
class VectorInput;
}
+namespace AzToolsFramework
+{
+ class PropertyDoubleSpinCtrl;
+}
+
namespace AZ
{
namespace SceneAPI
@@ -51,14 +57,14 @@ namespace AZ
const AZ::Vector3& GetRotation() const;
void SetRotation(const AZ::Vector3& translation);
- const AZ::Vector3& GetScale() const;
- void SetScale(const AZ::Vector3& scale);
+ const float GetScale() const;
+ void SetScale(const float scale);
private:
AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
AZ::Vector3 m_translation;
AZ::Vector3 m_rotation;
- AZ::Vector3 m_scale;
+ float m_scale;
AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
};
@@ -78,7 +84,7 @@ namespace AZ
AzQtComponents::VectorInput* GetTranslationWidget();
AzQtComponents::VectorInput* GetRotationWidget();
- AzQtComponents::VectorInput* GetScaleWidget();
+ AzToolsFramework::PropertyDoubleSpinCtrl* GetScaleWidget();
protected:
ExpandedTransform m_transform;
@@ -87,7 +93,7 @@ namespace AZ
AzQtComponents::VectorInput* m_translationWidget;
AzQtComponents::VectorInput* m_rotationWidget;
- AzQtComponents::VectorInput* m_scaleWidget;
+ AzToolsFramework::PropertyDoubleSpinCtrl* 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 05082f29fb..cda6582e63 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);
- Vector3 m_scale = Vector3(2.0f, 3.0f, 4.0f);
+ float m_scale = 3.0f;
};
TEST_F(TransformRowWidgetTest, GetTranslation_TranslationInMatrix_TranslationCanBeRetrievedDirectly)
@@ -83,26 +83,22 @@ namespace AZ
TEST_F(TransformRowWidgetTest, GetScale_ScaleInMatrix_ScaleCanBeRetrievedDirectly)
{
- m_transform = Transform::CreateScale(m_scale);
+ m_transform = Transform::CreateUniformScale(m_scale);
m_expanded.SetTransform(m_transform);
- 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);
+ const float returned = m_expanded.GetScale();
+ EXPECT_NEAR(m_scale, returned, 0.1f);
}
TEST_F(TransformRowWidgetTest, GetScale_ScaleInMatrix_ScaleCanBeRetrievedFromTransform)
{
- m_transform = Transform::CreateScale(m_scale);
+ m_transform = Transform::CreateUniformScale(m_scale);
m_expanded.SetTransform(m_transform);
Transform rebuild;
m_expanded.GetTransform(rebuild);
- 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);
+ float returned = rebuild.GetUniformScale();
+ EXPECT_NEAR(m_scale, returned, 0.1f);
}
TEST_F(TransformRowWidgetTest, GetTransform_RotateAndTranslateInMatrix_ReconstructedTransformMatchesOriginal)
@@ -121,7 +117,7 @@ namespace AZ
{
Quaternion quaternion = AZ::ConvertEulerDegreesToQuaternion(m_rotation);
m_transform = Transform::CreateFromQuaternionAndTranslation(quaternion, m_translation);
- m_transform.MultiplyByScale(m_scale);
+ m_transform.MultiplyByUniformScale(m_scale);
m_expanded.SetTransform(m_transform);
Transform rebuild;
diff --git a/Gems/Atom/Tools/MaterialEditor/Code/Source/Viewport/MaterialViewportRenderer.cpp b/Gems/Atom/Tools/MaterialEditor/Code/Source/Viewport/MaterialViewportRenderer.cpp
index e1bfaa3872..b55dcf2088 100644
--- a/Gems/Atom/Tools/MaterialEditor/Code/Source/Viewport/MaterialViewportRenderer.cpp
+++ b/Gems/Atom/Tools/MaterialEditor/Code/Source/Viewport/MaterialViewportRenderer.cpp
@@ -16,6 +16,7 @@
#include
#include
+#include
#include
#include
@@ -178,9 +179,10 @@ namespace MaterialEditor
m_shadowCatcherEntity->CreateComponent(AZ::Render::MeshComponentTypeId);
m_shadowCatcherEntity->CreateComponent(AZ::Render::MaterialComponentTypeId);
m_shadowCatcherEntity->CreateComponent(azrtti_typeid());
+ m_shadowCatcherEntity->CreateComponent(azrtti_typeid());
m_shadowCatcherEntity->Activate();
- AZ::TransformBus::Event(m_shadowCatcherEntity->GetId(), &AZ::TransformBus::Events::SetLocalScale, AZ::Vector3{ 100, 100, 1.0 });
+ AZ::NonUniformScaleRequestBus::Event(m_shadowCatcherEntity->GetId(), &AZ::NonUniformScaleRequests::SetScale, AZ::Vector3{ 100, 100, 1.0 });
AZ::Data::AssetId shadowCatcherModelAssetId = RPI::AssetUtils::GetAssetIdForProductPath("materialeditor/viewportmodels/plane_1x1.azmodel", RPI::AssetUtils::TraceLevel::Error);
AZ::Render::MeshComponentRequestBus::Event(m_shadowCatcherEntity->GetId(),
diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/PolygonLightDelegate.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/PolygonLightDelegate.cpp
index c2bcc566e0..6ec780c2ab 100644
--- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/PolygonLightDelegate.cpp
+++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/PolygonLightDelegate.cpp
@@ -50,7 +50,6 @@ namespace AZ
AZStd::vector vertices = m_shapeBus->GetPolygonPrism()->m_vertexContainer.GetVertices();
Transform transform = GetTransform();
- transform.SetScale(Vector3(transform.GetScale().GetMaxElement())); // Poly Prism only supports uniform scale, so use max element.
AZStd::vector transformedVertices;
transformedVertices.reserve(vertices.size());
diff --git a/Gems/Blast/Code/Tests/BlastFamilyTest.cpp b/Gems/Blast/Code/Tests/BlastFamilyTest.cpp
index 2e6fd7f2bb..7af9f41e9c 100644
--- a/Gems/Blast/Code/Tests/BlastFamilyTest.cpp
+++ b/Gems/Blast/Code/Tests/BlastFamilyTest.cpp
@@ -137,7 +137,7 @@ namespace Blast
.Times(1)
.WillOnce(Return(false));
- AZ::Transform transform = AZ::Transform::CreateScale(AZ::Vector3::CreateOne());
+ AZ::Transform transform = AZ::Transform::CreateUniformScale(1.0f);
blastFamily->Spawn(transform);
}
diff --git a/Gems/Blast/Code/Tests/Mocks/BlastMocks.h b/Gems/Blast/Code/Tests/Mocks/BlastMocks.h
index 88c22cf67f..c9455c2fb3 100644
--- a/Gems/Blast/Code/Tests/Mocks/BlastMocks.h
+++ b/Gems/Blast/Code/Tests/Mocks/BlastMocks.h
@@ -669,6 +669,9 @@ namespace Blast
MOCK_METHOD1(SetLocalScale, void(const AZ::Vector3&));
MOCK_METHOD0(GetLocalScale, AZ::Vector3());
MOCK_METHOD0(GetWorldScale, AZ::Vector3());
+ MOCK_METHOD1(SetLocalUniformScale, void(float));
+ MOCK_METHOD0(GetLocalUniformScale, float());
+ MOCK_METHOD0(GetWorldUniformScale, float());
MOCK_METHOD0(GetParentId, AZ::EntityId());
MOCK_METHOD0(GetParent, TransformInterface*());
MOCK_METHOD1(SetParent, void(AZ::EntityId));
diff --git a/Gems/EMotionFX/Code/EMotionFX/Rendering/Common/RenderUtil.cpp b/Gems/EMotionFX/Code/EMotionFX/Rendering/Common/RenderUtil.cpp
index 0aef3f9d4f..3a23241385 100644
--- a/Gems/EMotionFX/Code/EMotionFX/Rendering/Common/RenderUtil.cpp
+++ b/Gems/EMotionFX/Code/EMotionFX/Rendering/Common/RenderUtil.cpp
@@ -1157,7 +1157,7 @@ namespace MCommon
void RenderUtil::RenderSphere(const AZ::Vector3& position, float radius, const MCore::RGBAColor& color)
{
// setup the world space matrix of the sphere
- AZ::Transform sphereTransform = AZ::Transform::CreateScale(AZ::Vector3(radius, radius, radius));
+ AZ::Transform sphereTransform = AZ::Transform::CreateUniformScale(radius);
sphereTransform.SetTranslation(position);
// render the sphere
diff --git a/Gems/GradientSignal/Code/Include/GradientSignal/Util.h b/Gems/GradientSignal/Code/Include/GradientSignal/Util.h
index 4e15bdc293..1a8bb00eba 100644
--- a/Gems/GradientSignal/Code/Include/GradientSignal/Util.h
+++ b/Gems/GradientSignal/Code/Include/GradientSignal/Util.h
@@ -14,6 +14,7 @@
#include
#include
#include
+#include
#include
#include
@@ -64,15 +65,15 @@ namespace GradientSignal
AZ::LerpInverse(bounds.GetMin().GetZ(), bounds.GetMax().GetZ(), point.GetZ()));
}
- inline void GetObbParamsFromShape(const AZ::EntityId& entity, AZ::Aabb& bounds, AZ::Transform& worldToBoundsTransform)
+ inline void GetObbParamsFromShape(const AZ::EntityId& entity, AZ::Aabb& bounds, AZ::Matrix3x4& worldToBoundsTransform)
{
//get bound and transform data for associated shape
bounds = AZ::Aabb::CreateNull();
- worldToBoundsTransform = AZ::Transform::CreateIdentity();
+ AZ::Transform transform = AZ::Transform::CreateIdentity();
if (entity.IsValid())
{
- LmbrCentral::ShapeComponentRequestsBus::Event(entity, &LmbrCentral::ShapeComponentRequestsBus::Events::GetTransformAndLocalBounds, worldToBoundsTransform, bounds);
- worldToBoundsTransform.Invert();
+ LmbrCentral::ShapeComponentRequestsBus::Event(entity, &LmbrCentral::ShapeComponentRequestsBus::Events::GetTransformAndLocalBounds, transform, bounds);
+ worldToBoundsTransform = AZ::Matrix3x4::CreateFromTransform(transform.GetInverse());
}
}
diff --git a/Gems/GradientSignal/Code/Source/Components/GradientTransformComponent.cpp b/Gems/GradientSignal/Code/Source/Components/GradientTransformComponent.cpp
index 0b967a6957..6cee088a1c 100644
--- a/Gems/GradientSignal/Code/Source/Components/GradientTransformComponent.cpp
+++ b/Gems/GradientSignal/Code/Source/Components/GradientTransformComponent.cpp
@@ -333,7 +333,7 @@ namespace GradientSignal
AZStd::lock_guard lock(m_cacheMutex);
//transforming coordinate into "local" relative space of shape bounds
- outUVW = m_shapeTransformInverse.TransformPoint(inPosition);
+ outUVW = m_shapeTransformInverse * inPosition;
if (!m_configuration.m_advancedMode || !m_configuration.m_is3d)
{
@@ -387,7 +387,7 @@ namespace GradientSignal
void GradientTransformComponent::GetGradientEncompassingBounds(AZ::Aabb& bounds) const
{
bounds = m_shapeBounds;
- bounds.ApplyTransform(m_shapeTransformInverse.GetInverse());
+ bounds.ApplyMatrix3x4(m_shapeTransformInverse.GetInverseFull());
}
void GradientTransformComponent::OnCompositionChanged()
@@ -500,10 +500,11 @@ namespace GradientSignal
m_shapeBounds = AZ::Aabb::CreateFromMinMax(-m_configuration.m_bounds * 0.5f, m_configuration.m_bounds * 0.5f);
//rebuild transform from parameters
- AZ::Quaternion rotation;
- rotation.SetFromEulerDegrees(m_configuration.m_rotate);
- const AZ::Transform shapeTransformFinal(m_configuration.m_translate, rotation, m_configuration.m_scale);
- m_shapeTransformInverse = shapeTransformFinal.GetInverse();
+ AZ::Matrix3x4 shapeTransformFinal;
+ shapeTransformFinal.SetFromEulerDegrees(m_configuration.m_rotate);
+ shapeTransformFinal.SetTranslation(m_configuration.m_translate);
+ shapeTransformFinal.MultiplyByScale(m_configuration.m_scale);
+ m_shapeTransformInverse = shapeTransformFinal.GetInverseFull();
}
AZ::EntityId GradientTransformComponent::GetShapeEntityId() const
diff --git a/Gems/GradientSignal/Code/Source/Components/GradientTransformComponent.h b/Gems/GradientSignal/Code/Source/Components/GradientTransformComponent.h
index 15aaf40494..5955da95c7 100644
--- a/Gems/GradientSignal/Code/Source/Components/GradientTransformComponent.h
+++ b/Gems/GradientSignal/Code/Source/Components/GradientTransformComponent.h
@@ -15,6 +15,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -172,8 +173,8 @@ namespace GradientSignal
mutable AZStd::recursive_mutex m_cacheMutex;
GradientTransformConfig m_configuration;
AZ::Aabb m_shapeBounds = AZ::Aabb::CreateNull();
- AZ::Transform m_shapeTransformInverse = AZ::Transform::CreateIdentity();
+ AZ::Matrix3x4 m_shapeTransformInverse = AZ::Matrix3x4::CreateIdentity();
LmbrCentral::DependencyMonitor m_dependencyMonitor;
AZStd::atomic_bool m_dirty{ false };
};
-} //namespace GradientSignal
\ No newline at end of file
+} //namespace GradientSignal
diff --git a/Gems/LmbrCentral/Code/Source/Animation/AttachmentComponent.cpp b/Gems/LmbrCentral/Code/Source/Animation/AttachmentComponent.cpp
index 537585f48c..efef5761bc 100644
--- a/Gems/LmbrCentral/Code/Source/Animation/AttachmentComponent.cpp
+++ b/Gems/LmbrCentral/Code/Source/Animation/AttachmentComponent.cpp
@@ -242,14 +242,14 @@ namespace LmbrCentral
{
// apply offset in world-space
finalTransform = m_targetEntityTransform * m_targetBoneTransform;
- finalTransform.SetScale(AZ::Vector3::CreateOne());
+ finalTransform.SetUniformScale(1.0f);
finalTransform *= m_targetOffset;
}
else if (m_scaleSource == AttachmentConfiguration::ScaleSource::TargetEntityScale)
{
// apply offset in target-entity-space (ignoring bone scale)
AZ::Transform boneNoScale = m_targetBoneTransform;
- boneNoScale.SetScale(AZ::Vector3::CreateOne());
+ boneNoScale.SetUniformScale(1.0f);
finalTransform = m_targetEntityTransform * boneNoScale * m_targetOffset;
}
diff --git a/Gems/LmbrCentral/Code/Source/Animation/EditorAttachmentComponent.cpp b/Gems/LmbrCentral/Code/Source/Animation/EditorAttachmentComponent.cpp
index 337da51159..6190f976a0 100644
--- a/Gems/LmbrCentral/Code/Source/Animation/EditorAttachmentComponent.cpp
+++ b/Gems/LmbrCentral/Code/Source/Animation/EditorAttachmentComponent.cpp
@@ -124,7 +124,7 @@ namespace LmbrCentral
{
AZ::Transform offset = AZ::ConvertEulerDegreesToTransform(m_rotationOffset);
offset.SetTranslation(m_positionOffset);
- offset.MultiplyByScale(m_scaleOffset);
+ offset.MultiplyByUniformScale(m_scaleOffset.GetMaxElement());
return offset;
}
diff --git a/Gems/LmbrCentral/Code/Source/Scripting/EditorLookAtComponent.cpp b/Gems/LmbrCentral/Code/Source/Scripting/EditorLookAtComponent.cpp
index ab22514cf8..7a2cc52627 100644
--- a/Gems/LmbrCentral/Code/Source/Scripting/EditorLookAtComponent.cpp
+++ b/Gems/LmbrCentral/Code/Source/Scripting/EditorLookAtComponent.cpp
@@ -169,22 +169,24 @@ namespace LmbrCentral
{
AZ::TransformNotificationBus::MultiHandler::BusDisconnect(GetEntityId());
{
- AZ::Transform currentTM = AZ::Transform::CreateIdentity();
- EBUS_EVENT_ID_RESULT(currentTM, GetEntityId(), AZ::TransformBus, GetWorldTM);
- AZ::Vector3 currentScale = currentTM.ExtractScale();
+ AZ::Transform sourceTM = AZ::Transform::CreateIdentity();
+ AZ::TransformBus::EventResult(sourceTM, GetEntityId(), &AZ::TransformBus::Events::GetWorldTM);
AZ::Transform targetTM = AZ::Transform::CreateIdentity();
- EBUS_EVENT_ID_RESULT(targetTM, m_targetId, AZ::TransformBus, GetWorldTM);
+ AZ::TransformBus::EventResult(targetTM, m_targetId, &AZ::TransformBus::Events::GetWorldTM);
AZ::Transform lookAtTransform = AZ::Transform::CreateLookAt(
- currentTM.GetTranslation(),
+ sourceTM.GetTranslation(),
targetTM.GetTranslation(),
m_forwardAxis
);
- lookAtTransform.MultiplyByScale(currentScale);
+ // update the rotation and translation for sourceTM based on lookAtTransform, but leave scale unchanged
+ sourceTM.SetRotation(lookAtTransform.GetRotation());
+ sourceTM.SetTranslation(lookAtTransform.GetTranslation());
EBUS_EVENT_ID(GetEntityId(), AZ::TransformBus, SetWorldTM, lookAtTransform);
+ AZ::TransformBus::Event(GetEntityId(), &AZ::TransformBus::Events::SetWorldTM, sourceTM);
}
AZ::TransformNotificationBus::MultiHandler::BusConnect(GetEntityId());
}
diff --git a/Gems/LmbrCentral/Code/Source/Shape/BoxShape.cpp b/Gems/LmbrCentral/Code/Source/Shape/BoxShape.cpp
index 2830f514fe..a2ee4d986f 100644
--- a/Gems/LmbrCentral/Code/Source/Shape/BoxShape.cpp
+++ b/Gems/LmbrCentral/Code/Source/Shape/BoxShape.cpp
@@ -251,7 +251,7 @@ namespace LmbrCentral
const AZ::Transform& currentTransform, const BoxShapeConfig& configuration, const AZ::Vector3& currentNonUniformScale)
{
AZ::Transform worldFromLocalNormalized = currentTransform;
- const float entityScale = worldFromLocalNormalized.ExtractScale().GetMaxElement();
+ const float entityScale = worldFromLocalNormalized.ExtractUniformScale();
m_currentPosition = worldFromLocalNormalized.GetTranslation();
m_scaledDimensions = configuration.m_dimensions * currentNonUniformScale * entityScale;
diff --git a/Gems/LmbrCentral/Code/Source/Shape/PolygonPrismShape.cpp b/Gems/LmbrCentral/Code/Source/Shape/PolygonPrismShape.cpp
index 89c5028e93..db5aaf097c 100644
--- a/Gems/LmbrCentral/Code/Source/Shape/PolygonPrismShape.cpp
+++ b/Gems/LmbrCentral/Code/Source/Shape/PolygonPrismShape.cpp
@@ -437,22 +437,18 @@ namespace LmbrCentral
const float height = polygonPrism.GetHeight();
const AZ::Vector3& nonUniformScale = polygonPrism.GetNonUniformScale();
- AZ::Transform worldFromLocalUniformScale = worldFromLocal;
- const float entityScale = worldFromLocalUniformScale.ExtractScale().GetMaxElement();
- worldFromLocalUniformScale *= AZ::Transform::CreateScale(AZ::Vector3(entityScale));
-
AZ::Aabb aabb = AZ::Aabb::CreateNull();
// check base of prism
for (const AZ::Vector2& vertex : vertexContainer.GetVertices())
{
- aabb.AddPoint(worldFromLocalUniformScale.TransformPoint(nonUniformScale * AZ::Vector3(vertex.GetX(), vertex.GetY(), 0.0f)));
+ aabb.AddPoint(worldFromLocal.TransformPoint(nonUniformScale * AZ::Vector3(vertex.GetX(), vertex.GetY(), 0.0f)));
}
// check top of prism
// set aabb to be height of prism - ensure entire polygon prism shape is enclosed in aabb
for (const AZ::Vector2& vertex : vertexContainer.GetVertices())
{
- aabb.AddPoint(worldFromLocalUniformScale.TransformPoint(nonUniformScale * AZ::Vector3(vertex.GetX(), vertex.GetY(), height)));
+ aabb.AddPoint(worldFromLocal.TransformPoint(nonUniformScale * AZ::Vector3(vertex.GetX(), vertex.GetY(), height)));
}
return aabb;
@@ -468,14 +464,10 @@ namespace LmbrCentral
const AZStd::vector& vertices = polygonPrism.m_vertexContainer.GetVertices();
const size_t vertexCount = vertices.size();
- AZ::Transform worldFromLocalWithUniformScale = worldFromLocal;
- const float transformScale = worldFromLocalWithUniformScale.ExtractScale().GetMaxElement();
- worldFromLocalWithUniformScale *= AZ::Transform::CreateScale(AZ::Vector3(transformScale));
-
// transform point to local space
// it's fine to invert the transform including scale here, because it won't affect whether the point is inside the prism
const AZ::Vector3 localPoint =
- worldFromLocalWithUniformScale.GetInverse().TransformPoint(point) / polygonPrism.GetNonUniformScale();
+ worldFromLocal.GetInverse().TransformPoint(point) / polygonPrism.GetNonUniformScale();
// ensure the point is not above or below the prism (in its local space)
if (localPoint.GetZ() < 0.0f || localPoint.GetZ() > polygonPrism.GetHeight())
@@ -534,7 +526,7 @@ namespace LmbrCentral
// but inverting any scale in the transform would mess up the distance, so extract that first and apply scale separately to the
// prism
AZ::Transform worldFromLocalNoScale = worldFromLocal;
- const float transformScale = worldFromLocalNoScale.ExtractScale().GetMaxElement();
+ const float transformScale = worldFromLocalNoScale.ExtractUniformScale();
const AZ::Vector3 combinedScale = transformScale * nonUniformScale;
const float scaledHeight = height * combinedScale.GetZ();
@@ -610,9 +602,9 @@ namespace LmbrCentral
}
// transform ray into local space
- AZ::Transform worldFromLocalNomalized = worldFromLocal;
- const float entityScale = worldFromLocalNomalized.ExtractScale().GetMaxElement();
- const AZ::Transform localFromWorldNormalized = worldFromLocalNomalized.GetInverse();
+ AZ::Transform worldFromLocalNormalized = worldFromLocal;
+ const float entityScale = worldFromLocalNormalized.ExtractUniformScale();
+ const AZ::Transform localFromWorldNormalized = worldFromLocalNormalized.GetInverse();
const float rayLength = 1000.0f;
const AZ::Vector3 localSrc = localFromWorldNormalized.TransformPoint(src);
const AZ::Vector3 localDir = localFromWorldNormalized.TransformVector(dir);
diff --git a/Gems/LmbrCentral/Code/Source/Shape/ShapeDisplay.h b/Gems/LmbrCentral/Code/Source/Shape/ShapeDisplay.h
index 09088f06cd..3591ecde36 100644
--- a/Gems/LmbrCentral/Code/Source/Shape/ShapeDisplay.h
+++ b/Gems/LmbrCentral/Code/Source/Shape/ShapeDisplay.h
@@ -42,15 +42,10 @@ namespace LmbrCentral
return;
}
- // only uniform scale is supported in physics so the debug visuals reflect this fact
- AZ::Transform worldFromLocalWithUniformScale = worldFromLocal;
- const AZ::Vector3 scale = worldFromLocalWithUniformScale.ExtractScale();
- worldFromLocalWithUniformScale.MultiplyByScale(AZ::Vector3(scale.GetMaxElement()));
-
- debugDisplay.PushMatrix(worldFromLocalWithUniformScale);
+ debugDisplay.PushMatrix(worldFromLocal);
drawShape(debugDisplay);
debugDisplay.PopMatrix();
}
-} // namespace LmbrCentral
\ No newline at end of file
+} // namespace LmbrCentral
diff --git a/Gems/LmbrCentral/Code/Source/Shape/TubeShape.cpp b/Gems/LmbrCentral/Code/Source/Shape/TubeShape.cpp
index 6ca2e55de8..2691ab1557 100644
--- a/Gems/LmbrCentral/Code/Source/Shape/TubeShape.cpp
+++ b/Gems/LmbrCentral/Code/Source/Shape/TubeShape.cpp
@@ -216,11 +216,7 @@ namespace LmbrCentral
return AZ::Aabb::CreateNull();
}
- AZ::Transform worldFromLocalUniformScale = m_currentTransform;
- const float maxScale = worldFromLocalUniformScale.ExtractScale().GetMaxElement();
- worldFromLocalUniformScale *= AZ::Transform::CreateScale(AZ::Vector3(maxScale));
-
- return CalculateTubeBounds(*this, worldFromLocalUniformScale);
+ return CalculateTubeBounds(*this, m_currentTransform);
}
void TubeShape::GetTransformAndLocalBounds(AZ::Transform& transform, AZ::Aabb& bounds)
@@ -236,46 +232,38 @@ namespace LmbrCentral
return false;
}
- AZ::Transform worldFromLocalNormalized = m_currentTransform;
- const AZ::Vector3 scale = AZ::Vector3(worldFromLocalNormalized.ExtractScale().GetMaxElement());
- const AZ::Transform localFromWorldNormalized = worldFromLocalNormalized.GetInverse();
- const AZ::Vector3 localPoint = localFromWorldNormalized.TransformPoint(point) * scale.GetReciprocal();
+ const float scale = m_currentTransform.GetUniformScale();
+ const AZ::Vector3 localPoint = m_currentTransform.GetInverse().TransformPoint(point);
const auto address = m_spline->GetNearestAddressPosition(localPoint).m_splineAddress;
const float radiusSq = powf(m_radius, 2.0f);
const float variableRadiusSq =
powf(m_variableRadius.GetElementInterpolated(address, Lerpf), 2.0f);
- return (m_spline->GetPosition(address) - localPoint).GetLengthSq() < (radiusSq + variableRadiusSq) *
- scale.GetMaxElement();
+ return (m_spline->GetPosition(address) - localPoint).GetLengthSq() < (radiusSq + variableRadiusSq) * scale;
}
float TubeShape::DistanceSquaredFromPoint(const AZ::Vector3& point)
{
- AZ::Transform worldFromLocalNormalized = m_currentTransform;
- const AZ::Vector3 maxScale = AZ::Vector3(worldFromLocalNormalized.ExtractScale().GetMaxElement());
- const AZ::Transform localFromWorldNormalized = worldFromLocalNormalized.GetInverse();
- const AZ::Vector3 localPoint = localFromWorldNormalized.TransformPoint(point) * maxScale.GetReciprocal();
+ const float scale = m_currentTransform.GetUniformScale();
+ const AZ::Transform localFromWorld = m_currentTransform.GetInverse();
+ const AZ::Vector3 localPoint = localFromWorld.TransformPoint(point);
const auto splineQueryResult = m_spline->GetNearestAddressPosition(localPoint);
const float variableRadius =
m_variableRadius.GetElementInterpolated(splineQueryResult.m_splineAddress, Lerpf);
- return powf((sqrtf(splineQueryResult.m_distanceSq) - (m_radius + variableRadius)) * maxScale.GetMaxElement(), 2.0f);
+ return powf((sqrtf(splineQueryResult.m_distanceSq) - (m_radius + variableRadius)) * scale, 2.0f);
}
bool TubeShape::IntersectRay(const AZ::Vector3& src, const AZ::Vector3& dir, float& distance)
{
- AZ::Transform transformUniformScale = m_currentTransform;
- const float maxScale = transformUniformScale.ExtractScale().GetMaxElement();
- transformUniformScale *= AZ::Transform::CreateScale(AZ::Vector3(maxScale));
-
- const auto splineQueryResult = IntersectSpline(transformUniformScale, src, dir, *m_spline);
+ const auto splineQueryResult = IntersectSpline(m_currentTransform, src, dir, *m_spline);
const float variableRadius = m_variableRadius.GetElementInterpolated(
splineQueryResult.m_splineAddress, Lerpf);
const float totalRadius = m_radius + variableRadius;
- distance = (splineQueryResult.m_rayDistance - totalRadius) * m_currentTransform.GetScale().GetMaxElement();
+ distance = (splineQueryResult.m_rayDistance - totalRadius) * m_currentTransform.GetUniformScale();
return static_cast(sqrtf(splineQueryResult.m_distanceSq)) < totalRadius;
}
diff --git a/Gems/LmbrCentral/Code/Tests/BoxShapeTest.cpp b/Gems/LmbrCentral/Code/Tests/BoxShapeTest.cpp
index fd1e4ae4f1..24ee8ace2f 100644
--- a/Gems/LmbrCentral/Code/Tests/BoxShapeTest.cpp
+++ b/Gems/LmbrCentral/Code/Tests/BoxShapeTest.cpp
@@ -262,7 +262,7 @@ namespace UnitTest
AZ::Transform::CreateFromQuaternionAndTranslation(
AZ::Quaternion::CreateFromAxisAngle(AZ::Vector3::CreateAxisY(), AZ::Constants::QuarterPi),
AZ::Vector3(0.0f, 0.0f, 5.0f)) *
- AZ::Transform::CreateScale(AZ::Vector3(3.0f)),
+ AZ::Transform::CreateUniformScale(3.0f),
AZ::Vector3(2.0f, 4.0f, 1.0f), entity);
bool rayHit = false;
@@ -295,7 +295,7 @@ namespace UnitTest
{
AZ::Entity entity;
AZ::Transform transform = AZ::Transform::CreateTranslation(AZ::Vector3(2.0f, -5.0f, 3.0f));
- transform.MultiplyByScale(AZ::Vector3(0.5f));
+ transform.MultiplyByUniformScale(0.5f);
const AZ::Vector3 dimensions(2.2f, 1.8f, 0.4f);
const AZ::Vector3 nonUniformScale(0.2f, 2.6f, 1.2f);
CreateBoxWithNonUniformScale(transform, dimensions, nonUniformScale, entity);
@@ -340,7 +340,7 @@ namespace UnitTest
AZ::Entity entity;
AZ::Transform transform = AZ::Transform::CreateFromQuaternionAndTranslation(
AZ::Quaternion(0.50f, 0.10f, 0.02f, 0.86f), AZ::Vector3(4.0f, 1.0f, -2.0f));
- transform.MultiplyByScale(AZ::Vector3(1.5f));
+ transform.MultiplyByUniformScale(1.5f);
const AZ::Vector3 dimensions(1.2f, 0.7f, 2.1f);
const AZ::Vector3 nonUniformScale(0.8f, 0.6f, 0.7f);
CreateBoxWithNonUniformScale(transform, dimensions, nonUniformScale, entity);
@@ -433,7 +433,7 @@ namespace UnitTest
AZ::Transform::CreateFromQuaternionAndTranslation(
AZ::Quaternion::CreateFromAxisAngle(AZ::Vector3::CreateAxisY(), AZ::Constants::QuarterPi),
AZ::Vector3::CreateZero()) *
- AZ::Transform::CreateScale(AZ::Vector3(3.0f)),
+ AZ::Transform::CreateUniformScale(3.0f),
AZ::Vector3(2.0f, 4.0f, 1.0f), entity);
AZ::Aabb aabb;
@@ -483,7 +483,7 @@ namespace UnitTest
AZ::Transform transformIn = AZ::Transform::CreateFromQuaternionAndTranslation(
AZ::Quaternion::CreateFromAxisAngle(AZ::Vector3::CreateAxisX(), AZ::Constants::QuarterPi) * AZ::Quaternion::CreateFromAxisAngle(AZ::Vector3::CreateAxisY(), AZ::Constants::QuarterPi),
AZ::Vector3(9.0f, 11.0f, 13.0f));
- transformIn.MultiplyByScale(AZ::Vector3(3.0f));
+ transformIn.MultiplyByUniformScale(3.0f);
CreateBox(transformIn, AZ::Vector3(1.5f, 3.5f, 5.5f), entity);
AZ::Transform transformOut;
@@ -500,7 +500,7 @@ namespace UnitTest
AZ::Entity entity;
AZ::Transform transformIn = AZ::Transform::CreateFromQuaternionAndTranslation(
AZ::Quaternion(0.62f, 0.62f, 0.14f, 0.46f), AZ::Vector3(0.8f, -1.2f, 2.7f));
- transformIn.MultiplyByScale(AZ::Vector3(2.0f));
+ transformIn.MultiplyByUniformScale(2.0f);
const AZ::Vector3 nonUniformScale(1.5f, 2.0f, 0.4f);
const AZ::Vector3 boxDimensions(2.0f, 1.7f, 0.5f);
CreateBoxWithNonUniformScale(transformIn, nonUniformScale, boxDimensions, entity);
@@ -531,7 +531,7 @@ namespace UnitTest
AZ::Transform::CreateFromQuaternionAndTranslation(
AZ::Quaternion::CreateFromAxisAngle(AZ::Vector3::CreateAxisZ(), AZ::Constants::QuarterPi),
AZ::Vector3(23.0f, 12.0f, 40.0f)) *
- AZ::Transform::CreateScale(AZ::Vector3(3.0f)),
+ AZ::Transform::CreateUniformScale(3.0f),
AZ::Vector3(2.0f, 6.0f, 3.5f), entity);
// test some pairs of nearby points which should be just either side of the surface of the box
@@ -551,7 +551,7 @@ namespace UnitTest
AZ::Transform::CreateTranslation(AZ::Vector3(23.0f, 12.0f, 40.0f)) *
AZ::Transform::CreateRotationX(-AZ::Constants::QuarterPi) *
AZ::Transform::CreateRotationZ(AZ::Constants::QuarterPi) *
- AZ::Transform::CreateScale(AZ::Vector3(2.0f)),
+ AZ::Transform::CreateUniformScale(2.0f),
AZ::Vector3(4.0f, 7.0f, 3.5f), entity);
// test some pairs of nearby points which should be just either side of the surface of the box
@@ -588,8 +588,8 @@ namespace UnitTest
CreateBox(
AZ::Transform::CreateTranslation(AZ::Vector3(10.0f, 37.0f, 32.0f)) *
AZ::Transform::CreateRotationZ(AZ::Constants::QuarterPi) *
- AZ::Transform::CreateScale(AZ::Vector3(3.0f, 1.0f, 1.0f)),
- AZ::Vector3(4.0f, 2.0f, 10.0f), entity);
+ AZ::Transform::CreateUniformScale(2.0f),
+ AZ::Vector3(6.0f, 1.0f, 5.0f), entity);
float distance;
LmbrCentral::ShapeComponentRequestsBus::EventResult(
@@ -606,8 +606,8 @@ namespace UnitTest
AZ::Transform::CreateTranslation(AZ::Vector3(10.0f, 37.0f, 32.0f)) *
AZ::Transform::CreateRotationX(AZ::Constants::HalfPi) *
AZ::Transform::CreateRotationY(AZ::Constants::HalfPi) *
- AZ::Transform::CreateScale(AZ::Vector3(3.0f, 1.0f, 1.0f)),
- AZ::Vector3(4.0f, 2.0f, 10.0f), entity);
+ AZ::Transform::CreateUniformScale(0.5f),
+ AZ::Vector3(24.0f, 4.0f, 20.0f), entity);
float distance;
LmbrCentral::ShapeComponentRequestsBus::EventResult(
@@ -621,7 +621,7 @@ namespace UnitTest
AZ::Entity entity;
AZ::Transform transform = AZ::Transform::CreateFromQuaternionAndTranslation(
AZ::Quaternion::CreateRotationY(AZ::DegToRad(30.0f)), AZ::Vector3(3.0f, 4.0f, 5.0f));
- transform.MultiplyByScale(AZ::Vector3(2.0f));
+ transform.MultiplyByUniformScale(2.0f);
const AZ::Vector3 dimensions(2.0f, 3.0f, 1.5f);
const AZ::Vector3 nonUniformScale(1.4f, 2.2f, 0.8f);
CreateBoxWithNonUniformScale(transform, nonUniformScale, dimensions, entity);
@@ -638,7 +638,7 @@ namespace UnitTest
AZ::Entity entity;
AZ::Transform transform = AZ::Transform::CreateFromQuaternionAndTranslation(
AZ::Quaternion(0.70f, 0.10f, 0.34f, 0.62f), AZ::Vector3(3.0f, -1.0f, 2.0f));
- transform.MultiplyByScale(AZ::Vector3(2.0f));
+ transform.MultiplyByUniformScale(2.0f);
const AZ::Vector3 dimensions(1.2f, 0.8f, 1.7f);
const AZ::Vector3 nonUniformScale(2.4f, 1.3f, 1.8f);
CreateBoxWithNonUniformScale(transform, nonUniformScale, dimensions, entity);
diff --git a/Gems/LmbrCentral/Code/Tests/CapsuleShapeTest.cpp b/Gems/LmbrCentral/Code/Tests/CapsuleShapeTest.cpp
index 9b57cd46c7..3274585e63 100644
--- a/Gems/LmbrCentral/Code/Tests/CapsuleShapeTest.cpp
+++ b/Gems/LmbrCentral/Code/Tests/CapsuleShapeTest.cpp
@@ -144,7 +144,7 @@ namespace UnitTest
CreateCapsule(
AZ::Transform::CreateTranslation(AZ::Vector3(-4.0f, -12.0f, -3.0f)) *
AZ::Transform::CreateRotationX(AZ::Constants::HalfPi) *
- AZ::Transform::CreateScale(AZ::Vector3(6.0f)),
+ AZ::Transform::CreateUniformScale(6.0f),
0.25f, 1.5f, entity);
bool rayHit = false;
@@ -208,7 +208,7 @@ namespace UnitTest
TEST_F(CapsuleShapeTest, GetAabb3)
{
AZ::Entity entity;
- CreateCapsule(AZ::Transform::CreateScale(AZ::Vector3(3.5f)), 2.0f, 4.0f, entity);
+ CreateCapsule(AZ::Transform::CreateUniformScale(3.5f), 2.0f, 4.0f, entity);
AZ::Aabb aabb;
LmbrCentral::ShapeComponentRequestsBus::EventResult(
@@ -224,7 +224,7 @@ namespace UnitTest
AZ::Entity entity;
CreateCapsule(
AZ::Transform::CreateTranslation(AZ::Vector3(5.0f, 20.0f, 0.0f)) *
- AZ::Transform::CreateScale(AZ::Vector3(2.5f)), 1.0f, 5.0f, entity);
+ AZ::Transform::CreateUniformScale(2.5f), 1.0f, 5.0f, entity);
AZ::Aabb aabb;
LmbrCentral::ShapeComponentRequestsBus::EventResult(
@@ -255,7 +255,7 @@ namespace UnitTest
AZ::Transform transformIn = AZ::Transform::CreateFromQuaternionAndTranslation(
AZ::Quaternion::CreateFromAxisAngle(AZ::Vector3::CreateAxisX(), AZ::Constants::HalfPi) *
AZ::Quaternion::CreateFromAxisAngle(AZ::Vector3::CreateAxisY(), AZ::Constants::QuarterPi), AZ::Vector3(-10.0f, -10.0f, 0.0f));
- transformIn.MultiplyByScale(AZ::Vector3(3.0f));
+ transformIn.MultiplyByUniformScale(3.0f);
CreateCapsule(transformIn, 5.0f, 2.0f, entity);
AZ::Transform transformOut;
@@ -273,7 +273,7 @@ namespace UnitTest
AZ::Transform transformIn = AZ::Transform::CreateFromQuaternionAndTranslation(
AZ::Quaternion::CreateFromAxisAngle(AZ::Vector3::CreateAxisX(), AZ::Constants::HalfPi) *
AZ::Quaternion::CreateFromAxisAngle(AZ::Vector3::CreateAxisY(), AZ::Constants::QuarterPi), AZ::Vector3(-10.0f, -10.0f, 0.0f));
- transformIn.MultiplyByScale(AZ::Vector3(3.0f));
+ transformIn.MultiplyByUniformScale(3.0f);
CreateCapsule(transformIn, 2.0f, 5.0f, entity);
AZ::Transform transformOut;
@@ -291,7 +291,7 @@ namespace UnitTest
AZ::Entity entity;
CreateCapsule(
AZ::Transform::CreateTranslation(AZ::Vector3(27.0f, 28.0f, 38.0f)) *
- AZ::Transform::CreateScale(AZ::Vector3(2.5f, 1.0f, 1.0f)), // test max scale
+ AZ::Transform::CreateUniformScale(2.5f),
0.5f, 2.0f, entity);
bool inside;
@@ -309,7 +309,7 @@ namespace UnitTest
AZ::Transform::CreateTranslation(AZ::Vector3(27.0f, 28.0f, 38.0f)) *
AZ::Transform::CreateRotationX(AZ::Constants::HalfPi) *
AZ::Transform::CreateRotationY(AZ::Constants::QuarterPi) *
- AZ::Transform::CreateScale(AZ::Vector3(0.5f)),
+ AZ::Transform::CreateUniformScale(0.5f),
0.5f, 2.0f, entity);
bool inside;
@@ -327,7 +327,7 @@ namespace UnitTest
AZ::Transform::CreateTranslation(AZ::Vector3(27.0f, 28.0f, 38.0f)) *
AZ::Transform::CreateRotationX(AZ::Constants::HalfPi) *
AZ::Transform::CreateRotationY(AZ::Constants::QuarterPi) *
- AZ::Transform::CreateScale(AZ::Vector3(2.0f)),
+ AZ::Transform::CreateUniformScale(2.0f),
0.5f, 4.0f, entity);
float distance;
@@ -345,7 +345,7 @@ namespace UnitTest
AZ::Transform::CreateTranslation(AZ::Vector3(27.0f, 28.0f, 38.0f)) *
AZ::Transform::CreateRotationX(AZ::Constants::HalfPi) *
AZ::Transform::CreateRotationY(AZ::Constants::QuarterPi) *
- AZ::Transform::CreateScale(AZ::Vector3(2.0f)),
+ AZ::Transform::CreateUniformScale(2.0f),
0.5f, 4.0f, entity);
float distance;
diff --git a/Gems/LmbrCentral/Code/Tests/CylinderShapeTest.cpp b/Gems/LmbrCentral/Code/Tests/CylinderShapeTest.cpp
index 893ed3fcac..115abcf5ff 100644
--- a/Gems/LmbrCentral/Code/Tests/CylinderShapeTest.cpp
+++ b/Gems/LmbrCentral/Code/Tests/CylinderShapeTest.cpp
@@ -138,7 +138,7 @@ namespace UnitTest
{ AZ::Transform::CreateTranslation(AZ::Vector3(-14.0f, -14.0f, -1.0f)) *
AZ::Transform::CreateRotationY(AZ::Constants::HalfPi) *
AZ::Transform::CreateRotationZ(AZ::Constants::HalfPi) *
- AZ::Transform::CreateScale(AZ::Vector3(4.0f)),
+ AZ::Transform::CreateUniformScale(4.0f),
1.0f, 1.25f },
// Result: hit, distance, epsilon
{ true, 2.5f, 1e-2f }
@@ -203,7 +203,7 @@ namespace UnitTest
// Test case 2
{ // Cylinder: transform, radius, height
{ AZ::Transform::CreateTranslation(AZ::Vector3(-10.0f, -10.0f, 10.0f)) *
- AZ::Transform::CreateScale(AZ::Vector3(3.5f)),
+ AZ::Transform::CreateUniformScale(3.5f),
1.0f, 5.0f },
// AABB: min, max
{ AZ::Vector3(-13.5f, -13.5f, 1.25f), AZ::Vector3(-6.5f, -6.5f, 18.75f) } },
@@ -236,7 +236,7 @@ namespace UnitTest
{ AZ::Vector3(-5.0f, -5.0f, -0.5f), AZ::Vector3(5.0f, 5.0f, 0.5f) } },
// Test case 1
{ // Cylinder: transform, radius, height
- { AZ::Transform::CreateTranslation(AZ::Vector3(-10.0f, -10.0f, 10.0f)) * AZ::Transform::CreateScale(AZ::Vector3(3.5f)),
+ { AZ::Transform::CreateTranslation(AZ::Vector3(-10.0f, -10.0f, 10.0f)) * AZ::Transform::CreateUniformScale(3.5f),
5.0f, 5.0f },
// Local bounds: min, max
{ AZ::Vector3(-5.0f, -5.0f, -2.5f), AZ::Vector3(5.0f, 5.0f, 2.5f) } },
@@ -264,7 +264,7 @@ namespace UnitTest
// Test case 0
{ // Cylinder: transform, radius, height
{AZ::Transform::CreateTranslation(AZ::Vector3(27.0f, 28.0f, 38.0f)) *
- AZ::Transform::CreateScale(AZ::Vector3(2.5f, 1.0f, 1.0f)), // test max scale
+ AZ::Transform::CreateUniformScale(2.5f),
0.5f, 2.0f},
// Point
AZ::Vector3(27.0f, 28.5f, 40.0f),
@@ -275,7 +275,7 @@ namespace UnitTest
{AZ::Transform::CreateTranslation(AZ::Vector3(27.0f, 28.0f, 38.0f)) *
AZ::Transform::CreateRotationX(AZ::Constants::HalfPi) *
AZ::Transform::CreateRotationY(AZ::Constants::QuarterPi) *
- AZ::Transform::CreateScale(AZ::Vector3(0.5f)),
+ AZ::Transform::CreateUniformScale(0.5f),
0.5f, 2.0f},
// Point
AZ::Vector3(27.0f, 28.155f, 37.82f),
@@ -316,7 +316,7 @@ namespace UnitTest
{ AZ::Transform::CreateTranslation(AZ::Vector3(27.0f, 28.0f, 38.0f)) *
AZ::Transform::CreateRotationX(AZ::Constants::HalfPi) *
AZ::Transform::CreateRotationY(AZ::Constants::QuarterPi) *
- AZ::Transform::CreateScale(AZ::Vector3(2.0f)),
+ AZ::Transform::CreateUniformScale(2.0f),
0.5f, 4.0f },
// Point
AZ::Vector3(27.0f, 28.0f, 41.0f),
@@ -327,7 +327,7 @@ namespace UnitTest
{ AZ::Transform::CreateTranslation(AZ::Vector3(27.0f, 28.0f, 38.0f)) *
AZ::Transform::CreateRotationX(AZ::Constants::HalfPi) *
AZ::Transform::CreateRotationY(AZ::Constants::QuarterPi) *
- AZ::Transform::CreateScale(AZ::Vector3(2.0f)),
+ AZ::Transform::CreateUniformScale(2.0f),
0.5f, 4.0f },
// Point
AZ::Vector3(22.757f, 32.243f, 38.0f),
diff --git a/Gems/LmbrCentral/Code/Tests/DiskShapeTest.cpp b/Gems/LmbrCentral/Code/Tests/DiskShapeTest.cpp
index 4a39cd966e..c3683cc33b 100644
--- a/Gems/LmbrCentral/Code/Tests/DiskShapeTest.cpp
+++ b/Gems/LmbrCentral/Code/Tests/DiskShapeTest.cpp
@@ -307,7 +307,7 @@ namespace UnitTest
AZ::Entity entity;
CreateDisk(
AZ::Transform::CreateTranslation(AZ::Vector3(100.0f, 200.0f, 300.0f)) *
- AZ::Transform::CreateScale(AZ::Vector3(2.5f)),
+ AZ::Transform::CreateUniformScale(2.5f),
0.5f, entity);
AZ::Aabb aabb;
diff --git a/Gems/LmbrCentral/Code/Tests/PolygonPrismShapeTest.cpp b/Gems/LmbrCentral/Code/Tests/PolygonPrismShapeTest.cpp
index 46c3da90ab..f12ca69425 100644
--- a/Gems/LmbrCentral/Code/Tests/PolygonPrismShapeTest.cpp
+++ b/Gems/LmbrCentral/Code/Tests/PolygonPrismShapeTest.cpp
@@ -329,7 +329,7 @@ namespace UnitTest
AZ::Entity entity;
AZ::Transform transform = AZ::Transform::CreateFromQuaternionAndTranslation(
AZ::Quaternion::CreateRotationY(AZ::DegToRad(45.0f)), AZ::Vector3(3.0f, 4.0f, 5.0f));
- transform.MultiplyByScale(AZ::Vector3(1.5f, 1.5f, 1.5f));
+ transform.MultiplyByUniformScale(1.5f);
const float height = 1.2f;
const AZ::Vector3 nonUniformScale(2.0f, 1.2f, 0.5f);
const AZStd::vector vertices =
@@ -447,7 +447,7 @@ namespace UnitTest
AZ::Entity entity;
AZ::Transform transform = AZ::Transform::CreateFromQuaternionAndTranslation(
AZ::Quaternion::CreateRotationY(AZ::DegToRad(45.0f)), AZ::Vector3(3.0f, 4.0f, 5.0f));
- transform.MultiplyByScale(AZ::Vector3(1.5f, 1.5f, 1.5f));
+ transform.MultiplyByUniformScale(1.5f);
const float height = 1.2f;
const AZ::Vector3 nonUniformScale(2.0f, 1.2f, 0.5f);
const AZStd::vector vertices =
@@ -608,7 +608,7 @@ namespace UnitTest
AZ::Entity entity;
CreatePolygonPrism(
AZ::Transform::CreateTranslation(AZ::Vector3(5.0f, 15.0f, 40.0f)) *
- AZ::Transform::CreateScale(AZ::Vector3(3.0f)), 2.0f,
+ AZ::Transform::CreateUniformScale(3.0f), 2.0f,
AZStd::vector(
{
AZ::Vector2(-2.0f, -2.0f),
@@ -669,7 +669,7 @@ namespace UnitTest
AZ::Entity entity;
AZ::Transform transform = AZ::Transform::CreateFromQuaternionAndTranslation(
AZ::Quaternion::CreateRotationY(AZ::DegToRad(60.0f)), AZ::Vector3(1.0f, 2.5f, -1.0f));
- transform.MultiplyByScale(AZ::Vector3(2.0f, 2.0f, 2.0f));
+ transform.MultiplyByUniformScale(2.0f);
const float height = 1.5f;
const AZ::Vector3 nonUniformScale(0.5f, 1.5f, 2.0f);
@@ -772,7 +772,7 @@ namespace UnitTest
AZ::Entity entity;
CreatePolygonPrism(
AZ::Transform::CreateTranslation(AZ::Vector3(5.0f, 15.0f, 40.0f)) *
- AZ::Transform::CreateScale(AZ::Vector3(3.0f)), 1.5f,
+ AZ::Transform::CreateUniformScale(3.0f), 1.5f,
AZStd::vector(
{
AZ::Vector2(-2.0f, -2.0f),
@@ -795,7 +795,7 @@ namespace UnitTest
AZ::Entity entity;
AZ::Transform transform = AZ::Transform::CreateFromQuaternionAndTranslation(
AZ::Quaternion::CreateRotationX(AZ::DegToRad(30.0f)), AZ::Vector3(2.0f, -5.0f, 3.0f));
- transform.MultiplyByScale(AZ::Vector3(2.0f, 2.0f, 2.0f));
+ transform.MultiplyByUniformScale(2.0f);
const float height = 1.2f;
const AZ::Vector3 nonUniformScale(1.5f, 0.8f, 2.0f);
const AZStd::vector vertices =
diff --git a/Gems/LmbrCentral/Code/Tests/QuadShapeTest.cpp b/Gems/LmbrCentral/Code/Tests/QuadShapeTest.cpp
index d70a9344a4..4b6eae4bb8 100644
--- a/Gems/LmbrCentral/Code/Tests/QuadShapeTest.cpp
+++ b/Gems/LmbrCentral/Code/Tests/QuadShapeTest.cpp
@@ -188,7 +188,7 @@ namespace UnitTest
AZ::Entity entity;
AZ::Transform transformIn = AZ::Transform::CreateFromQuaternionAndTranslation(
AZ::Quaternion(0.46f, 0.34f, 0.02f, 0.82f), AZ::Vector3(1.7f, -0.4f, 2.3f));
- transformIn.MultiplyByScale(AZ::Vector3(2.2f));
+ transformIn.MultiplyByUniformScale(2.2f);
const AZ::Vector3 nonUniformScale(0.8f, 0.6f, 1.3f);
const float width = 0.7f;
const float height = 1.3f;
@@ -327,7 +327,7 @@ namespace UnitTest
AZ::Entity entity;
AZ::Transform transform = AZ::Transform::CreateFromQuaternionAndTranslation(
AZ::Quaternion(0.64f, 0.16f, 0.68f, 0.32f), AZ::Vector3(0.4f, -2.3f, -0.9f));
- transform.MultiplyByScale(AZ::Vector3(1.3f));
+ transform.MultiplyByUniformScale(1.3f);
const AZ::Vector3 nonUniformScale(0.7f, 0.5f, 1.3f);
const float width = 0.9f;
const float height = 1.3f;
@@ -384,7 +384,7 @@ namespace UnitTest
AZ::Entity entity;
CreateQuad(
AZ::Transform::CreateTranslation(AZ::Vector3(100.0f, 200.0f, 300.0f)) *
- AZ::Transform::CreateScale(AZ::Vector3(2.5f)),
+ AZ::Transform::CreateUniformScale(2.5f),
1.0f, 2.0f, entity);
AZ::Aabb aabb;
@@ -425,7 +425,7 @@ namespace UnitTest
AZ::Entity entity;
AZ::Transform transform = AZ::Transform::CreateFromQuaternionAndTranslation(
AZ::Quaternion(0.44f, 0.24f, 0.48f, 0.72f), AZ::Vector3(3.4f, 1.2f, -2.8f));
- transform.MultiplyByScale(AZ::Vector3(1.5f));
+ transform.MultiplyByUniformScale(1.5f);
const AZ::Vector3 nonUniformScale(1.2f, 1.1f, 0.8f);
const float width = 1.2f;
const float height = 1.7f;
@@ -518,7 +518,7 @@ namespace UnitTest
AZ::Entity entity;
AZ::Transform transform = AZ::Transform::CreateFromQuaternionAndTranslation(
AZ::Quaternion(0.24f, 0.72f, 0.44f, 0.48f), AZ::Vector3(2.7f, 2.3f, -1.8f));
- transform.MultiplyByScale(AZ::Vector3(1.2f));
+ transform.MultiplyByUniformScale(1.2f);
const AZ::Vector3 nonUniformScale(0.4f, 2.2f, 1.3f);
const float width = 1.6f;
const float height = 0.7f;
@@ -546,7 +546,7 @@ namespace UnitTest
AZ::Entity entity;
AZ::Transform transform = AZ::Transform::CreateFromQuaternionAndTranslation(
AZ::Quaternion(0.70f, 0.10f, 0.34f, 0.62f), AZ::Vector3(3.0f, -1.0f, 2.0f));
- transform.MultiplyByScale(AZ::Vector3(2.0f));
+ transform.MultiplyByUniformScale(2.0f);
const AZ::Vector3 nonUniformScale(2.4f, 1.3f, 1.8f);
const float width = 0.8f;
const float height = 1.4f;
diff --git a/Gems/LmbrCentral/Code/Tests/SphereShapeTest.cpp b/Gems/LmbrCentral/Code/Tests/SphereShapeTest.cpp
index 563bb16caa..b5e45f2cda 100644
--- a/Gems/LmbrCentral/Code/Tests/SphereShapeTest.cpp
+++ b/Gems/LmbrCentral/Code/Tests/SphereShapeTest.cpp
@@ -179,7 +179,7 @@ namespace UnitTest
AZ::Entity entity;
CreateSphere(
AZ::Transform::CreateTranslation(AZ::Vector3(-8.0f, -15.0f, 5.0f)) *
- AZ::Transform::CreateScale(AZ::Vector3(5.0f)),
+ AZ::Transform::CreateUniformScale(5.0f),
0.25f, entity);
bool rayHit = false;
@@ -240,7 +240,7 @@ namespace UnitTest
AZ::Entity entity;
CreateSphere(
AZ::Transform::CreateTranslation(AZ::Vector3(100.0f, 200.0f, 300.0f)) *
- AZ::Transform::CreateScale(AZ::Vector3(2.5f)),
+ AZ::Transform::CreateUniformScale(2.5f),
0.5f, entity);
AZ::Aabb aabb;
@@ -269,7 +269,7 @@ namespace UnitTest
TEST_F(SphereShapeTest, GetTransformAndLocalBounds2)
{
AZ::Entity entity;
- AZ::Transform transformIn = AZ::Transform::CreateTranslation(AZ::Vector3(100.0f, 200.0f, 300.0f)) * AZ::Transform::CreateScale(AZ::Vector3(2.5f));
+ AZ::Transform transformIn = AZ::Transform::CreateTranslation(AZ::Vector3(100.0f, 200.0f, 300.0f)) * AZ::Transform::CreateUniformScale(2.5f);
CreateSphere(transformIn, 2.0f, entity);
AZ::Transform transformOut;
@@ -287,7 +287,7 @@ namespace UnitTest
AZ::Entity entity;
CreateSphere(
AZ::Transform::CreateTranslation(AZ::Vector3(-30.0f, -30.0f, 22.0f)) *
- AZ::Transform::CreateScale(AZ::Vector3(2.0f)),
+ AZ::Transform::CreateUniformScale(2.0f),
1.2f, entity);
bool inside;
@@ -303,7 +303,7 @@ namespace UnitTest
AZ::Entity entity;
CreateSphere(
AZ::Transform::CreateTranslation(AZ::Vector3(-30.0f, -30.0f, 22.0f)) *
- AZ::Transform::CreateScale(AZ::Vector3(1.5f)),
+ AZ::Transform::CreateUniformScale(1.5f),
1.6f, entity);
bool inside;
@@ -319,7 +319,7 @@ namespace UnitTest
AZ::Entity entity;
CreateSphere(
AZ::Transform::CreateTranslation(AZ::Vector3(19.0f, 34.0f, 37.0f)) *
- AZ::Transform::CreateScale(AZ::Vector3(2.0f)),
+ AZ::Transform::CreateUniformScale(2.0f),
1.0f, entity);
float distance;
@@ -335,7 +335,7 @@ namespace UnitTest
AZ::Entity entity;
CreateSphere(
AZ::Transform::CreateTranslation(AZ::Vector3(19.0f, 34.0f, 37.0f)) *
- AZ::Transform::CreateScale(AZ::Vector3(0.5f)),
+ AZ::Transform::CreateUniformScale(0.5f),
1.0f, entity);
float distance;
diff --git a/Gems/LmbrCentral/Code/Tests/TubeShapeTest.cpp b/Gems/LmbrCentral/Code/Tests/TubeShapeTest.cpp
index 65388d1fe5..b8f58d5d20 100644
--- a/Gems/LmbrCentral/Code/Tests/TubeShapeTest.cpp
+++ b/Gems/LmbrCentral/Code/Tests/TubeShapeTest.cpp
@@ -139,7 +139,7 @@ namespace UnitTest
AZ::Entity entity;
CreateTube(
AZ::Transform::CreateTranslation(AZ::Vector3(-40.0f, 6.0f, 1.0f)) *
- AZ::Transform::CreateScale(AZ::Vector3(2.5f, 1.0f, 1.0f)), // test max scale
+ AZ::Transform::CreateUniformScale(2.5f),
1.0f,
entity);
diff --git a/Gems/Maestro/Code/Source/Cinematics/AnimAZEntityNode.cpp b/Gems/Maestro/Code/Source/Cinematics/AnimAZEntityNode.cpp
index b0ebb10b0e..54eeb1fcc9 100644
--- a/Gems/Maestro/Code/Source/Cinematics/AnimAZEntityNode.cpp
+++ b/Gems/Maestro/Code/Source/Cinematics/AnimAZEntityNode.cpp
@@ -189,7 +189,7 @@ Quat CAnimAzEntityNode::GetRotate(float time)
}
//////////////////////////////////////////////////////////////////////////
-void CAnimAzEntityNode::SetScale(float time, const Vec3& scale)
+void CAnimAzEntityNode::SetScale(float time, float scale)
{
CAnimComponentNode* transformComponent = GetTransformComponentNode();
if (transformComponent)
@@ -198,7 +198,7 @@ void CAnimAzEntityNode::SetScale(float time, const Vec3& scale)
}
}
-Vec3 CAnimAzEntityNode::GetScale()
+float CAnimAzEntityNode::GetScale()
{
CAnimComponentNode* transformComponent = GetTransformComponentNode();
if (transformComponent)
@@ -206,7 +206,7 @@ Vec3 CAnimAzEntityNode::GetScale()
return transformComponent->GetScale();
}
- return Vec3(.0f, .0f, .0f);
+ return 0.0f;
}
Vec3 CAnimAzEntityNode::GetOffsetPosition(const Vec3& position)
diff --git a/Gems/Maestro/Code/Source/Cinematics/AnimAZEntityNode.h b/Gems/Maestro/Code/Source/Cinematics/AnimAZEntityNode.h
index 863d0e927f..d5af311b70 100644
--- a/Gems/Maestro/Code/Source/Cinematics/AnimAZEntityNode.h
+++ b/Gems/Maestro/Code/Source/Cinematics/AnimAZEntityNode.h
@@ -57,14 +57,14 @@ public:
void SetPos(float time, const Vec3& pos) override;
void SetRotate(float time, const Quat& quat) override;
- void SetScale(float time, const Vec3& scale) override;
+ void SetScale(float time, float scale) override;
Vec3 GetOffsetPosition(const Vec3& position) override;
Vec3 GetPos() override;
Quat GetRotate() override;
Quat GetRotate(float time) override;
- Vec3 GetScale() override;
+ float GetScale() override;
//////////////////////////////////////////////////////////////////////////
void Serialize(XmlNodeRef& xmlNode, bool bLoading, bool bLoadEmptyTracks);
diff --git a/Gems/Maestro/Code/Source/Cinematics/AnimComponentNode.cpp b/Gems/Maestro/Code/Source/Cinematics/AnimComponentNode.cpp
index ea7322014c..13a5d4ed63 100644
--- a/Gems/Maestro/Code/Source/Cinematics/AnimComponentNode.cpp
+++ b/Gems/Maestro/Code/Source/Cinematics/AnimComponentNode.cpp
@@ -341,10 +341,10 @@ void CAnimComponentNode::ConvertBetweenWorldAndLocalRotation(Quat& rotation, ETr
}
//////////////////////////////////////////////////////////////////////////
-void CAnimComponentNode::ConvertBetweenWorldAndLocalScale(Vec3& scale, ETransformSpaceConversionDirection conversionDirection) const
+void CAnimComponentNode::ConvertBetweenWorldAndLocalScale(float& scale, ETransformSpaceConversionDirection conversionDirection) const
{
AZ::Transform parentTransform = AZ::Transform::Identity();
- AZ::Transform scaleTransform = AZ::Transform::CreateScale(AZ::Vector3(scale.x, scale.y, scale.z));
+ AZ::Transform scaleTransform = AZ::Transform::CreateUniformScale(scale);
GetParentWorldTransform(parentTransform);
if (conversionDirection == eTransformConverstionDirection_toLocalSpace)
@@ -353,8 +353,7 @@ void CAnimComponentNode::ConvertBetweenWorldAndLocalScale(Vec3& scale, ETransfor
}
scaleTransform = parentTransform * scaleTransform;
- AZ::Vector3 vScale = scaleTransform.GetScale();
- scale.Set(vScale.GetX(), vScale.GetY(), vScale.GetZ());
+ scale = scaleTransform.GetUniformScale();
}
//////////////////////////////////////////////////////////////////////////
@@ -457,7 +456,7 @@ Quat CAnimComponentNode::GetRotate()
}
//////////////////////////////////////////////////////////////////////////
-void CAnimComponentNode::SetScale(float time, const Vec3& scale)
+void CAnimComponentNode::SetScale(float time, float scale)
{
if (m_componentTypeId == AZ::Uuid(AZ::EditorTransformComponentTypeId) || m_componentTypeId == AzFramework::TransformComponent::TYPEINFO_Uuid())
{
@@ -468,7 +467,7 @@ void CAnimComponentNode::SetScale(float time, const Vec3& scale)
{
// Scale is in World space, even if the entity is parented - because Component Entity AZ::Transforms do not correctly set
// CBaseObject parenting, so we convert it to Local space here. This should probably be fixed, but for now, we explicitly change from World to Local space here.
- Vec3 localScale(scale);
+ float localScale = scale;
ConvertBetweenWorldAndLocalScale(localScale, eTransformConverstionDirection_toLocalSpace);
scaleTrack->SetValue(time, localScale, bDefault);
}
@@ -480,15 +479,15 @@ void CAnimComponentNode::SetScale(float time, const Vec3& scale)
}
}
-Vec3 CAnimComponentNode::GetScale()
+float CAnimComponentNode::GetScale()
{
Maestro::SequenceComponentRequests::AnimatablePropertyAddress animatableAddress(m_componentId, "Scale");
- Maestro::SequenceComponentRequests::AnimatedVector3Value scaleValue(AZ::Vector3::CreateZero());
+ Maestro::SequenceComponentRequests::AnimatedFloatValue scaleValue(0.0f);
Maestro::SequenceComponentRequestBus::Event(m_pSequence->GetSequenceEntityId(), &Maestro::SequenceComponentRequestBus::Events::GetAnimatedPropertyValue, scaleValue, GetParentAzEntityId(), animatableAddress);
// Always return World scale because Component Entity AZ::Transforms do not correctly set
// CBaseObject parenting. This should probably be fixed, but for now, we explicitly change from Local to World space here.
- Vec3 worldScale(scaleValue.GetVector3Value());
+ float worldScale = scaleValue.GetFloatValue();
ConvertBetweenWorldAndLocalScale(worldScale, eTransformConverstionDirection_toWorldSpace);
return worldScale;
diff --git a/Gems/Maestro/Code/Source/Cinematics/AnimComponentNode.h b/Gems/Maestro/Code/Source/Cinematics/AnimComponentNode.h
index 5d83f7ba0d..48913e5b85 100644
--- a/Gems/Maestro/Code/Source/Cinematics/AnimComponentNode.h
+++ b/Gems/Maestro/Code/Source/Cinematics/AnimComponentNode.h
@@ -71,12 +71,12 @@ public:
void SetPos(float time, const Vec3& pos) override;
void SetRotate(float time, const Quat& quat) override;
- void SetScale(float time, const Vec3& scale) override;
+ void SetScale(float time, float scale) override;
Vec3 GetPos() override;
Quat GetRotate() override;
Quat GetRotate(float time) override;
- Vec3 GetScale() override;
+ float GetScale() override;
void Activate(bool bActivate) override;
//////////////////////////////////////////////////////////////////////////
@@ -128,7 +128,7 @@ private:
void GetParentWorldTransform(AZ::Transform& retTransform) const;
void ConvertBetweenWorldAndLocalPosition(Vec3& position, ETransformSpaceConversionDirection conversionDirection) const;
void ConvertBetweenWorldAndLocalRotation(Quat& rotation, ETransformSpaceConversionDirection conversionDirection) const;
- void ConvertBetweenWorldAndLocalScale(Vec3& scale, ETransformSpaceConversionDirection conversionDirection) const;
+ void ConvertBetweenWorldAndLocalScale(float& scale, ETransformSpaceConversionDirection conversionDirection) const;
// Utility function to query the units for a track and set the track multiplier if needed. Returns true if track multiplier was set.
bool SetTrackMultiplier(IAnimTrack* track) const;
diff --git a/Gems/Maestro/Code/Source/Cinematics/AnimNode.h b/Gems/Maestro/Code/Source/Cinematics/AnimNode.h
index 0c52ac5a48..f29ba2eab0 100644
--- a/Gems/Maestro/Code/Source/Cinematics/AnimNode.h
+++ b/Gems/Maestro/Code/Source/Cinematics/AnimNode.h
@@ -79,12 +79,12 @@ public:
//////////////////////////////////////////////////////////////////////////
void SetPos([[maybe_unused]] float time, [[maybe_unused]] const Vec3& pos) override {};
void SetRotate([[maybe_unused]] float time, [[maybe_unused]] const Quat& quat) override {};
- void SetScale([[maybe_unused]] float time, [[maybe_unused]] const Vec3& scale) override {};
+ void SetScale([[maybe_unused]] float time, [[maybe_unused]] const float scale) override {};
Vec3 GetPos() override { return Vec3(0, 0, 0); };
Quat GetRotate() override { return Quat(0, 0, 0, 0); };
Quat GetRotate(float /*time*/) override { return Quat(0, 0, 0, 0); };
- Vec3 GetScale() override { return Vec3(0, 0, 0); };
+ float GetScale() override { return 0.0f; };
virtual Matrix34 GetReferenceMatrix() const;
diff --git a/Gems/PhysX/Code/Source/RigidBodyComponent.cpp b/Gems/PhysX/Code/Source/RigidBodyComponent.cpp
index 8984343fe5..6709412ffe 100644
--- a/Gems/PhysX/Code/Source/RigidBodyComponent.cpp
+++ b/Gems/PhysX/Code/Source/RigidBodyComponent.cpp
@@ -203,9 +203,8 @@ namespace PhysX
AZ::Quaternion newRotation = AZ::Quaternion::CreateIdentity();
m_interpolator->GetInterpolated(newPosition, newRotation, deltaTime);
- AZ::Transform interpolatedTransform = AZ::Transform::CreateFromQuaternionAndTranslation(newRotation, newPosition);
- interpolatedTransform.MultiplyByScale(m_initialScale);
- AZ::TransformBus::Event(GetEntityId(), &AZ::TransformInterface::SetWorldTM, interpolatedTransform);
+ AZ::TransformBus::Event(GetEntityId(), &AZ::TransformInterface::SetRotationQuaternion, newRotation);
+ AZ::TransformBus::Event(GetEntityId(), &AZ::TransformInterface::SetWorldTranslation, newPosition);
}
}
@@ -244,14 +243,8 @@ namespace PhysX
}
else
{
- AZ::Transform transform = m_rigidBody->GetTransform();
-
- // Maintain scale (this must be precise).
- AZ::Transform entityTransform = AZ::Transform::Identity();
- AZ::TransformBus::EventResult(entityTransform, GetEntityId(), &AZ::TransformInterface::GetWorldTM);
- transform.MultiplyByScale(m_initialScale);
-
- AZ::TransformBus::Event(GetEntityId(), &AZ::TransformInterface::SetWorldTM, transform);
+ AZ::TransformBus::Event(GetEntityId(), &AZ::TransformInterface::SetRotationQuaternion, m_rigidBody->GetOrientation());
+ AZ::TransformBus::Event(GetEntityId(), &AZ::TransformInterface::SetWorldTranslation, m_rigidBody->GetPosition());
}
m_isLastMovementFromKinematicSource = false;
}
@@ -338,8 +331,6 @@ namespace PhysX
m_interpolator = std::make_unique();
m_interpolator->Reset(transform.GetTranslation(), rotation);
- m_initialScale = transform.ExtractScale();
-
Physics::RigidBodyNotificationBus::Event(GetEntityId(), &Physics::RigidBodyNotificationBus::Events::OnPhysicsEnabled);
Physics::WorldBodyNotificationBus::Event(GetEntityId(), &Physics::WorldBodyNotifications::OnPhysicsEnabled);
}
diff --git a/Gems/PhysX/Code/Source/RigidBodyComponent.h b/Gems/PhysX/Code/Source/RigidBodyComponent.h
index c46e136669..6e5a45ea36 100644
--- a/Gems/PhysX/Code/Source/RigidBodyComponent.h
+++ b/Gems/PhysX/Code/Source/RigidBodyComponent.h
@@ -159,7 +159,6 @@ namespace PhysX
AzPhysics::RigidBody* m_rigidBody = nullptr;
AzPhysics::SceneHandle m_attachedSceneHandle = AzPhysics::InvalidSceneHandle;
- AZ::Vector3 m_initialScale = AZ::Vector3::CreateOne();
bool m_staticTransformAtActivation = false; ///< Whether the transform was static when the component last activated.
bool m_isLastMovementFromKinematicSource = false; ///< True when the source of the movement comes from SetKinematicTarget as opposed to coming from a Transform change
bool m_rigidBodyTransformNeedsUpdateOnPhysReEnable = false; ///< True if rigid body transform needs to be synced to the entity's when physics is re-enabled
diff --git a/Gems/PhysX/Code/Source/Utils.cpp b/Gems/PhysX/Code/Source/Utils.cpp
index 767f386b6f..d04db0d37c 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)
{
- AZ::Vector3 worldScale = AZ::Vector3::CreateOne();
- AZ::TransformBus::EventResult(worldScale, entityId, &AZ::TransformBus::Events::GetWorldScale);
- return worldScale;
+ float worldScale = 1.0f;
+ AZ::TransformBus::EventResult(worldScale, entityId, &AZ::TransformBus::Events::GetWorldUniformScale);
+ return AZ::Vector3(worldScale);
}
AZ::Vector3 GetUniformScale(AZ::EntityId entityId)
diff --git a/Gems/PhysX/Code/Tests/ColliderScalingTests.cpp b/Gems/PhysX/Code/Tests/ColliderScalingTests.cpp
index 51a11c7605..5c8fcb70d5 100644
--- a/Gems/PhysX/Code/Tests/ColliderScalingTests.cpp
+++ b/Gems/PhysX/Code/Tests/ColliderScalingTests.cpp
@@ -68,7 +68,7 @@ namespace PhysXEditorTests
AZ::EntityId editorId = editorEntity->GetId();
AZ::Transform worldTM;
- worldTM.SetScale(AZ::Vector3(1.5f));
+ worldTM.SetUniformScale(1.5f);
worldTM.SetTranslation(AZ::Vector3(5.0f, 6.0f, 7.0f));
worldTM.SetRotation(AZ::Quaternion::CreateRotationX(AZ::DegToRad(30.0f)));
AZ::TransformBus::Event(editorId, &AZ::TransformBus::Events::SetWorldTM, worldTM);
@@ -99,7 +99,7 @@ namespace PhysXEditorTests
AZ::EntityId editorId = editorEntity->GetId();
AZ::Transform worldTM;
- worldTM.SetScale(AZ::Vector3(1.5f));
+ worldTM.SetUniformScale(1.5f);
worldTM.SetTranslation(AZ::Vector3(5.0f, 6.0f, 7.0f));
worldTM.SetRotation(AZ::Quaternion::CreateRotationX(AZ::DegToRad(30.0f)));
AZ::TransformBus::Event(editorId, &AZ::TransformBus::Events::SetWorldTM, worldTM);
@@ -144,7 +144,7 @@ namespace PhysXEditorTests
AZ::EntityId capsuleId = editorEntity->GetId();
AZ::Transform worldTM;
- worldTM.SetScale(AZ::Vector3(0.5f));
+ worldTM.SetUniformScale(0.5f);
worldTM.SetTranslation(AZ::Vector3(3.0f, 1.0f, -4.0f));
worldTM.SetRotation(AZ::Quaternion::CreateRotationY(AZ::DegToRad(90.0f)));
AZ::TransformBus::Event(capsuleId, &AZ::TransformBus::Events::SetWorldTM, worldTM);
@@ -176,7 +176,7 @@ namespace PhysXEditorTests
AZ::EntityId capsuleId = editorEntity->GetId();
AZ::Transform worldTM;
- worldTM.SetScale(AZ::Vector3(0.5f));
+ worldTM.SetUniformScale(0.5f);
worldTM.SetTranslation(AZ::Vector3(3.0f, 1.0f, -4.0f));
worldTM.SetRotation(AZ::Quaternion::CreateRotationY(AZ::DegToRad(90.0f)));
AZ::TransformBus::Event(capsuleId, &AZ::TransformBus::Events::SetWorldTM, worldTM);
@@ -222,7 +222,7 @@ namespace PhysXEditorTests
AZ::EntityId sphereId = editorEntity->GetId();
AZ::Transform worldTM;
- worldTM.SetScale(AZ::Vector3(1.2f));
+ worldTM.SetUniformScale(1.2f);
worldTM.SetTranslation(AZ::Vector3(-2.0f, -1.0f, 3.0f));
worldTM.SetRotation(AZ::Quaternion::CreateRotationX(AZ::DegToRad(90.0f)));
AZ::TransformBus::Event(sphereId, &AZ::TransformBus::Events::SetWorldTM, worldTM);
@@ -254,7 +254,7 @@ namespace PhysXEditorTests
AZ::EntityId sphereId = editorEntity->GetId();
AZ::Transform worldTM;
- worldTM.SetScale(AZ::Vector3(1.2f));
+ worldTM.SetUniformScale(1.2f);
worldTM.SetTranslation(AZ::Vector3(-2.0f, -1.0f, 3.0f));
worldTM.SetRotation(AZ::Quaternion::CreateRotationX(AZ::DegToRad(90.0f)));
AZ::TransformBus::Event(sphereId, &AZ::TransformBus::Events::SetWorldTM, worldTM);
diff --git a/Gems/PhysX/Code/Tests/DebugDrawTests.cpp b/Gems/PhysX/Code/Tests/DebugDrawTests.cpp
index 5b41c37f34..610ba8d6f6 100644
--- a/Gems/PhysX/Code/Tests/DebugDrawTests.cpp
+++ b/Gems/PhysX/Code/Tests/DebugDrawTests.cpp
@@ -32,7 +32,7 @@ namespace PhysXEditorTests
AZ::EntityId boxId = boxEntity->GetId();
AZ::Transform worldTM;
- worldTM.SetScale(AZ::Vector3(1.5f));
+ worldTM.SetUniformScale(1.5f);
worldTM.SetTranslation(AZ::Vector3(5.0f, 6.0f, 7.0f));
worldTM.SetRotation(AZ::Quaternion::CreateRotationX(AZ::DegToRad(30.0f)));
AZ::TransformBus::Event(boxId, &AZ::TransformBus::Events::SetWorldTM, worldTM);
@@ -61,7 +61,7 @@ namespace PhysXEditorTests
AZ::EntityId boxId = boxEntity->GetId();
AZ::Transform worldTM;
- worldTM.SetScale(AZ::Vector3(1.2f));
+ worldTM.SetUniformScale(1.2f);
worldTM.SetTranslation(AZ::Vector3(4.0f, -3.0f, 1.0f));
worldTM.SetRotation(AZ::Quaternion::CreateRotationZ(AZ::DegToRad(45.0f)));
AZ::TransformBus::Event(boxId, &AZ::TransformBus::Events::SetWorldTM, worldTM);
@@ -91,7 +91,7 @@ namespace PhysXEditorTests
AZ::EntityId boxId = boxEntity->GetId();
AZ::Transform worldTM;
- worldTM.SetScale(AZ::Vector3(1.2f));
+ worldTM.SetUniformScale(1.2f);
worldTM.SetTranslation(AZ::Vector3(4.0f, -3.0f, 1.0f));
worldTM.SetRotation(AZ::Quaternion::CreateRotationZ(AZ::DegToRad(45.0f)));
AZ::TransformBus::Event(boxId, &AZ::TransformBus::Events::SetWorldTM, worldTM);
@@ -129,7 +129,7 @@ namespace PhysXEditorTests
AZ::EntityId capsuleId = capsuleEntity->GetId();
AZ::Transform worldTM;
- worldTM.SetScale(AZ::Vector3(0.5f));
+ worldTM.SetUniformScale(0.5f);
worldTM.SetTranslation(AZ::Vector3(3.0f, 1.0f, -4.0f));
worldTM.SetRotation(AZ::Quaternion::CreateRotationY(AZ::DegToRad(90.0f)));
AZ::TransformBus::Event(capsuleId, &AZ::TransformBus::Events::SetWorldTM, worldTM);
@@ -158,7 +158,7 @@ namespace PhysXEditorTests
AZ::EntityId capsuleId = capsuleEntity->GetId();
AZ::Transform worldTM;
- worldTM.SetScale(AZ::Vector3(1.4f));
+ worldTM.SetUniformScale(1.4f);
worldTM.SetTranslation(AZ::Vector3(1.0f, -4.0f, 4.0f));
worldTM.SetRotation(AZ::Quaternion::CreateRotationX(AZ::DegToRad(45.0f)));
AZ::TransformBus::Event(capsuleId, &AZ::TransformBus::Events::SetWorldTM, worldTM);
@@ -189,7 +189,7 @@ namespace PhysXEditorTests
AZ::EntityId sphereId = sphereEntity->GetId();
AZ::Transform worldTM;
- worldTM.SetScale(AZ::Vector3(1.2f));
+ worldTM.SetUniformScale(1.2f);
worldTM.SetTranslation(AZ::Vector3(-2.0f, -1.0f, 3.0f));
worldTM.SetRotation(AZ::Quaternion::CreateRotationX(AZ::DegToRad(90.0f)));
AZ::TransformBus::Event(sphereId, &AZ::TransformBus::Events::SetWorldTM, worldTM);
@@ -218,7 +218,7 @@ namespace PhysXEditorTests
AZ::EntityId sphereId = sphereEntity->GetId();
AZ::Transform worldTM;
- worldTM.SetScale(AZ::Vector3(0.8f));
+ worldTM.SetUniformScale(0.8f);
worldTM.SetTranslation(AZ::Vector3(2.0f, -1.0f, 3.0f));
worldTM.SetRotation(AZ::Quaternion::CreateRotationY(AZ::DegToRad(45.0f)));
AZ::TransformBus::Event(sphereId, &AZ::TransformBus::Events::SetWorldTM, worldTM);
diff --git a/Gems/PhysX/Code/Tests/RigidBodyComponentTests.cpp b/Gems/PhysX/Code/Tests/RigidBodyComponentTests.cpp
index eee747d390..4ff88c0b3b 100644
--- a/Gems/PhysX/Code/Tests/RigidBodyComponentTests.cpp
+++ b/Gems/PhysX/Code/Tests/RigidBodyComponentTests.cpp
@@ -38,8 +38,8 @@ namespace PhysXEditorTests
const AZ::Aabb originalAabb = rigidBodyComponent->GetRigidBody()->GetAabb();
// Update the scale
- const AZ::Vector3 scale(2.0f);
- AZ::TransformBus::Event(editorEntity->GetId(), &AZ::TransformInterface::SetLocalScale, scale);
+ float scale = 2.0f;
+ AZ::TransformBus::Event(editorEntity->GetId(), &AZ::TransformInterface::SetLocalUniformScale, scale);
// Trigger editor physics world update so EditorRigidBodyComponent can process scale change
auto* physicsSystem = AZ::Interface::Get();
@@ -89,8 +89,8 @@ namespace PhysXEditorTests
idPair, &PhysX::EditorColliderComponentRequests::SetColliderOffset, offset);
// Update the scale
- const AZ::Vector3 scale(2.0f);
- AZ::TransformBus::Event(editorEntity->GetId(), &AZ::TransformInterface::SetLocalScale, scale);
+ float scale = 2.0f;
+ AZ::TransformBus::Event(editorEntity->GetId(), &AZ::TransformInterface::SetLocalUniformScale, scale);
// Update editor world to let updates to be applied
physicsSystem->Simulate(0.1f);
diff --git a/Gems/PhysX/Code/Tests/ShapeColliderComponentTests.cpp b/Gems/PhysX/Code/Tests/ShapeColliderComponentTests.cpp
index 8af9defff8..ad632b579d 100644
--- a/Gems/PhysX/Code/Tests/ShapeColliderComponentTests.cpp
+++ b/Gems/PhysX/Code/Tests/ShapeColliderComponentTests.cpp
@@ -241,7 +241,7 @@ namespace PhysXEditorTests
SetPolygonPrismHeight(entityId, 2.0f);
// update the transform scale and non-uniform scale
- AZ::TransformBus::Event(entityId, &AZ::TransformBus::Events::SetLocalScale, AZ::Vector3(2.0f));
+ AZ::TransformBus::Event(entityId, &AZ::TransformBus::Events::SetLocalUniformScale, 2.0f);
AZ::NonUniformScaleRequestBus::Event(entityId, &AZ::NonUniformScaleRequests::SetScale, AZ::Vector3(0.5f, 1.5f, 2.0f));
EntityPtr gameEntity = CreateActiveGameEntityFromEditorEntity(editorEntity.get());
@@ -435,8 +435,8 @@ namespace PhysXEditorTests
&LmbrCentral::BoxShapeComponentRequests::GetBoxDimensions);
// update the transform
- const AZ::Vector3 scale(2.0f);
- AZ::TransformBus::Event(editorEntityId, &AZ::TransformInterface::SetLocalScale, scale);
+ const float scale = 2.0f;
+ AZ::TransformBus::Event(editorEntityId, &AZ::TransformInterface::SetLocalUniformScale, scale);
const AZ::Vector3 translation(10.0f, 20.0f, 30.0f);
AZ::TransformBus::Event(editorEntityId, &AZ::TransformInterface::SetWorldTranslation, translation);
@@ -527,10 +527,8 @@ namespace PhysXEditorTests
editorParentEntity->Activate();
// set some scale to parent entity
- const AZ::Vector3 parentScale(2.0f);
- AZ::TransformBus::Event(editorParentEntity->GetId(),
- &AZ::TransformInterface::SetLocalScale,
- parentScale);
+ const float parentScale = 2.0f;
+ AZ::TransformBus::Event(editorParentEntity->GetId(), &AZ::TransformInterface::SetLocalUniformScale, parentScale);
// create an editor child entity with a shape collider component and a box shape component
EntityPtr editorChildEntity = CreateInactiveEditorEntity("ChildEntity");
diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Datum.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Datum.cpp
index a0db02c3a8..30e55cee49 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();
- AZ::Vector3 scale = copy.ExtractScale();
+ float scale = copy.ExtractUniformScale();
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: X: %f, Y: %f, Z: %f)"
+ " Scale: %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())
- , static_cast(scale.GetX()), static_cast(scale.GetY()), static_cast(scale.GetZ()));
+ , scale);
}
AZStd::string Datum::ToStringVector2(const AZ::Vector2& source) const
diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Entity/Rotate.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Entity/Rotate.cpp
index c510b55314..2f79d4218a 100644
--- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Entity/Rotate.cpp
+++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Entity/Rotate.cpp
@@ -47,21 +47,10 @@ namespace ScriptCanvas
AZ::Transform currentTransform = AZ::Transform::CreateIdentity();
AZ::TransformBus::EventResult(currentTransform, targetEntity, &AZ::TransformInterface::GetWorldTM);
-
- AZ::Vector3 position = currentTransform.GetTranslation();
- AZ::Quaternion currentRotation = currentTransform.GetRotation();
+ currentTransform.SetRotation((rotation * currentTransform.GetRotation().GetNormalized()));
- AZ::Quaternion newRotation = (rotation * currentRotation);
- newRotation.Normalize();
-
- AZ::Transform newTransform = AZ::Transform::CreateIdentity();
-
- newTransform.SetScale(currentTransform.GetScale());
- newTransform.SetRotation(newRotation);
- newTransform.SetTranslation(position);
-
- AZ::TransformBus::Event(targetEntity, &AZ::TransformInterface::SetWorldTM, newTransform);
+ AZ::TransformBus::Event(targetEntity, &AZ::TransformInterface::SetWorldTM, currentTransform);
}
}
diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Entity/RotateMethod.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Entity/RotateMethod.cpp
index 20ea4e1b33..53884f4dd8 100644
--- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Entity/RotateMethod.cpp
+++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Entity/RotateMethod.cpp
@@ -44,22 +44,12 @@ namespace ScriptCanvas
{
AZ::Quaternion rotation = AZ::ConvertEulerDegreesToQuaternion(angles);
- AZ::Transform currentTransform = AZ::Transform::CreateIdentity();
- AZ::TransformBus::EventResult(currentTransform, targetEntity, &AZ::TransformInterface::GetWorldTM);
+ AZ::Transform transform = AZ::Transform::CreateIdentity();
+ AZ::TransformBus::EventResult(transform, targetEntity, &AZ::TransformInterface::GetWorldTM);
- AZ::Vector3 position = currentTransform.GetTranslation();
- AZ::Quaternion currentRotation = currentTransform.GetRotation();
+ transform.SetRotation((rotation * transform.GetRotation()).GetNormalized());
- AZ::Quaternion newRotation = (rotation * currentRotation);
- newRotation.Normalize();
-
- AZ::Transform newTransform = AZ::Transform::CreateIdentity();
-
- newTransform.CreateScale(currentTransform.ExtractScale());
- newTransform.SetRotation(newRotation);
- newTransform.SetTranslation(position);
-
- AZ::TransformBus::Event(targetEntity, &AZ::TransformInterface::SetWorldTM, newTransform);
+ AZ::TransformBus::Event(targetEntity, &AZ::TransformInterface::SetWorldTM, transform);
}
}
}
diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/TransformNodes.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/TransformNodes.h
index 6a0f082272..7aafdf584e 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.ExtractScale());
+ auto scale(source.ExtractUniformScale());
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");
diff --git a/Gems/StartingPointCamera/Code/Source/CameraLookAtBehaviors/RotateCameraLookAt.cpp b/Gems/StartingPointCamera/Code/Source/CameraLookAtBehaviors/RotateCameraLookAt.cpp
index 2ab7e0bd01..e2e818f3e7 100644
--- a/Gems/StartingPointCamera/Code/Source/CameraLookAtBehaviors/RotateCameraLookAt.cpp
+++ b/Gems/StartingPointCamera/Code/Source/CameraLookAtBehaviors/RotateCameraLookAt.cpp
@@ -58,19 +58,9 @@ namespace Camera
float axisPolarity = m_shouldInvertAxis ? -1.0f : 1.0f;
float rotationAmount = axisPolarity * m_rotationAmount;
- // remove translation and scale
- AZ::Vector3 translation = outLookAtTargetTransform.GetTranslation();
- outLookAtTargetTransform.SetTranslation(AZ::Vector3::CreateZero());
- AZ::Vector3 transformScale = outLookAtTargetTransform.ExtractScale();
-
- // perform our rotation
- AZ::Transform desiredRotationTransform = AZ::Transform::CreateFromQuaternion(AZ::Quaternion::CreateFromAxisAngle(outLookAtTargetTransform.GetBasis(m_axisOfRotation), rotationAmount));
-
- outLookAtTargetTransform = desiredRotationTransform * outLookAtTargetTransform;
-
- // return scale and translate
- outLookAtTargetTransform.SetScale(transformScale);
- outLookAtTargetTransform.SetTranslation(translation);
+ AZ::Quaternion desiredRotation = AZ::Quaternion::CreateFromAxisAngle(
+ outLookAtTargetTransform.GetBasis(m_axisOfRotation), rotationAmount);
+ outLookAtTargetTransform.SetRotation(desiredRotation * outLookAtTargetTransform.GetRotation());
}
void RotateCameraLookAt::Activate(AZ::EntityId entityId)
From 304696fa5cc59b3b517d5545844d2d25d35ee610 Mon Sep 17 00:00:00 2001
From: moudgils
Date: Tue, 27 Apr 2021 19:26:35 -0700
Subject: [PATCH 008/629] Shader compile fixes
---
.../DiffuseComposite_nomsaa.azsl | 8 ++++----
Gems/Atom/RHI/Code/Source/RHI.Edit/Utils.cpp | 2 +-
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseComposite_nomsaa.azsl b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseComposite_nomsaa.azsl
index 74571b5c6a..c243af0855 100644
--- a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseComposite_nomsaa.azsl
+++ b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseComposite_nomsaa.azsl
@@ -91,7 +91,7 @@ float3 SampleProbeIrradiance(uint2 probeIrradianceCoords, float depth, float3 no
{
for (int x = -extent; x <= extent; ++x)
{
- float3 downsampledNormal = PassSrg::m_downsampledNormal.Load(int3(probeIrradianceCoords, 0), int2(x, y)).rgb;
+ float3 downsampledNormal = PassSrg::m_downsampledNormal.Load(int3(probeIrradianceCoords + int2(x, y), 0)).rgb;
downsampledNormal = downsampledNormal * 2.0f - 1.0f;
float normalDot = dot(downsampledNormal, normal);
@@ -100,10 +100,10 @@ float3 SampleProbeIrradiance(uint2 probeIrradianceCoords, float depth, float3 no
if (normalDot > NormalMatchTolerance)
{
// the normals are almost identical, if the depth is within the tolerance we can optimize by just taking this sample
- float downsampledDepth = PassSrg::m_downsampledDepth.Load(int3(probeIrradianceCoords, 0), int2(x, y)).r;
+ float downsampledDepth = PassSrg::m_downsampledDepth.Load(int3(probeIrradianceCoords + int2(x, y), 0)).r;
if (abs(depth - downsampledDepth) <= DepthTolerance)
{
- float3 probeIrradiance = PassSrg::m_downsampledProbeIrradiance.Load(int3(probeIrradianceCoords,0), int2(x, y)).rgb;
+ float3 probeIrradiance = PassSrg::m_downsampledProbeIrradiance.Load(int3(probeIrradianceCoords + int2(x, y),0)).rgb;
probeIrradiance = saturate(probeIrradiance);
return probeIrradiance;
}
@@ -115,7 +115,7 @@ float3 SampleProbeIrradiance(uint2 probeIrradianceCoords, float depth, float3 no
}
}
- float3 probeIrradiance = PassSrg::m_downsampledProbeIrradiance.Load(int3(probeIrradianceCoords, 0), closestOffset).rgb;
+ float3 probeIrradiance = PassSrg::m_downsampledProbeIrradiance.Load(int3(probeIrradianceCoords + closestOffset, 0)).rgb;
probeIrradiance = saturate(probeIrradiance);
return probeIrradiance;
}
diff --git a/Gems/Atom/RHI/Code/Source/RHI.Edit/Utils.cpp b/Gems/Atom/RHI/Code/Source/RHI.Edit/Utils.cpp
index 00b5dada69..957c076592 100644
--- a/Gems/Atom/RHI/Code/Source/RHI.Edit/Utils.cpp
+++ b/Gems/Atom/RHI/Code/Source/RHI.Edit/Utils.cpp
@@ -308,7 +308,7 @@ namespace AZ
uint32_t exitCode = 0;
bool timedOut = false;
- const AZStd::sys_time_t maxWaitTimeSeconds = 120;
+ const AZStd::sys_time_t maxWaitTimeSeconds = 240;
const AZStd::sys_time_t startTimeSeconds = AZStd::GetTimeNowSecond();
const AZStd::sys_time_t startTime = AZStd::GetTimeNowTicks();
From 4630c82df0f5280414b01aa5cf884a06df1dd38c Mon Sep 17 00:00:00 2001
From: pappeste
Date: Wed, 28 Apr 2021 14:05:36 -0700
Subject: [PATCH 009/629] Preventing certain projects from showing up in the
project's solution
---
CMakeLists.txt | 62 +++++++++++++++++++++---------------------
cmake/CMakeFiles.cmake | 12 ++++----
2 files changed, 38 insertions(+), 36 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ad5cd9f431..20c964ed06 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -58,50 +58,50 @@ include(cmake/CMakeFiles.cmake)
include(cmake/Projects.cmake)
if(NOT INSTALLED_ENGINE)
+
# Add the rest of the targets
add_subdirectory(Code)
add_subdirectory(Gems)
-else()
- ly_find_o3de_packages()
-endif()
+ add_subdirectory(scripts)
-set(enabled_platforms
+ # SPEC-1417 will investigate and fix this
+ if(NOT PAL_PLATFORM_NAME STREQUAL "Mac")
+ add_subdirectory(Tools/LyTestTools/tests/)
+ add_subdirectory(Tools/RemoteConsole/ly_remote_console/tests/)
+ endif()
+
+ set(enabled_platforms
${PAL_PLATFORM_NAME}
${LY_PAL_TOOLS_ENABLED})
-foreach(restricted_platform ${PAL_RESTRICTED_PLATFORMS})
- if(restricted_platform IN_LIST enabled_platforms)
- add_subdirectory(restricted/${restricted_platform})
- endif()
-endforeach()
+ foreach(restricted_platform ${PAL_RESTRICTED_PLATFORMS})
+ if(restricted_platform IN_LIST enabled_platforms)
+ add_subdirectory(restricted/${restricted_platform})
+ endif()
+ endforeach()
-add_subdirectory(scripts)
+ # Loop over the additional external subdirectories and invoke add_subdirectory on them
+ foreach(external_directory ${LY_EXTERNAL_SUBDIRS})
+ # Hash the extenal_directory name and append it to the Binary Directory section of add_subdirectory
+ # This is to deal with potential situations where multiple external directories has the same last directory name
+ # For example if D:/Company1/RayTracingGem and F:/Company2/Path/RayTracingGem were both added as a subdirectory
+ file(REAL_PATH ${external_directory} full_directory_path)
+ string(SHA256 full_directory_hash ${full_directory_path})
+ # Truncate the full_directory_hash down to 8 characters to avoid hitting the Windows 260 character path limit
+ # when the external subdirectory contains relative paths of significant length
+ string(SUBSTRING ${full_directory_hash} 0 8 full_directory_hash)
+ # Use the last directory as the suffix path to use for the Binary Directory
+ get_filename_component(directory_name ${external_directory} NAME)
+ add_subdirectory(${external_directory} ${CMAKE_BINARY_DIR}/${directory_name}-${full_directory_hash})
+ endforeach()
-# SPEC-1417 will investigate and fix this
-if(NOT PAL_PLATFORM_NAME STREQUAL "Mac")
- add_subdirectory(Tools/LyTestTools/tests/)
- add_subdirectory(Tools/RemoteConsole/ly_remote_console/tests/)
+else()
+ ly_find_o3de_packages()
endif()
################################################################################
# Post-processing
################################################################################
-
-# Loop over the additional external subdirectories and invoke add_subdirectory on them
-foreach(external_directory ${LY_EXTERNAL_SUBDIRS})
- # Hash the extenal_directory name and append it to the Binary Directory section of add_subdirectory
- # This is to deal with potential situations where multiple external directories has the same last directory name
- # For example if D:/Company1/RayTracingGem and F:/Company2/Path/RayTracingGem were both added as a subdirectory
- file(REAL_PATH ${external_directory} full_directory_path)
- string(SHA256 full_directory_hash ${full_directory_path})
- # Truncate the full_directory_hash down to 8 characters to avoid hitting the Windows 260 character path limit
- # when the external subdirectory contains relative paths of significant length
- string(SUBSTRING ${full_directory_hash} 0 8 full_directory_hash)
- # Use the last directory as the suffix path to use for the Binary Directory
- get_filename_component(directory_name ${external_directory} NAME)
- add_subdirectory(${external_directory} ${CMAKE_BINARY_DIR}/${directory_name}-${full_directory_hash})
-endforeach()
-
# The following steps have to be done after all targets are registered:
# 1. generate a settings registry .setreg file for all ly_add_project_dependencies() and ly_add_target_dependencies() calls
# to provide applications with the filenames of gem modules to load
@@ -124,6 +124,6 @@ ly_test_impact_post_step()
if(NOT INSTALLED_ENGINE)
ly_setup_o3de_install()
- # IMPORTANT: must be included last
+ # 7. CPack information (to be included after install)
include(cmake/CPack.cmake)
endif()
diff --git a/cmake/CMakeFiles.cmake b/cmake/CMakeFiles.cmake
index 952f9b5eb8..77c2eb75e1 100644
--- a/cmake/CMakeFiles.cmake
+++ b/cmake/CMakeFiles.cmake
@@ -9,8 +9,10 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#
-# Add all cmake files in a project so they can be handled from within the IDE
-ly_include_cmake_file_list(cmake/cmake_files.cmake)
-add_custom_target(CMakeFiles SOURCES ${ALLFILES})
-ly_source_groups_from_folders("${ALLFILES}")
-unset(ALLFILES)
\ No newline at end of file
+if(NOT INSTALLED_ENGINE)
+ # Add all cmake files in a project so they can be handled from within the IDE
+ ly_include_cmake_file_list(cmake/cmake_files.cmake)
+ add_custom_target(CMakeFiles SOURCES ${ALLFILES})
+ ly_source_groups_from_folders("${ALLFILES}")
+ unset(ALLFILES)
+endif()
\ No newline at end of file
From 12d5288e32ea98420d2585498e2d5fb02c731963 Mon Sep 17 00:00:00 2001
From: puvvadar
Date: Wed, 28 Apr 2021 15:15:14 -0700
Subject: [PATCH 010/629] Add codegen for BehaviorContext binding of RPC Send
functions
---
.../Source/AutoGen/AutoComponent_Header.jinja | 1 +
.../Source/AutoGen/AutoComponent_Source.jinja | 34 +++++++++++++++++++
...tionPlayerInputComponent.AutoComponent.xml | 6 ++--
3 files changed, 38 insertions(+), 3 deletions(-)
diff --git a/Gems/Multiplayer/Code/Source/AutoGen/AutoComponent_Header.jinja b/Gems/Multiplayer/Code/Source/AutoGen/AutoComponent_Header.jinja
index f5774b07c0..b2d2792e9b 100644
--- a/Gems/Multiplayer/Code/Source/AutoGen/AutoComponent_Header.jinja
+++ b/Gems/Multiplayer/Code/Source/AutoGen/AutoComponent_Header.jinja
@@ -416,6 +416,7 @@ namespace {{ Component.attrib['Namespace'] }}
static void Reflect(AZ::ReflectContext* context);
static void ReflectToEditContext(AZ::ReflectContext* context);
+ static void ReflectToBehaviorContext(AZ::ReflectContext* context);
static void GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided);
static void GetRequiredServices(AZ::ComponentDescriptor::DependencyArrayType& required);
static void GetDependentServices(AZ::ComponentDescriptor::DependencyArrayType& dependent);
diff --git a/Gems/Multiplayer/Code/Source/AutoGen/AutoComponent_Source.jinja b/Gems/Multiplayer/Code/Source/AutoGen/AutoComponent_Source.jinja
index d6907876e1..f2d6ca71c6 100644
--- a/Gems/Multiplayer/Code/Source/AutoGen/AutoComponent_Source.jinja
+++ b/Gems/Multiplayer/Code/Source/AutoGen/AutoComponent_Source.jinja
@@ -315,6 +315,22 @@ void {{ ClassName }}::{{ UpperFirst(Property.attrib['Name']) }}({{ ', '.join(par
{% endmacro %}
{#
+#}
+{% macro ReflectRpcInvocations(Component, ClassName, InvokeFrom, HandleOn) %}
+{% call(Property) AutoComponentMacros.ParseRemoteProcedures(Component, InvokeFrom, HandleOn) %}
+{% if Property.attrib['CanScript']|booleanTrue == true %}
+{% set paramNames = [] %}
+{% set paramTypes = [] %}
+{% set paramDefines = [] %}
+{{ AutoComponentMacros.ParseRpcParams(Property, paramNames, paramTypes, paramDefines) }}
+ ->Method("{{ UpperFirst(Property.attrib['Name']) }}", [](const {{ ClassName }}* self, {{ ', '.join(paramDefines) }}) {
+ self->m_controller->{{ UpperFirst(Property.attrib['Name']) }}({{ ', '.join(paramNames) }});
+ })
+{% endif %}
+{% endcall %}
+{% endmacro %}
+{#
+
#}
{% macro DeclareRpcHandleCases(Component, ComponentDerived, InvokeFrom, HandleOn, ValidationFunction) %}
{% call(Property) AutoComponentMacros.ParseRemoteProcedures(Component, InvokeFrom, HandleOn) %}
@@ -1114,6 +1130,7 @@ namespace {{ Component.attrib['Namespace'] }}
{{ DefineArchetypePropertyReflection(Component, ComponentBaseName)|indent(16) }};
}
ReflectToEditContext(context);
+ ReflectToBehaviorContext(context);
}
void {{ ComponentBaseName }}::{{ ComponentBaseName }}::ReflectToEditContext(AZ::ReflectContext* context)
@@ -1138,6 +1155,23 @@ namespace {{ Component.attrib['Namespace'] }}
}
}
+ void {{ ComponentBaseName }}::{{ ComponentBaseName }}::ReflectToBehaviorContext(AZ::ReflectContext* context)
+ {
+ AZ::BehaviorContext* behaviorContext = azrtti_cast(context);
+ if (behaviorContext)
+ {
+ behaviorContext->Class<{{ ComponentName }}>("{{ ComponentName }}")
+ ->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Common)
+ ->Attribute(AZ::Script::Attributes::Category, "Multiplayer")
+ ->Attribute(AZ::Script::Attributes::Module, "Multiplayer")
+ {{ ReflectRpcInvocations(Component, ComponentName, 'Server', 'Authority')|indent(4) -}}
+ {{ ReflectRpcInvocations(Component, ComponentName, 'Autonomous', 'Authority')|indent(4) -}}
+ {{ ReflectRpcInvocations(Component, ComponentName, 'Authority', 'Autonomous')|indent(4) -}}
+ {{ ReflectRpcInvocations(Component, ComponentName, 'Authority', 'Client')|indent(4) -}}
+ ;
+ }
+ }
+
void {{ ComponentBaseName }}::{{ ComponentBaseName }}::GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided)
{
provided.push_back(AZ_CRC_CE("{{ ComponentName }}Service"));
diff --git a/Gems/Multiplayer/Code/Source/AutoGen/LocalPredictionPlayerInputComponent.AutoComponent.xml b/Gems/Multiplayer/Code/Source/AutoGen/LocalPredictionPlayerInputComponent.AutoComponent.xml
index d38ebbb1b8..336909a102 100644
--- a/Gems/Multiplayer/Code/Source/AutoGen/LocalPredictionPlayerInputComponent.AutoComponent.xml
+++ b/Gems/Multiplayer/Code/Source/AutoGen/LocalPredictionPlayerInputComponent.AutoComponent.xml
@@ -18,18 +18,18 @@
-
+
-
+
-
+
From 9681eb4a4d811933df309c18d32779f60fbfc321 Mon Sep 17 00:00:00 2001
From: pappeste
Date: Fri, 30 Apr 2021 14:20:15 -0700
Subject: [PATCH 011/629] Improving projects shown in the IDE for projects
building from installed sdk
---
cmake/3rdParty.cmake | 9 ++++++---
cmake/Install.cmake | 12 ++++++++++--
cmake/LYPython.cmake | 9 +++++----
cmake/cmake_files.cmake | 1 +
4 files changed, 22 insertions(+), 9 deletions(-)
diff --git a/cmake/3rdParty.cmake b/cmake/3rdParty.cmake
index 7385f34e5a..eb11404237 100644
--- a/cmake/3rdParty.cmake
+++ b/cmake/3rdParty.cmake
@@ -313,6 +313,9 @@ list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/3rdParty)
ly_get_absolute_pal_filename(pal_dir ${CMAKE_CURRENT_LIST_DIR}/3rdParty/Platform/${PAL_PLATFORM_NAME})
list(APPEND CMAKE_MODULE_PATH ${pal_dir})
-ly_include_cmake_file_list(cmake/3rdParty/cmake_files.cmake)
-ly_get_absolute_pal_filename(pal_3rdparty_dir ${CMAKE_CURRENT_SOURCE_DIR}/cmake/3rdParty/Platform/${PAL_PLATFORM_NAME})
-ly_include_cmake_file_list(${pal_3rdparty_dir}/cmake_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake)
+if(NOT INSTALLED_ENGINE)
+ # Add the 3rdParty cmake files to the IDE
+ ly_include_cmake_file_list(cmake/3rdParty/cmake_files.cmake)
+ ly_get_absolute_pal_filename(pal_3rdparty_dir ${CMAKE_CURRENT_SOURCE_DIR}/cmake/3rdParty/Platform/${PAL_PLATFORM_NAME})
+ ly_include_cmake_file_list(${pal_3rdparty_dir}/cmake_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake)
+endif()
\ No newline at end of file
diff --git a/cmake/Install.cmake b/cmake/Install.cmake
index b56f5ced85..73a3273dfa 100644
--- a/cmake/Install.cmake
+++ b/cmake/Install.cmake
@@ -9,5 +9,13 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#
-ly_get_absolute_pal_filename(pal_dir ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Platform/${PAL_PLATFORM_NAME})
-include(${pal_dir}/Install_${PAL_PLATFORM_NAME_LOWERCASE}.cmake)
\ No newline at end of file
+if(NOT INSTALLED_ENGINE)
+ ly_get_absolute_pal_filename(pal_dir ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Platform/${PAL_PLATFORM_NAME})
+ include(${pal_dir}/Install_${PAL_PLATFORM_NAME_LOWERCASE}.cmake)
+else()
+
+ # Provide empty implementation so ly_add_target continues working
+ function(ly_install_target ly_install_target_NAME)
+ endfunction()
+
+endif()
\ No newline at end of file
diff --git a/cmake/LYPython.cmake b/cmake/LYPython.cmake
index ff5132097c..546d5f66db 100644
--- a/cmake/LYPython.cmake
+++ b/cmake/LYPython.cmake
@@ -265,10 +265,11 @@ if (NOT CMAKE_SCRIPT_MODE_FILE)
# we also need to make sure any custom packages are installed.
# this costs a moment of time though, so we'll only do it based on stamp files.
-
- ly_pip_install_local_package_editable(${LY_ROOT_FOLDER}/Tools/LyTestTools ly-test-tools)
- ly_pip_install_local_package_editable(${LY_ROOT_FOLDER}/Tools/RemoteConsole/ly_remote_console ly-remote-console)
- ly_pip_install_local_package_editable(${LY_ROOT_FOLDER}/AutomatedTesting/Gem/PythonTests/EditorPythonTestTools editor-python-test-tools)
+ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND NOT INSTALLED_ENGINE)
+ ly_pip_install_local_package_editable(${LY_ROOT_FOLDER}/Tools/LyTestTools ly-test-tools)
+ ly_pip_install_local_package_editable(${LY_ROOT_FOLDER}/Tools/RemoteConsole/ly_remote_console ly-remote-console)
+ ly_pip_install_local_package_editable(${LY_ROOT_FOLDER}/AutomatedTesting/Gem/PythonTests/EditorPythonTestTools editor-python-test-tools)
+ endif()
endif()
endif()
diff --git a/cmake/cmake_files.cmake b/cmake/cmake_files.cmake
index 5045a42cbe..bd5976b494 100644
--- a/cmake/cmake_files.cmake
+++ b/cmake/cmake_files.cmake
@@ -12,6 +12,7 @@
set(FILES
3rdParty.cmake
3rdPartyPackages.cmake
+ CMakeFiles.cmake
CommandExecution.cmake
Configurations.cmake
CPack.cmake
From d046bae20babb0c876a52e61cd60956270777c1f Mon Sep 17 00:00:00 2001
From: pappeste
Date: Fri, 30 Apr 2021 18:06:03 -0700
Subject: [PATCH 012/629] removing duplicate message
---
cmake/Platform/Windows/Configurations_windows.cmake | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/cmake/Platform/Windows/Configurations_windows.cmake b/cmake/Platform/Windows/Configurations_windows.cmake
index 6ab376ed0b..9ef535e455 100644
--- a/cmake/Platform/Windows/Configurations_windows.cmake
+++ b/cmake/Platform/Windows/Configurations_windows.cmake
@@ -106,7 +106,7 @@ if(NOT CMAKE_GENERATOR MATCHES "Visual Studio")
endforeach()
if(NOT version VERSION_EQUAL CMAKE_SYSTEM_VERSION)
- message(STATUS "Selecting Windows SDK version ${version} to target Windows ${CMAKE_SYSTEM_VERSION}.")
+ message(STATUS "Using Windows SDK version ${version} to target Windows ${CMAKE_SYSTEM_VERSION}")
endif()
ly_set(CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION "${version}")
@@ -116,4 +116,3 @@ endif()
if(NOT CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION MATCHES "10.0")
message(FATAL_ERROR "Unsupported version of Windows SDK ${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}, specify \"-DCMAKE_SYSTEM_VERSION=10.0\" when invoking cmake")
endif()
-message(STATUS "Using Windows target SDK ${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}")
From a905f38cc4c2513ee018523cf86fc6e247d5043a Mon Sep 17 00:00:00 2001
From: pappeste
Date: Fri, 30 Apr 2021 18:06:30 -0700
Subject: [PATCH 013/629] qt deploy
---
cmake/Platform/Common/Install_common.cmake | 46 ++++++++++++++--------
1 file changed, 29 insertions(+), 17 deletions(-)
diff --git a/cmake/Platform/Common/Install_common.cmake b/cmake/Platform/Common/Install_common.cmake
index fb3a7b1b09..dac12d8a50 100644
--- a/cmake/Platform/Common/Install_common.cmake
+++ b/cmake/Platform/Common/Install_common.cmake
@@ -13,6 +13,10 @@ set(CMAKE_INSTALL_MESSAGE NEVER) # Simplify messages to reduce output noise
ly_set(LY_DEFAULT_INSTALL_COMPONENT "Core")
+file(RELATIVE_PATH runtime_output_directory ${CMAKE_BINARY_DIR} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
+file(RELATIVE_PATH library_output_directory ${CMAKE_BINARY_DIR} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
+set(install_output_folder "${CMAKE_INSTALL_PREFIX}/${runtime_output_directory}/${PAL_PLATFORM_NAME}/$")
+
#! ly_install_target: registers the target to be installed by cmake install.
#
# \arg:NAME name of the target
@@ -47,13 +51,11 @@ function(ly_install_target ly_install_target_NAME)
if(target_runtime_output_directory)
file(RELATIVE_PATH target_runtime_output_subdirectory ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} ${target_runtime_output_directory})
endif()
- file(RELATIVE_PATH runtime_output_directory ${CMAKE_BINARY_DIR} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
get_target_property(target_library_output_directory ${ly_install_target_NAME} LIBRARY_OUTPUT_DIRECTORY)
if(target_library_output_directory)
file(RELATIVE_PATH target_library_output_subdirectory ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} ${target_library_output_directory})
endif()
- file(RELATIVE_PATH library_output_directory ${CMAKE_BINARY_DIR} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
install(
TARGETS ${ly_install_target_NAME}
@@ -85,6 +87,28 @@ function(ly_install_target ly_install_target_NAME)
COMPONENT ${ly_install_target_COMPONENT}
)
+ get_target_property(target_type ${ly_install_target_NAME} TYPE)
+ set(runtime_dependencies_list SHARED MODULE EXECUTABLE APPLICATION) # Only have to deploy for dlls/exes
+ if(target_type IN_LIST runtime_dependencies_list)
+ get_property(has_qt_dependency GLOBAL PROPERTY LY_DETECT_QT_DEPENDENCY_${ly_install_target_NAME})
+ if(has_qt_dependency)
+ # Qt deploy needs to be done after the binary is copied to the output, so we do a install(CODE) which effectively
+ # puts it as a postbuild step of the "install" target. Binaries are copied at that point.
+ if(NOT EXISTS ${WINDEPLOYQT_EXECUTABLE})
+ message(FATAL_ERROR "Qt deploy executable not found: ${WINDEPLOYQT_EXECUTABLE}")
+ endif()
+ set(target_output "${install_output_folder}/${target_runtime_output_subdirectory}/$")
+ install(CODE
+"execute_process(COMMAND \"${WINDEPLOYQT_EXECUTABLE}\" --verbose 0 --no-compiler-runtime \"${target_output}\" ERROR_VARIABLE deploy_error RESULT_VARIABLE deploy_result)
+if (NOT \${deploy_result} EQUAL 0)
+ if(NOT deploy_result MATCHES \"does not seem to be a Qt executable\" )
+ message(SEND_ERROR \"Deploying qt for ${target_output} returned \${result}: \${deploy_error}\")
+ endif()
+endif()
+")
+ endif()
+ endif()
+
endfunction()
@@ -310,8 +334,8 @@ function(ly_setup_others)
# Registry
install(DIRECTORY
- ${CMAKE_CURRENT_BINARY_DIR}/bin/$/Registry
- DESTINATION ./bin/$
+ ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/$/Registry
+ DESTINATION ./${runtime_output_directory}/${PAL_PLATFORM_NAME}/$
COMPONENT ${LY_DEFAULT_INSTALL_COMPONENT}
)
install(DIRECTORY
@@ -329,8 +353,7 @@ function(ly_setup_others)
# Gem Source Assets and Registry
# Find all gem directories relative to the CMake Source Dir
- file(
- GLOB_RECURSE
+ file(GLOB_RECURSE
gems_assets_path
LIST_DIRECTORIES TRUE
RELATIVE "${CMAKE_SOURCE_DIR}/"
@@ -350,17 +373,6 @@ function(ly_setup_others)
endif()
endforeach()
-
- # Qt Binaries
- set(QT_BIN_DIRS bearer iconengines imageformats platforms styles translations)
- foreach(qt_dir ${QT_BIN_DIRS})
- install(DIRECTORY
- ${CMAKE_CURRENT_BINARY_DIR}/bin/$/${qt_dir}
- DESTINATION ./bin/$
- COMPONENT ${LY_DEFAULT_INSTALL_COMPONENT}
- )
- endforeach()
-
# Templates
install(DIRECTORY
${CMAKE_SOURCE_DIR}/Templates
From 2f4120cdfbbd736d18fdc5f3187a94f6640ed28b Mon Sep 17 00:00:00 2001
From: puvvadar
Date: Mon, 3 May 2021 13:07:11 -0700
Subject: [PATCH 014/629] Update Ctrl+G logic to account for prefab processing
status and timing
---
.../PrefabEditorEntityOwnershipInterface.h | 2 +
.../PrefabEditorEntityOwnershipService.cpp | 5 ++
.../PrefabEditorEntityOwnershipService.h | 2 +
Gems/Multiplayer/Code/CMakeLists.txt | 1 +
.../Code/Include/IMultiplayerTools.h | 39 ++++++++++++
.../MultiplayerEditorSystemComponent.cpp | 63 ++++++++++++-------
.../Editor/MultiplayerEditorSystemComponent.h | 12 +++-
.../Code/Source/MultiplayerToolsModule.cpp | 35 ++++-------
.../Code/Source/MultiplayerToolsModule.h | 27 ++++++++
.../Pipeline/NetworkPrefabProcessor.cpp | 3 +
.../Code/multiplayer_tools_files.cmake | 1 +
11 files changed, 142 insertions(+), 48 deletions(-)
create mode 100644 Gems/Multiplayer/Code/Include/IMultiplayerTools.h
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipInterface.h b/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipInterface.h
index 19c236f509..4476876b59 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipInterface.h
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipInterface.h
@@ -46,6 +46,8 @@ namespace AzToolsFramework
virtual Prefab::InstanceOptionalReference GetRootPrefabInstance() = 0;
+ virtual const AZStd::vector>& GetPlayInEditorAssetData() = 0;
+
virtual bool LoadFromStream(AZ::IO::GenericStream& stream, AZStd::string_view filename) = 0;
virtual bool SaveToStream(AZ::IO::GenericStream& stream, AZStd::string_view filename) = 0;
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipService.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipService.cpp
index 81233069a9..e81d6bf08e 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipService.cpp
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipService.cpp
@@ -321,6 +321,11 @@ namespace AzToolsFramework
return *m_rootInstance;
}
+ const AZStd::vector>& PrefabEditorEntityOwnershipService::GetPlayInEditorAssetData()
+ {
+ return m_playInEditorData.m_assets;
+ }
+
void PrefabEditorEntityOwnershipService::OnEntityRemoved(AZ::EntityId entityId)
{
AzFramework::SliceEntityRequestBus::MultiHandler::BusDisconnect(entityId);
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipService.h b/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipService.h
index 9c483e61c5..cf62220e67 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipService.h
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipService.h
@@ -195,6 +195,8 @@ namespace AzToolsFramework
AZ::IO::PathView filePath, Prefab::InstanceOptionalReference instanceToParentUnder) override;
Prefab::InstanceOptionalReference GetRootPrefabInstance() override;
+
+ const AZStd::vector>& GetPlayInEditorAssetData() override;
//////////////////////////////////////////////////////////////////////////
void OnEntityRemoved(AZ::EntityId entityId);
diff --git a/Gems/Multiplayer/Code/CMakeLists.txt b/Gems/Multiplayer/Code/CMakeLists.txt
index 4eeee15c47..46f56ef315 100644
--- a/Gems/Multiplayer/Code/CMakeLists.txt
+++ b/Gems/Multiplayer/Code/CMakeLists.txt
@@ -119,6 +119,7 @@ if (PAL_TRAIT_BUILD_HOST_TOOLS)
BUILD_DEPENDENCIES
PRIVATE
Gem::Multiplayer.Editor.Static
+ Gem::Multiplayer.Tools
)
endif()
diff --git a/Gems/Multiplayer/Code/Include/IMultiplayerTools.h b/Gems/Multiplayer/Code/Include/IMultiplayerTools.h
new file mode 100644
index 0000000000..c621808f7a
--- /dev/null
+++ b/Gems/Multiplayer/Code/Include/IMultiplayerTools.h
@@ -0,0 +1,39 @@
+/*
+* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
+* its licensors.
+*
+* For complete copyright and license terms please see the LICENSE at the root of this
+* distribution (the "License"). All use of this software is governed by the License,
+* or, if provided, by the license below or the license accompanying this file. Do not
+* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*
+*/
+
+#pragma once
+
+#include
+
+namespace Multiplayer
+{
+ //! IMultiplayer provides insight into the Multiplayer session and its Agents
+ class IMultiplayerTools
+ {
+ public:
+ // NetworkPrefabProcessor is the only class that should be setting process network prefab status
+ friend class NetworkPrefabProcessor;
+
+ AZ_RTTI(IMultiplayerTools, "{E8A80EAB-29CB-4E3B-A0B2-FFCB37060FB0}");
+
+ virtual ~IMultiplayerTools() = default;
+
+ //! Returns if network prefab processing has created currently active or pending spawnables
+ //! @return If network prefab processing has created currently active or pending spawnables
+ virtual bool DidProcessNetworkPrefabs() = 0;
+
+ private:
+ //! Sets if network prefab processing has created currently active or pending spawnables
+ //! @param didProcessNetPrefabs if network prefab processing has created currently active or pending spawnables
+ virtual void SetDidProcessNetworkPrefabs(bool didProcessNetPrefabs) = 0;
+ };
+}
diff --git a/Gems/Multiplayer/Code/Source/Editor/MultiplayerEditorSystemComponent.cpp b/Gems/Multiplayer/Code/Source/Editor/MultiplayerEditorSystemComponent.cpp
index aec3e7870f..0850b858a2 100644
--- a/Gems/Multiplayer/Code/Source/Editor/MultiplayerEditorSystemComponent.cpp
+++ b/Gems/Multiplayer/Code/Source/Editor/MultiplayerEditorSystemComponent.cpp
@@ -10,12 +10,14 @@
*
*/
+#include
#include
#include
#include
#include
#include
#include
+#include
namespace Multiplayer
{
@@ -57,12 +59,14 @@ namespace Multiplayer
void MultiplayerEditorSystemComponent::Activate()
{
+ AzFramework::GameEntityContextEventBus::Handler::BusConnect();
AzToolsFramework::EditorEvents::Bus::Handler::BusConnect();
}
void MultiplayerEditorSystemComponent::Deactivate()
{
AzToolsFramework::EditorEvents::Bus::Handler::BusDisconnect();
+ AzFramework::GameEntityContextEventBus::Handler::BusDisconnect();
}
void MultiplayerEditorSystemComponent::NotifyRegisterViews()
@@ -77,11 +81,42 @@ namespace Multiplayer
{
switch (event)
{
- case eNotify_OnBeginGameMode:
- {
+ case eNotify_OnQuit:
+ AZ_Warning("Multiplayer Editor", m_editor != nullptr, "Multiplayer Editor received On Quit without an Editor pointer.");
+ if (m_editor)
+ {
+ m_editor->UnregisterNotifyListener(this);
+ m_editor = nullptr;
+ }
+ [[fallthrough]];
+ case eNotify_OnEndGameMode:
+ AZ::TickBus::Handler::BusDisconnect();
+ // Kill the configured server if it's active
+ if (m_serverProcess)
+ {
+ m_serverProcess->TerminateProcess(0);
+ m_serverProcess = nullptr;
+ }
+ break;
+ }
+ }
+
+ void MultiplayerEditorSystemComponent::OnGameEntitiesStarted()
+ {
+ // BeginGameMode and Prefab Processing have completed at this point
+ IMultiplayerTools* mpTools = AZ::Interface::Get();
+ if (editorsv_enabled && mpTools != nullptr && mpTools->DidProcessNetworkPrefabs())
+ {
AZ::TickBus::Handler::BusConnect();
- if (editorsv_enabled)
+ auto prefabEditorEntityOwnershipInterface = AZ::Interface::Get();
+ if (!prefabEditorEntityOwnershipInterface)
+ {
+ AZ_Error("MultiplayerEditor", prefabEditorEntityOwnershipInterface != nullptr, "PrefabEditorEntityOwnershipInterface unavailable");
+ }
+ const AZStd::vector>& assetData = prefabEditorEntityOwnershipInterface->GetPlayInEditorAssetData();
+
+ if (assetData.size() > 0)
{
// Assemble the server's path
AZ::CVarFixedString serverProcess = editorsv_process;
@@ -111,33 +146,13 @@ namespace Multiplayer
// Start the configured server if it's available
AzFramework::ProcessLauncher::ProcessLaunchInfo processLaunchInfo;
- processLaunchInfo.m_commandlineParameters =
- AZStd::string::format("\"%s\"", serverPath.c_str());
+ processLaunchInfo.m_commandlineParameters = AZStd::string::format("\"%s\"", serverPath.c_str());
processLaunchInfo.m_showWindow = true;
processLaunchInfo.m_processPriority = AzFramework::ProcessPriority::PROCESSPRIORITY_NORMAL;
m_serverProcess = AzFramework::ProcessWatcher::LaunchProcess(
processLaunchInfo, AzFramework::ProcessCommunicationType::COMMUNICATOR_TYPE_NONE);
}
- break;
- }
- case eNotify_OnQuit:
- AZ_Warning("Multiplayer Editor", m_editor != nullptr, "Multiplayer Editor received On Quit without an Editor pointer.");
- if (m_editor)
- {
- m_editor->UnregisterNotifyListener(this);
- m_editor = nullptr;
- }
- [[fallthrough]];
- case eNotify_OnEndGameMode:
- AZ::TickBus::Handler::BusDisconnect();
- // Kill the configured server if it's active
- if (m_serverProcess)
- {
- m_serverProcess->TerminateProcess(0);
- m_serverProcess = nullptr;
- }
- break;
}
}
diff --git a/Gems/Multiplayer/Code/Source/Editor/MultiplayerEditorSystemComponent.h b/Gems/Multiplayer/Code/Source/Editor/MultiplayerEditorSystemComponent.h
index 8c18a2e57a..31ecdf83a3 100644
--- a/Gems/Multiplayer/Code/Source/Editor/MultiplayerEditorSystemComponent.h
+++ b/Gems/Multiplayer/Code/Source/Editor/MultiplayerEditorSystemComponent.h
@@ -19,6 +19,7 @@
#include
#include
+#include
#include
#include
@@ -34,6 +35,7 @@ namespace Multiplayer
class MultiplayerEditorSystemComponent final
: public AZ::Component
, private AZ::TickBus::Handler
+ , private AzFramework::GameEntityContextEventBus::Handler
, private AzToolsFramework::EditorEvents::Bus::Handler
, private IEditorNotifyListener
{
@@ -66,8 +68,16 @@ namespace Multiplayer
void OnTick(float deltaTime, AZ::ScriptTimePoint time) override;
int GetTickOrder() override;
//! @}
- //!
+
+ //! EditorEvents::Handler overrides
+ //! @{
void OnEditorNotifyEvent(EEditorNotifyEvent event) override;
+ //! @}
+
+ //! GameEntityContextEventBus::Handler overrides
+ //! @{
+ void OnGameEntitiesStarted() override;
+ //! @}
IEditor* m_editor = nullptr;
AzFramework::ProcessWatcher* m_serverProcess = nullptr;
diff --git a/Gems/Multiplayer/Code/Source/MultiplayerToolsModule.cpp b/Gems/Multiplayer/Code/Source/MultiplayerToolsModule.cpp
index 5a223d6214..a5df3c1dc5 100644
--- a/Gems/Multiplayer/Code/Source/MultiplayerToolsModule.cpp
+++ b/Gems/Multiplayer/Code/Source/MultiplayerToolsModule.cpp
@@ -18,32 +18,21 @@
namespace Multiplayer
{
- //! Multiplayer Tools system component provides serialize context reflection for tools-only systems.
- class MultiplayerToolsSystemComponent final
- : public AZ::Component
+
+ void MultiplayerToolsSystemComponent::Reflect(AZ::ReflectContext* context)
{
- public:
- AZ_COMPONENT(MultiplayerToolsSystemComponent, "{65AF5342-0ECE-423B-B646-AF55A122F72B}");
+ NetworkPrefabProcessor::Reflect(context);
+ }
- static void Reflect(AZ::ReflectContext* context)
- {
- NetworkPrefabProcessor::Reflect(context);
- }
+ bool MultiplayerToolsSystemComponent::DidProcessNetworkPrefabs()
+ {
+ return m_didProcessNetPrefabs;
+ }
- MultiplayerToolsSystemComponent() = default;
- ~MultiplayerToolsSystemComponent() override = default;
-
- /// AZ::Component overrides.
- void Activate() override
- {
-
- }
-
- void Deactivate() override
- {
-
- }
- };
+ void MultiplayerToolsSystemComponent::SetDidProcessNetworkPrefabs(bool didProcessNetPrefabs)
+ {
+ m_didProcessNetPrefabs = didProcessNetPrefabs;
+ }
MultiplayerToolsModule::MultiplayerToolsModule()
: AZ::Module()
diff --git a/Gems/Multiplayer/Code/Source/MultiplayerToolsModule.h b/Gems/Multiplayer/Code/Source/MultiplayerToolsModule.h
index 823bd63a1d..82d0415c5a 100644
--- a/Gems/Multiplayer/Code/Source/MultiplayerToolsModule.h
+++ b/Gems/Multiplayer/Code/Source/MultiplayerToolsModule.h
@@ -12,10 +12,37 @@
#pragma once
+#include
#include
+#include
namespace Multiplayer
{
+ class MultiplayerToolsSystemComponent final
+ : public AZ::Component
+ , public IMultiplayerTools
+ {
+ public:
+ AZ_COMPONENT(MultiplayerToolsSystemComponent, "{65AF5342-0ECE-423B-B646-AF55A122F72B}");
+
+ static void Reflect(AZ::ReflectContext* context);
+
+ MultiplayerToolsSystemComponent() = default;
+ ~MultiplayerToolsSystemComponent() override = default;
+
+ /// AZ::Component overrides.
+ void Activate() override {};
+
+ void Deactivate() override {};
+
+ bool DidProcessNetworkPrefabs() override;
+
+ private:
+ void SetDidProcessNetworkPrefabs(bool didProcessNetPrefabs) override;
+
+ bool m_didProcessNetPrefabs = false;
+ };
+
class MultiplayerToolsModule
: public AZ::Module
{
diff --git a/Gems/Multiplayer/Code/Source/Pipeline/NetworkPrefabProcessor.cpp b/Gems/Multiplayer/Code/Source/Pipeline/NetworkPrefabProcessor.cpp
index 2006272135..8528b3d564 100644
--- a/Gems/Multiplayer/Code/Source/Pipeline/NetworkPrefabProcessor.cpp
+++ b/Gems/Multiplayer/Code/Source/Pipeline/NetworkPrefabProcessor.cpp
@@ -18,6 +18,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -29,6 +30,8 @@ namespace Multiplayer
void NetworkPrefabProcessor::Process(PrefabProcessorContext& context)
{
+ IMultiplayerTools* mpTools = AZ::Interface::Get();
+ mpTools->SetDidProcessNetworkPrefabs(false);
context.ListPrefabs([&context](AZStd::string_view prefabName, PrefabDom& prefab) {
ProcessPrefab(context, prefabName, prefab);
});
diff --git a/Gems/Multiplayer/Code/multiplayer_tools_files.cmake b/Gems/Multiplayer/Code/multiplayer_tools_files.cmake
index 1be02fd999..12f12479ba 100644
--- a/Gems/Multiplayer/Code/multiplayer_tools_files.cmake
+++ b/Gems/Multiplayer/Code/multiplayer_tools_files.cmake
@@ -10,6 +10,7 @@
#
set(FILES
+ Include/IMultiplayerTools.h
Source/Multiplayer_precompiled.cpp
Source/Multiplayer_precompiled.h
Source/Pipeline/NetworkPrefabProcessor.cpp
From ed17d01028d1a582df72e7149bf1a46b907430e1 Mon Sep 17 00:00:00 2001
From: pappeste
Date: Mon, 3 May 2021 17:10:40 -0700
Subject: [PATCH 015/629] making the runtime_dependencies a function so we can
reuse internal functions for the install
---
CMakeLists.txt | 3 +-
.../Common/RuntimeDependencies_common.cmake | 82 ++++++++--------
.../iOS/RuntimeDependencies_ios.cmake | 94 ++++++++++---------
3 files changed, 94 insertions(+), 85 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2504bd625d..bd55e91e08 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -36,6 +36,7 @@ include(cmake/GeneralSettings.cmake)
include(cmake/FileUtil.cmake)
include(cmake/PAL.cmake)
include(cmake/PALTools.cmake)
+include(cmake/RuntimeDependencies.cmake)
include(cmake/Install.cmake)
include(cmake/Configurations.cmake) # Requires to be after PAL so we get platform variable definitions
include(cmake/Dependencies.cmake)
@@ -117,7 +118,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
endif()
# 4. inject runtime dependencies to the targets. We need to do this after (1) since we are going to walk through
# the dependencies
-include(cmake/RuntimeDependencies.cmake)
+ly_delayed_generate_runtime_dependencies()
# 5. Perform test impact framework post steps once all of the targets have been enumerated
ly_test_impact_post_step()
# 6. Generate the O3DE find file and setup install locations for scripts, tools, assets etc., required by the engine
diff --git a/cmake/Platform/Common/RuntimeDependencies_common.cmake b/cmake/Platform/Common/RuntimeDependencies_common.cmake
index 6ac5215a01..859d1d21e3 100644
--- a/cmake/Platform/Common/RuntimeDependencies_common.cmake
+++ b/cmake/Platform/Common/RuntimeDependencies_common.cmake
@@ -10,7 +10,7 @@
#
set(LY_COPY_PERMISSIONS "OWNER_READ OWNER_WRITE OWNER_EXECUTE")
-set(LY_TARGET_TYPES_WITH_RUNTIME_OUTPUTS MODULE_LIBRARY SHARED_LIBRARY EXECUTABLE)
+set(LY_TARGET_TYPES_WITH_RUNTIME_OUTPUTS MODULE_LIBRARY SHARED_LIBRARY EXECUTABLE APPLICATION)
# There are several runtime dependencies to handle:
# 1. Dependencies to 3rdparty libraries. This involves copying IMPORTED_LOCATION to the folder where the target is.
@@ -183,7 +183,7 @@ function(ly_get_runtime_dependency_command ly_RUNTIME_COMMAND ly_TARGET)
# To support platforms where the binaries end in different places, we are going to assume that all dependencies,
# including the ones we are building, need to be copied over. However, we add a check to prevent copying something
# over itself. This detection cannot happen now because the target we are copying for varies.
- set(runtime_command "ly_copy(\"${source_file}\" \"$${target_directory}\")\n")
+ set(runtime_command "ly_copy(\"${source_file}\" \"@target_file_dir@${target_directory}\")\n")
# Tentative optimization: this is an attempt to solve the first "if" at generation time, making the runtime_dependencies
# file smaller and faster to run. In platforms where the built target and the dependencies targets end up in the same
@@ -206,47 +206,51 @@ function(ly_get_runtime_dependency_command ly_RUNTIME_COMMAND ly_TARGET)
endfunction()
-get_property(additional_module_paths GLOBAL PROPERTY LY_ADDITIONAL_MODULE_PATH)
-list(APPEND CMAKE_MODULE_PATH ${additional_module_paths})
+function(ly_delayed_generate_runtime_dependencies)
-get_property(all_targets GLOBAL PROPERTY LY_ALL_TARGETS)
-foreach(target IN LISTS all_targets)
+ get_property(additional_module_paths GLOBAL PROPERTY LY_ADDITIONAL_MODULE_PATH)
+ list(APPEND CMAKE_MODULE_PATH ${additional_module_paths})
- # Exclude targets that dont produce runtime outputs
- get_target_property(target_type ${target} TYPE)
- if(NOT target_type IN_LIST LY_TARGET_TYPES_WITH_RUNTIME_OUTPUTS)
- continue()
- endif()
+ get_property(all_targets GLOBAL PROPERTY LY_ALL_TARGETS)
+ foreach(target IN LISTS all_targets)
- unset(runtime_dependencies)
- set(runtime_commands "
-function(ly_copy source_file target_directory)
- get_filename_component(target_filename \"\${source_file}\" NAME)
- if(NOT \"\${source_file}\" STREQUAL \"\${target_directory}/\${target_filename}\")
- if(NOT EXISTS \"\${target_directory}\")
- file(MAKE_DIRECTORY \"\${target_directory}\")
+ # Exclude targets that dont produce runtime outputs
+ get_target_property(target_type ${target} TYPE)
+ if(NOT target_type IN_LIST LY_TARGET_TYPES_WITH_RUNTIME_OUTPUTS)
+ continue()
endif()
- if(\"\${source_file}\" IS_NEWER_THAN \"\${target_directory}/\${target_filename}\")
- file(LOCK \"\${target_directory}/\${target_filename}.lock\" GUARD FUNCTION TIMEOUT 30)
- file(COPY \"\${source_file}\" DESTINATION \"\${target_directory}\" FILE_PERMISSIONS ${LY_COPY_PERMISSIONS})
- endif()
- endif()
-endfunction()
-\n")
- ly_get_runtime_dependencies(runtime_dependencies ${target})
- foreach(runtime_dependency ${runtime_dependencies})
- unset(runtime_command)
- ly_get_runtime_dependency_command(runtime_command ${runtime_dependency})
- string(APPEND runtime_commands ${runtime_command})
+ unset(runtime_dependencies)
+ set(runtime_commands "
+ function(ly_copy source_file target_directory)
+ get_filename_component(target_filename \"\${source_file}\" NAME)
+ if(NOT \"\${source_file}\" STREQUAL \"\${target_directory}/\${target_filename}\")
+ if(NOT EXISTS \"\${target_directory}\")
+ file(MAKE_DIRECTORY \"\${target_directory}\")
+ endif()
+ if(\"\${source_file}\" IS_NEWER_THAN \"\${target_directory}/\${target_filename}\")
+ file(LOCK \"\${target_directory}/\${target_filename}.lock\" GUARD FUNCTION TIMEOUT 30)
+ file(COPY \"\${source_file}\" DESTINATION \"\${target_directory}\" FILE_PERMISSIONS ${LY_COPY_PERMISSIONS})
+ endif()
+ endif()
+ endfunction()
+ \n")
+
+ ly_get_runtime_dependencies(runtime_dependencies ${target})
+ foreach(runtime_dependency ${runtime_dependencies})
+ unset(runtime_command)
+ ly_get_runtime_dependency_command(runtime_command ${runtime_dependency})
+ string(APPEND runtime_commands ${runtime_command})
+ endforeach()
+
+ # Generate the output file
+ set(target_file_dir "$")
+ string(CONFIGURE "${runtime_commands}" generated_commands @ONLY)
+ file(GENERATE
+ OUTPUT ${CMAKE_BINARY_DIR}/runtime_dependencies/$/${target}.cmake
+ CONTENT "${generated_commands}"
+ )
+
endforeach()
-
- # Generate the output file
- string(CONFIGURE "${runtime_commands}" generated_commands @ONLY)
- file(GENERATE
- OUTPUT ${CMAKE_BINARY_DIR}/runtime_dependencies/$/${target}.cmake
- CONTENT "${generated_commands}"
- )
-
-endforeach()
+endfunction()
diff --git a/cmake/Platform/iOS/RuntimeDependencies_ios.cmake b/cmake/Platform/iOS/RuntimeDependencies_ios.cmake
index d558c6f12a..034ab750ff 100644
--- a/cmake/Platform/iOS/RuntimeDependencies_ios.cmake
+++ b/cmake/Platform/iOS/RuntimeDependencies_ios.cmake
@@ -118,57 +118,61 @@ function(ios_get_dependencies_recursive ios_DEPENDENCIES ly_TARGET)
endfunction()
-# For each (non-monolithic) game project, find runtime dependencies and tell XCode to embed/sign them
-if(NOT LY_MONOLITHIC_GAME)
+function(ly_delayed_generate_runtime_dependencies)
- foreach(game_project ${LY_PROJECTS})
+ # For each (non-monolithic) game project, find runtime dependencies and tell XCode to embed/sign them
+ if(NOT LY_MONOLITHIC_GAME)
- # Recursively get all dependent frameworks for the game project.
- unset(dependencies)
- ios_get_dependencies_recursive(dependencies ${game_project}.GameLauncher)
- if(dependencies)
- set_target_properties(${game_project}.GameLauncher
- PROPERTIES
- XCODE_EMBED_FRAMEWORKS "${dependencies}"
- XCODE_EMBED_FRAMEWORKS_CODE_SIGN_ON_COPY TRUE
- XCODE_ATTRIBUTE_LD_RUNPATH_SEARCH_PATHS "@executable_path/Frameworks"
- )
+ foreach(game_project ${LY_PROJECTS})
+
+ # Recursively get all dependent frameworks for the game project.
+ unset(dependencies)
+ ios_get_dependencies_recursive(dependencies ${game_project}.GameLauncher)
+ if(dependencies)
+ set_target_properties(${game_project}.GameLauncher
+ PROPERTIES
+ XCODE_EMBED_FRAMEWORKS "${dependencies}"
+ XCODE_EMBED_FRAMEWORKS_CODE_SIGN_ON_COPY TRUE
+ XCODE_ATTRIBUTE_LD_RUNPATH_SEARCH_PATHS "@executable_path/Frameworks"
+ )
+ endif()
+
+ endforeach()
+
+ endif()
+
+ get_property(all_targets GLOBAL PROPERTY LY_ALL_TARGETS)
+ unset(test_runner_dependencies)
+ foreach(target IN LISTS all_targets)
+ # Exclude targets that dont produce runtime outputs
+ get_target_property(target_type ${target} TYPE)
+ if(NOT target_type IN_LIST LY_TARGET_TYPES_WITH_RUNTIME_OUTPUTS)
+ continue()
endif()
+
+ file(GENERATE
+ OUTPUT ${CMAKE_BINARY_DIR}/runtime_dependencies/$/${target}.cmake
+ CONTENT ""
+ )
+ if(target_type IN_LIST IOS_FRAMEWORK_TARGET_TYPES)
+ list(APPEND test_runner_dependencies ${target})
+ endif()
endforeach()
-endif()
+ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
+ add_dependencies("AzTestRunner" ${test_runner_dependencies})
+
+ # We still need to add indirect dependencies(eg. 3rdParty)
+ unset(all_dependencies)
+ ios_get_dependencies_recursive(all_dependencies AzTestRunner)
-get_property(all_targets GLOBAL PROPERTY LY_ALL_TARGETS)
-unset(test_runner_dependencies)
-foreach(target IN LISTS all_targets)
- # Exclude targets that dont produce runtime outputs
- get_target_property(target_type ${target} TYPE)
- if(NOT target_type IN_LIST LY_TARGET_TYPES_WITH_RUNTIME_OUTPUTS)
- continue()
+ set_target_properties("AzTestRunner"
+ PROPERTIES
+ XCODE_EMBED_FRAMEWORKS "${all_dependencies}"
+ XCODE_EMBED_FRAMEWORKS_CODE_SIGN_ON_COPY TRUE
+ XCODE_ATTRIBUTE_LD_RUNPATH_SEARCH_PATHS "@executable_path/Frameworks"
+ )
endif()
-
- file(GENERATE
- OUTPUT ${CMAKE_BINARY_DIR}/runtime_dependencies/$/${target}.cmake
- CONTENT ""
- )
- if(target_type IN_LIST IOS_FRAMEWORK_TARGET_TYPES)
- list(APPEND test_runner_dependencies ${target})
- endif()
-endforeach()
-
-if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
- add_dependencies("AzTestRunner" ${test_runner_dependencies})
-
- # We still need to add indirect dependencies(eg. 3rdParty)
- unset(all_dependencies)
- ios_get_dependencies_recursive(all_dependencies AzTestRunner)
-
- set_target_properties("AzTestRunner"
- PROPERTIES
- XCODE_EMBED_FRAMEWORKS "${all_dependencies}"
- XCODE_EMBED_FRAMEWORKS_CODE_SIGN_ON_COPY TRUE
- XCODE_ATTRIBUTE_LD_RUNPATH_SEARCH_PATHS "@executable_path/Frameworks"
- )
-endif()
\ No newline at end of file
+endfunction()
\ No newline at end of file
From fd9bac8684a31b143921ad3b7415e08afbf430dc Mon Sep 17 00:00:00 2001
From: pappeste
Date: Mon, 3 May 2021 17:11:03 -0700
Subject: [PATCH 016/629] Unnecessary empty line
---
Gems/ImageProcessing/Code/CMakeLists.txt | 1 -
1 file changed, 1 deletion(-)
diff --git a/Gems/ImageProcessing/Code/CMakeLists.txt b/Gems/ImageProcessing/Code/CMakeLists.txt
index a5cb6f6cb9..41d4b95179 100644
--- a/Gems/ImageProcessing/Code/CMakeLists.txt
+++ b/Gems/ImageProcessing/Code/CMakeLists.txt
@@ -81,7 +81,6 @@ ly_add_source_properties(
ly_add_target(
NAME ImageProcessing.Editor GEM_MODULE
-
NAMESPACE Gem
AUTOMOC
AUTORCC
From 04032d37bc5254bb87b65dee7dd5f672c8d515af Mon Sep 17 00:00:00 2001
From: pappeste
Date: Mon, 3 May 2021 17:11:25 -0700
Subject: [PATCH 017/629] leftover for a parameter it never existed
---
cmake/LYWrappers.cmake | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/cmake/LYWrappers.cmake b/cmake/LYWrappers.cmake
index f6a36afc89..47515ba663 100644
--- a/cmake/LYWrappers.cmake
+++ b/cmake/LYWrappers.cmake
@@ -333,10 +333,6 @@ function(ly_add_target)
endif()
if(NOT ly_add_target_IMPORTED)
- if(NOT ly_add_target_INSTALL_COMPONENT)
- set(ly_add_target_INSTALL_COMPONENT ${LY_DEFAULT_INSTALL_COMPONENT})
- endif()
-
ly_install_target(
${ly_add_target_NAME}
NAMESPACE ${ly_add_target_NAMESPACE}
@@ -344,7 +340,7 @@ function(ly_add_target)
BUILD_DEPENDENCIES ${ly_add_target_BUILD_DEPENDENCIES}
RUNTIME_DEPENDENCIES ${ly_add_target_RUNTIME_DEPENDENCIES}
COMPILE_DEFINITIONS ${ly_add_target_COMPILE_DEFINITIONS}
- COMPONENT ${ly_add_target_INSTALL_COMPONENT}
+ COMPONENT ${LY_DEFAULT_INSTALL_COMPONENT}
)
endif()
From 5c68647b6b4bfebea1742cc66d1ce4b016f72394 Mon Sep 17 00:00:00 2001
From: pappeste
Date: Mon, 3 May 2021 17:16:03 -0700
Subject: [PATCH 018/629] fixing qt deploy and adding install of runtime
dependencies
---
cmake/Platform/Common/Install_common.cmake | 91 ++++++++++++++++------
1 file changed, 69 insertions(+), 22 deletions(-)
diff --git a/cmake/Platform/Common/Install_common.cmake b/cmake/Platform/Common/Install_common.cmake
index dac12d8a50..a2fa54b503 100644
--- a/cmake/Platform/Common/Install_common.cmake
+++ b/cmake/Platform/Common/Install_common.cmake
@@ -17,6 +17,7 @@ file(RELATIVE_PATH runtime_output_directory ${CMAKE_BINARY_DIR} ${CMAKE_RUNTIME_
file(RELATIVE_PATH library_output_directory ${CMAKE_BINARY_DIR} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
set(install_output_folder "${CMAKE_INSTALL_PREFIX}/${runtime_output_directory}/${PAL_PLATFORM_NAME}/$")
+
#! ly_install_target: registers the target to be installed by cmake install.
#
# \arg:NAME name of the target
@@ -87,28 +88,6 @@ function(ly_install_target ly_install_target_NAME)
COMPONENT ${ly_install_target_COMPONENT}
)
- get_target_property(target_type ${ly_install_target_NAME} TYPE)
- set(runtime_dependencies_list SHARED MODULE EXECUTABLE APPLICATION) # Only have to deploy for dlls/exes
- if(target_type IN_LIST runtime_dependencies_list)
- get_property(has_qt_dependency GLOBAL PROPERTY LY_DETECT_QT_DEPENDENCY_${ly_install_target_NAME})
- if(has_qt_dependency)
- # Qt deploy needs to be done after the binary is copied to the output, so we do a install(CODE) which effectively
- # puts it as a postbuild step of the "install" target. Binaries are copied at that point.
- if(NOT EXISTS ${WINDEPLOYQT_EXECUTABLE})
- message(FATAL_ERROR "Qt deploy executable not found: ${WINDEPLOYQT_EXECUTABLE}")
- endif()
- set(target_output "${install_output_folder}/${target_runtime_output_subdirectory}/$")
- install(CODE
-"execute_process(COMMAND \"${WINDEPLOYQT_EXECUTABLE}\" --verbose 0 --no-compiler-runtime \"${target_output}\" ERROR_VARIABLE deploy_error RESULT_VARIABLE deploy_result)
-if (NOT \${deploy_result} EQUAL 0)
- if(NOT deploy_result MATCHES \"does not seem to be a Qt executable\" )
- message(SEND_ERROR \"Deploying qt for ${target_output} returned \${result}: \${deploy_error}\")
- endif()
-endif()
-")
- endif()
- endif()
-
endfunction()
@@ -235,6 +214,7 @@ function(ly_setup_o3de_install)
ly_setup_cmake_install()
ly_setup_target_generator()
+ ly_setup_runtime_dependencies()
ly_setup_others()
endfunction()
@@ -306,6 +286,73 @@ function(ly_setup_cmake_install)
endfunction()
+#! ly_setup_runtime_dependencies: install runtime dependencies
+function(ly_setup_runtime_dependencies)
+
+ # Common functions used by the bellow code
+ install(CODE
+"function(ly_deploy_qt_install target_output)
+ execute_process(COMMAND \"${WINDEPLOYQT_EXECUTABLE}\" --verbose 0 --no-compiler-runtime \"\${target_output}\" ERROR_VARIABLE deploy_error RESULT_VARIABLE deploy_result)
+ if (NOT \${deploy_result} EQUAL 0)
+ if(NOT deploy_error MATCHES \"does not seem to be a Qt executable\" )
+ message(SEND_ERROR \"Deploying qt for \${target_output} returned \${deploy_result}: \${deploy_error}\")
+ endif()
+ endif()
+endfunction()
+
+function(ly_copy source_file target_directory)
+ file(COPY \"\${source_file}\" DESTINATION \"\${target_directory}\" FILE_PERMISSIONS ${LY_COPY_PERMISSIONS})
+endfunction()"
+ COMPONENT ${LY_DEFAULT_INSTALL_COMPONENT}
+ )
+
+ unset(runtime_commands)
+ get_property(all_targets GLOBAL PROPERTY LY_ALL_TARGETS)
+ foreach(target IN LISTS all_targets)
+
+ # Exclude targets that dont produce runtime outputs
+ get_target_property(target_type ${target} TYPE)
+ if(NOT target_type IN_LIST LY_TARGET_TYPES_WITH_RUNTIME_OUTPUTS)
+ continue()
+ endif()
+
+ get_target_property(target_runtime_output_directory ${target} RUNTIME_OUTPUT_DIRECTORY)
+ if(target_runtime_output_directory)
+ file(RELATIVE_PATH target_runtime_output_subdirectory ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} ${target_runtime_output_directory})
+ endif()
+
+ # Qt
+ get_property(has_qt_dependency GLOBAL PROPERTY LY_DETECT_QT_DEPENDENCY_${target})
+ if(has_qt_dependency)
+ # Qt deploy needs to be done after the binary is copied to the output, so we do a install(CODE) which effectively
+ # puts it as a postbuild step of the "install" target. Binaries are copied at that point.
+ if(NOT EXISTS ${WINDEPLOYQT_EXECUTABLE})
+ message(FATAL_ERROR "Qt deploy executable not found: ${WINDEPLOYQT_EXECUTABLE}")
+ endif()
+ set(target_output "${install_output_folder}/${target_runtime_output_subdirectory}/$")
+ list(APPEND runtime_commands "ly_deploy_qt_install(\"${target_output}\")\n")
+ endif()
+
+ # runtime dependencies that need to be copied to the output
+ set(target_file_dir "${install_output_folder}/${target_runtime_output_subdirectory}")
+ ly_get_runtime_dependencies(runtime_dependencies ${target})
+ foreach(runtime_dependency ${runtime_dependencies})
+ unset(runtime_command)
+ ly_get_runtime_dependency_command(runtime_command ${runtime_dependency})
+ string(CONFIGURE "${runtime_command}" runtime_command @ONLY)
+ list(APPEND runtime_commands ${runtime_command})
+ endforeach()
+
+ endforeach()
+
+ list(REMOVE_DUPLICATES runtime_commands)
+ list(JOIN runtime_commands " " runtime_commands_str) # the spaces are just to see the right identation in the cmake_install.cmake file
+ install(CODE "${runtime_commands_str}"
+ COMPONENT ${LY_DEFAULT_INSTALL_COMPONENT}
+ )
+
+endfunction()
+
#! ly_setup_others: install directories required by the engine
function(ly_setup_others)
From d1416d53e08d4645aaae0fe8024e975bfda49c07 Mon Sep 17 00:00:00 2001
From: pappeste
Date: Mon, 3 May 2021 18:16:08 -0700
Subject: [PATCH 019/629] adding a file for ImageProcessing
---
cmake/Platform/Common/Install_common.cmake | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/cmake/Platform/Common/Install_common.cmake b/cmake/Platform/Common/Install_common.cmake
index a2fa54b503..0686b27fe7 100644
--- a/cmake/Platform/Common/Install_common.cmake
+++ b/cmake/Platform/Common/Install_common.cmake
@@ -420,6 +420,13 @@ function(ly_setup_others)
endif()
endforeach()
+ # Additional files needed by gems
+ install(FILES
+ ${CMAKE_SOURCE_DIR}/Gems/ImageProcessing/Code/Source/ImageBuilderDefaultPresets.settings
+ DESTINATION Gems/ImageProcessing/Code/Source
+ COMPONENT ${LY_DEFAULT_INSTALL_COMPONENT}
+ )
+
# Templates
install(DIRECTORY
${CMAKE_SOURCE_DIR}/Templates
From b0732dd494231d2b600ee382fae2e776296b8434 Mon Sep 17 00:00:00 2001
From: pappeste
Date: Tue, 4 May 2021 13:52:19 -0700
Subject: [PATCH 020/629] Changing find files to add_subdirectory to be able to
have SettingsRegistry.cmake finding the path to the gems
---
cmake/LYWrappers.cmake | 12 +++--
cmake/Platform/Common/Install_common.cmake | 45 ++++++++++---------
cmake/SettingsRegistry.cmake | 9 ++--
cmake/{ => install}/Findo3de.cmake.in | 0
.../TargetCMakeLists.txt.in} | 6 +--
5 files changed, 35 insertions(+), 37 deletions(-)
rename cmake/{ => install}/Findo3de.cmake.in (100%)
rename cmake/{FindTarget.cmake.in => install/TargetCMakeLists.txt.in} (82%)
diff --git a/cmake/LYWrappers.cmake b/cmake/LYWrappers.cmake
index 47515ba663..62509582a1 100644
--- a/cmake/LYWrappers.cmake
+++ b/cmake/LYWrappers.cmake
@@ -52,7 +52,6 @@ define_property(TARGET PROPERTY GEM_MODULE
# \arg:HEADERONLY (bool) defines this target to be a header only library. A ${NAME}_HEADERS project will be created for the IDE
# \arg:EXECUTABLE (bool) defines this target to be an executable
# \arg:APPLICATION (bool) defines this target to be an application (executable that is not a console)
-# \arg:UNKNOWN (bool) defines this target to be unknown. This is used when importing installed targets from Find files
# \arg:IMPORTED (bool) defines this target to be imported.
# \arg:NAMESPACE namespace declaration for this target. It will be used for IDE and dependencies
# \arg:OUTPUT_NAME (optional) overrides the name of the output target. If not specified, the name will be used.
@@ -76,7 +75,7 @@ define_property(TARGET PROPERTY GEM_MODULE
# \arg:AUTOGEN_RULES a set of AutoGeneration rules to be passed to the AzAutoGen expansion system
function(ly_add_target)
- set(options STATIC SHARED MODULE GEM_MODULE HEADERONLY EXECUTABLE APPLICATION UNKNOWN IMPORTED AUTOMOC AUTOUIC AUTORCC NO_UNITY)
+ set(options STATIC SHARED MODULE GEM_MODULE HEADERONLY EXECUTABLE APPLICATION IMPORTED AUTOMOC AUTOUIC AUTORCC NO_UNITY)
set(oneValueArgs NAME NAMESPACE OUTPUT_SUBDIRECTORY OUTPUT_NAME)
set(multiValueArgs FILES_CMAKE GENERATED_FILES INCLUDE_DIRECTORIES COMPILE_DEFINITIONS BUILD_DEPENDENCIES RUNTIME_DEPENDENCIES PLATFORM_INCLUDE_FILES TARGET_PROPERTIES AUTOGEN_RULES)
@@ -128,12 +127,12 @@ function(ly_add_target)
set(linking_options APPLICATION)
set(linking_count "${linking_count}1")
endif()
- if(ly_add_target_UNKNOWN)
- set(linking_options UNKNOWN)
+ if(ly_add_target_IMPORTED)
+ set(linking_options UNKNOWN IMPORTED GLOBAL)
set(linking_count "${linking_count}1")
endif()
if(NOT ("${linking_count}" STREQUAL "1"))
- message(FATAL_ERROR "More than one of the following options [STATIC | SHARED | MODULE | HEADERONLY | EXECUTABLE | APPLICATION | UNKNOWN] was specified and they are mutually exclusive")
+ message(FATAL_ERROR "More than one of the following options [STATIC | SHARED | MODULE | HEADERONLY | EXECUTABLE | APPLICATION | IMPORTED] was specified and they are mutually exclusive")
endif()
if(ly_add_target_NAMESPACE)
@@ -159,10 +158,9 @@ function(ly_add_target)
${linking_options}
${ALLFILES} ${ly_add_target_GENERATED_FILES}
)
- elseif(ly_add_target_UNKNOWN)
+ elseif(ly_add_target_IMPORTED)
add_library(${ly_add_target_NAME}
${linking_options}
- IMPORTED
)
else()
add_library(${ly_add_target_NAME}
diff --git a/cmake/Platform/Common/Install_common.cmake b/cmake/Platform/Common/Install_common.cmake
index edbcdc473b..e9726fb949 100644
--- a/cmake/Platform/Common/Install_common.cmake
+++ b/cmake/Platform/Common/Install_common.cmake
@@ -11,7 +11,7 @@
set(CMAKE_INSTALL_MESSAGE NEVER) # Simplify messages to reduce output noise
-ly_set(LY_DEFAULT_INSTALL_COMPONENT "Core")
+ly_set(LY_DEFAULT_INSTALL_COMPONENT Core)
file(RELATIVE_PATH runtime_output_directory ${CMAKE_BINARY_DIR} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
file(RELATIVE_PATH library_output_directory ${CMAKE_BINARY_DIR} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
@@ -74,20 +74,9 @@ function(ly_install_target ly_install_target_NAME)
COMPONENT ${ly_install_target_COMPONENT}
)
- ly_generate_target_find_file(
- NAME ${ly_install_target_NAME}
- ${ARGN}
- )
+ ly_generate_target_find_file(NAME ${ly_install_target_NAME} ${ARGN})
ly_generate_target_config_file(${ly_install_target_NAME})
- install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${ly_install_target_NAME}_$.cmake"
- DESTINATION cmake_autogen/${ly_install_target_NAME}
- COMPONENT ${ly_install_target_COMPONENT}
- )
- install(FILES "${CMAKE_CURRENT_BINARY_DIR}/Find${ly_install_target_NAME}.cmake"
- DESTINATION cmake
- COMPONENT ${ly_install_target_COMPONENT}
- )
-
+
endfunction()
@@ -129,16 +118,21 @@ function(ly_generate_target_find_file)
# Includes need additional processing to add the install root
foreach(include ${include_directories_interface_props})
- set(installed_include_prefix "\${LY_ROOT_FOLDER}/include/")
file(RELATIVE_PATH relative_path ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/${include})
- list(APPEND INCLUDE_DIRECTORIES_PLACEHOLDER "include/${relative_path}")
+ string(APPEND INCLUDE_DIRECTORIES_PLACEHOLDER "\${LY_ROOT_FOLDER}/include/${relative_path}\n")
endforeach()
- string(REPLACE ";" "\n" INCLUDE_DIRECTORIES_PLACEHOLDER "${INCLUDE_DIRECTORIES_PLACEHOLDER}")
string(REPLACE ";" "\n" BUILD_DEPENDENCIES_PLACEHOLDER "${BUILD_DEPENDENCIES_PLACEHOLDER}")
string(REPLACE ";" "\n" RUNTIME_DEPENDENCIES_PLACEHOLDER "${RUNTIME_DEPENDENCIES_PLACEHOLDER}")
- configure_file(${LY_ROOT_FOLDER}/cmake/FindTarget.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/Find${ly_generate_target_find_file_NAME}.cmake @ONLY)
+ # Since a CMakeLists could contain multiple targets, we generate it in a folder per target
+ configure_file(${LY_ROOT_FOLDER}/cmake/install/TargetCMakeLists.txt.in ${CMAKE_CURRENT_BINARY_DIR}/install/${ly_generate_target_find_file_NAME}/CMakeLists.txt @ONLY)
+ get_target_property(target_source_dir ${ly_generate_target_find_file_NAME} SOURCE_DIR)
+ file(RELATIVE_PATH target_source_dir_relative ${CMAKE_SOURCE_DIR} ${target_source_dir})
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/install/${ly_generate_target_find_file_NAME}/CMakeLists.txt"
+ DESTINATION ${target_source_dir_relative}/${ly_generate_target_find_file_NAME}
+ COMPONENT ${ly_install_target_COMPONENT}
+ )
endfunction()
@@ -183,7 +177,13 @@ endif()
")
endif()
- file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${NAME}_$.cmake" CONTENT "${target_file_contents}")
+ file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/install/${NAME}/${NAME}_$.cmake" CONTENT "${target_file_contents}")
+ get_target_property(target_source_dir ${NAME} SOURCE_DIR)
+ file(RELATIVE_PATH target_source_dir_relative ${CMAKE_SOURCE_DIR} ${target_source_dir})
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/install/${NAME}_$.cmake"
+ DESTINATION ${target_source_dir_relative}/${NAME}
+ COMPONENT ${ly_install_target_COMPONENT}
+ )
endfunction()
@@ -254,11 +254,12 @@ function(ly_setup_cmake_install)
get_property(all_targets GLOBAL PROPERTY LY_ALL_TARGETS)
unset(FIND_PACKAGES_PLACEHOLDER)
foreach(target IN LISTS all_targets)
- string(APPEND FIND_PACKAGES_PLACEHOLDER " find_package(${target})\n")
+ get_target_property(target_source_dir ${target} SOURCE_DIR)
+ file(RELATIVE_PATH target_source_dir_relative ${CMAKE_SOURCE_DIR} ${target_source_dir})
+ string(APPEND FIND_PACKAGES_PLACEHOLDER " add_subdirectory(${target_source_dir_relative}/${target})\n")
endforeach()
- configure_file(${LY_ROOT_FOLDER}/cmake/Findo3de.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/cmake/Findo3de.cmake @ONLY)
-
+ configure_file(${LY_ROOT_FOLDER}/cmake/install/Findo3de.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/cmake/Findo3de.cmake @ONLY)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/cmake/Findo3de.cmake"
DESTINATION cmake
COMPONENT ${LY_DEFAULT_INSTALL_COMPONENT}
diff --git a/cmake/SettingsRegistry.cmake b/cmake/SettingsRegistry.cmake
index fd5985a5a1..1bc2b2344e 100644
--- a/cmake/SettingsRegistry.cmake
+++ b/cmake/SettingsRegistry.cmake
@@ -126,15 +126,16 @@ function(ly_delayed_generate_settings_registry)
get_property(gem_relative_source_dir TARGET ${gem_target} PROPERTY SOURCE_DIR)
if(gem_relative_source_dir)
# Most gems CMakeLists.txt files reside in the /Code/ so remove "Code/" from the path
- if(gem_relative_source_dir MATCHES ".*/Code$")
+ while(gem_relative_source_dir MATCHES ".*/Code$")
get_filename_component(gem_relative_source_dir ${gem_relative_source_dir} DIRECTORY)
- endif()
+ endwhile()
file(TO_CMAKE_PATH ${LY_ROOT_FOLDER} ly_root_folder_cmake)
file(RELATIVE_PATH gem_relative_source_dir ${ly_root_folder_cmake} ${gem_relative_source_dir})
endif()
- # Strip target namespace from gem targets before configuring them into the json template
- ly_strip_target_namespace(TARGET ${gem_target} OUTPUT_VARIABLE stripped_gem_target)
+ message("gem_target: ${gem_target}, gem_relative_source_dir: ${gem_relative_source_dir}")
+ # Strip target namespace from gem targets before configuring them into the json template
+ ly_strip_target_namespace(TARGET ${gem_target} OUTPUT_VARIABLE stripped_gem_target)
string(CONFIGURE ${gem_module_template} gem_module_json @ONLY)
list(APPEND target_gem_dependencies_names ${gem_module_json})
endforeach()
diff --git a/cmake/Findo3de.cmake.in b/cmake/install/Findo3de.cmake.in
similarity index 100%
rename from cmake/Findo3de.cmake.in
rename to cmake/install/Findo3de.cmake.in
diff --git a/cmake/FindTarget.cmake.in b/cmake/install/TargetCMakeLists.txt.in
similarity index 82%
rename from cmake/FindTarget.cmake.in
rename to cmake/install/TargetCMakeLists.txt.in
index 8ad9822dae..16263ecf30 100644
--- a/cmake/FindTarget.cmake.in
+++ b/cmake/install/TargetCMakeLists.txt.in
@@ -11,10 +11,8 @@
# Generated by O3DE
-include(FindPackageHandleStandardArgs)
-
ly_add_target(
- NAME @NAME_PLACEHOLDER@ UNKNOWN IMPORTED
+ NAME @NAME_PLACEHOLDER@ IMPORTED
@NAMESPACE_PLACEHOLDER@
COMPILE_DEFINITIONS
INTERFACE
@@ -30,5 +28,5 @@ ly_add_target(
)
foreach(config @CMAKE_CONFIGURATION_TYPES@)
- include("${LY_ROOT_FOLDER}/cmake_autogen/@NAME_PLACEHOLDER@/@NAME_PLACEHOLDER@_${config}.cmake" OPTIONAL)
+ include("@NAME_PLACEHOLDER@_${config}.cmake" OPTIONAL)
endforeach()
From 7eb6cc10b6559511927028d9f6c5514b973a99bb Mon Sep 17 00:00:00 2001
From: sphrose <82213493+sphrose@users.noreply.github.com>
Date: Wed, 5 May 2021 08:57:39 +0100
Subject: [PATCH 021/629] Made change affect all modifiable containers.
---
.../Serialization/EditContextConstants.inl | 2 --
.../UI/PropertyEditor/PropertyRowWidget.cpp | 22 +++++++++++++------
.../UI/PropertyEditor/PropertyRowWidget.hxx | 5 +++--
Gems/Vegetation/Code/Source/Descriptor.cpp | 2 --
4 files changed, 18 insertions(+), 13 deletions(-)
diff --git a/Code/Framework/AzCore/AzCore/Serialization/EditContextConstants.inl b/Code/Framework/AzCore/AzCore/Serialization/EditContextConstants.inl
index 481ae5a91c..90b9ba5afd 100644
--- a/Code/Framework/AzCore/AzCore/Serialization/EditContextConstants.inl
+++ b/Code/Framework/AzCore/AzCore/Serialization/EditContextConstants.inl
@@ -62,8 +62,6 @@ namespace AZ
const static AZ::Crc32 ButtonTooltip = AZ_CRC("ButtonTooltip", 0x1605a7d2);
const static AZ::Crc32 CheckboxTooltip = AZ_CRC("CheckboxTooltip", 0x1159eb78);
const static AZ::Crc32 CheckboxDefaultValue = AZ_CRC("CheckboxDefaultValue", 0x03f117e6);
- //! Emboldens the text and adds a line above this item within the RPE.
- const static AZ::Crc32 RPESectionSeparator = AZ_CRC("RPESectionSeparator", 0xc6249a95);
//! Affects the display order of a node relative to it's parent/children. Higher values display further down (after) lower values. Default is 0, negative values are allowed. Must be applied as an attribute to the EditorData element
const static AZ::Crc32 DisplayOrder = AZ_CRC("DisplayOrder", 0x23660ec2);
//! Specifies whether the UI should support multi-edit for aggregate instances of this property
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyRowWidget.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyRowWidget.cpp
index 5b02e81e6d..faeae0a06d 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyRowWidget.cpp
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyRowWidget.cpp
@@ -315,8 +315,6 @@ namespace AzToolsFramework
}
}
- m_isSectionSeparator = false;
-
RefreshAttributesFromNode(true);
// --------------------- HANDLER discovery:
@@ -962,10 +960,6 @@ namespace AzToolsFramework
{
HandleChangeNotifyAttribute(reader, m_sourceNode ? m_sourceNode->GetParent() : nullptr, m_editingCompleteNotifiers);
}
- else if (attributeName == AZ::Edit::Attributes::RPESectionSeparator)
- {
- m_isSectionSeparator = true;
- }
}
void PropertyRowWidget::SetReadOnlyQueryFunction(const ReadOnlyQueryFunction& readOnlyQueryFunction)
@@ -1340,7 +1334,7 @@ namespace AzToolsFramework
bool PropertyRowWidget::IsSectionSeparator() const
{
- return m_isSectionSeparator;
+ return CanBeReordered();
}
bool PropertyRowWidget::GetAppendDefaultLabelToName()
@@ -1686,6 +1680,20 @@ namespace AzToolsFramework
m_nameLabel->setFilter(m_currentFilterString);
}
+ bool PropertyRowWidget::CanChildrenBeReordered() const
+ {
+ return m_containerEditable;
+ }
+
+ bool PropertyRowWidget::CanBeReordered() const
+ {
+ if (!m_parentRow)
+ {
+ return false;
+ }
+
+ return m_parentRow->CanChildrenBeReordered();
+ }
}
#include "UI/PropertyEditor/moc_PropertyRowWidget.cpp"
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyRowWidget.hxx b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyRowWidget.hxx
index 2fb695fca5..b6c94dc98b 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyRowWidget.hxx
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyRowWidget.hxx
@@ -149,6 +149,9 @@ namespace AzToolsFramework
QLabel* GetNameLabel() { return m_nameLabel; }
void SetIndentSize(int w);
void SetAsCustom(bool custom) { m_custom = custom; }
+
+ bool CanChildrenBeReordered() const;
+ bool CanBeReordered() const;
protected:
int CalculateLabelWidth() const;
@@ -232,8 +235,6 @@ namespace AzToolsFramework
int m_treeIndentation = 14;
int m_leafIndentation = 16;
- bool m_isSectionSeparator = false;
-
QIcon m_iconOpen;
QIcon m_iconClosed;
diff --git a/Gems/Vegetation/Code/Source/Descriptor.cpp b/Gems/Vegetation/Code/Source/Descriptor.cpp
index 45ec25038d..ecda8415e7 100644
--- a/Gems/Vegetation/Code/Source/Descriptor.cpp
+++ b/Gems/Vegetation/Code/Source/Descriptor.cpp
@@ -170,8 +170,6 @@ namespace Vegetation
{
edit->Class(
"Vegetation Descriptor", "Details used to create vegetation instances")
- ->ClassElement(AZ::Edit::ClassElements::EditorData, "")
- ->Attribute(AZ::Edit::Attributes::RPESectionSeparator, true)
// For this ComboBox to actually work, there is a PropertyHandler registration in EditorVegetationSystemComponent.cpp
->DataElement(AZ::Edit::UIHandlers::ComboBox, &Descriptor::m_spawnerType, "Instance Spawner", "The type of instances to spawn")
->Attribute(AZ::Edit::Attributes::GenericValueList, &Descriptor::GetSpawnerTypeList)
From 84381e4c3a65986e0d83f8839e5a8eba0be984fb Mon Sep 17 00:00:00 2001
From: pappeste
Date: Wed, 5 May 2021 12:07:23 -0700
Subject: [PATCH 022/629] making the settings registry compute the path based
on the gems.json file
---
cmake/SettingsRegistry.cmake | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/cmake/SettingsRegistry.cmake b/cmake/SettingsRegistry.cmake
index 1bc2b2344e..af6ef42e31 100644
--- a/cmake/SettingsRegistry.cmake
+++ b/cmake/SettingsRegistry.cmake
@@ -125,15 +125,14 @@ function(ly_delayed_generate_settings_registry)
endif()
get_property(gem_relative_source_dir TARGET ${gem_target} PROPERTY SOURCE_DIR)
if(gem_relative_source_dir)
- # Most gems CMakeLists.txt files reside in the /Code/ so remove "Code/" from the path
- while(gem_relative_source_dir MATCHES ".*/Code$")
+ # Most gems SOURCE dir is nested in the path, we need to find the path to the gem.json file
+ while(NOT EXISTS ${gem_relative_source_dir}/gem.json)
get_filename_component(gem_relative_source_dir ${gem_relative_source_dir} DIRECTORY)
endwhile()
file(TO_CMAKE_PATH ${LY_ROOT_FOLDER} ly_root_folder_cmake)
file(RELATIVE_PATH gem_relative_source_dir ${ly_root_folder_cmake} ${gem_relative_source_dir})
endif()
- message("gem_target: ${gem_target}, gem_relative_source_dir: ${gem_relative_source_dir}")
# Strip target namespace from gem targets before configuring them into the json template
ly_strip_target_namespace(TARGET ${gem_target} OUTPUT_VARIABLE stripped_gem_target)
string(CONFIGURE ${gem_module_template} gem_module_json @ONLY)
From 7c9837dfd4fb1e55c20c00d88fb0c9ed5587d5c9 Mon Sep 17 00:00:00 2001
From: pappeste
Date: Wed, 5 May 2021 12:07:45 -0700
Subject: [PATCH 023/629] installing the gems.json files
---
cmake/Platform/Common/Install_common.cmake | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/cmake/Platform/Common/Install_common.cmake b/cmake/Platform/Common/Install_common.cmake
index e9726fb949..dbffcc8d12 100644
--- a/cmake/Platform/Common/Install_common.cmake
+++ b/cmake/Platform/Common/Install_common.cmake
@@ -439,6 +439,21 @@ function(ly_setup_others)
endif()
endforeach()
+ # gem.json files
+ file(GLOB_RECURSE
+ gems_json_path
+ LIST_DIRECTORIES FALSE
+ RELATIVE "${CMAKE_SOURCE_DIR}"
+ "Gems/*/gem.json"
+ )
+ foreach(gem_json_path ${gems_json_path})
+ get_filename_component(gem_relative_path ${gem_json_path} DIRECTORY)
+ install(FILES ${gem_json_path}
+ DESTINATION ${gem_relative_path}
+ COMPONENT ${LY_DEFAULT_INSTALL_COMPONENT}
+ )
+ endforeach()
+
# Additional files needed by gems
install(FILES
${CMAKE_SOURCE_DIR}/Gems/ImageProcessing/Code/Source/ImageBuilderDefaultPresets.settings
From 412bf6777239da2a30378a481b47a5c07d8e4572 Mon Sep 17 00:00:00 2001
From: pappeste
Date: Wed, 5 May 2021 12:08:55 -0700
Subject: [PATCH 024/629] changing the default prefix (install path) to be
/install to workaround the "build/*" filter in the AP This is
also better since we support installing different configuraitons/platforms in
the same prefix
---
.gitignore | 1 +
cmake/OutputDirectory.cmake | 6 +++++-
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/.gitignore b/.gitignore
index c3af907e97..c396847560 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,6 +4,7 @@ __pycache__
AssetProcessorTemp/**
[Bb]uild/**
[Cc]ache/
+install/
Editor/EditorEventLog.xml
Editor/EditorLayout.xml
**/*egg-info/**
diff --git a/cmake/OutputDirectory.cmake b/cmake/OutputDirectory.cmake
index 9055802d39..5fe5c7a957 100644
--- a/cmake/OutputDirectory.cmake
+++ b/cmake/OutputDirectory.cmake
@@ -13,4 +13,8 @@
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib CACHE PATH "Build directory for static libraries and import libraries")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin CACHE PATH "Build directory for shared libraries")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin CACHE PATH "Build directory for executables")
-set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/install CACHE PATH "Installation prefix")
+
+# We install outside of the binary dir because our install support muliple platforms to
+# be installed together. We also have an exclusion rule in the AP that filters out the
+# "build" folder which is a common binary dir
+set(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR}/install CACHE PATH "Installation prefix")
From 76ffff8bb5f3f7eb3d3239a3d1852622cfc0367a Mon Sep 17 00:00:00 2001
From: nggieber
Date: Wed, 5 May 2021 12:29:06 -0700
Subject: [PATCH 025/629] Moved Qt files into to renamed 'S'ource
---
.../Tools/ProjectManager/{source/Qt => Source}/EngineSettings.cpp | 0
Code/Tools/ProjectManager/{source/Qt => Source}/EngineSettings.h | 0
Code/Tools/ProjectManager/{source/Qt => Source}/EngineSettings.ui | 0
Code/Tools/ProjectManager/{source/Qt => Source}/FirstTimeUse.cpp | 0
Code/Tools/ProjectManager/{source/Qt => Source}/FirstTimeUse.h | 0
Code/Tools/ProjectManager/{source/Qt => Source}/FirstTimeUse.ui | 0
Code/Tools/ProjectManager/{source/Qt => Source}/GemCatalog.cpp | 0
Code/Tools/ProjectManager/{source/Qt => Source}/GemCatalog.h | 0
Code/Tools/ProjectManager/{source/Qt => Source}/GemCatalog.ui | 0
.../ProjectManager/{source/Qt => Source}/NewProjectSettings.cpp | 0
.../ProjectManager/{source/Qt => Source}/NewProjectSettings.h | 0
.../ProjectManager/{source/Qt => Source}/NewProjectSettings.ui | 0
.../ProjectManager/{source/Qt => Source}/ProjectManagerWindow.cpp | 0
.../ProjectManager/{source/Qt => Source}/ProjectManagerWindow.h | 0
.../ProjectManager/{source/Qt => Source}/ProjectManagerWindow.ui | 0
.../ProjectManager/{source/Qt => Source}/ProjectSettings.cpp | 0
Code/Tools/ProjectManager/{source/Qt => Source}/ProjectSettings.h | 0
.../Tools/ProjectManager/{source/Qt => Source}/ProjectSettings.ui | 0
Code/Tools/ProjectManager/{source/Qt => Source}/ProjectsHome.cpp | 0
Code/Tools/ProjectManager/{source/Qt => Source}/ProjectsHome.h | 0
Code/Tools/ProjectManager/{source/Qt => Source}/ProjectsHome.ui | 0
Code/Tools/ProjectManager/{source => Source}/ScreenDefs.h | 0
Code/Tools/ProjectManager/{source => Source}/ScreenFactory.cpp | 0
Code/Tools/ProjectManager/{source => Source}/ScreenFactory.h | 0
Code/Tools/ProjectManager/{source/Qt => Source}/ScreenWidget.h | 0
Code/Tools/ProjectManager/{source => Source}/main.cpp | 0
26 files changed, 0 insertions(+), 0 deletions(-)
rename Code/Tools/ProjectManager/{source/Qt => Source}/EngineSettings.cpp (100%)
rename Code/Tools/ProjectManager/{source/Qt => Source}/EngineSettings.h (100%)
rename Code/Tools/ProjectManager/{source/Qt => Source}/EngineSettings.ui (100%)
rename Code/Tools/ProjectManager/{source/Qt => Source}/FirstTimeUse.cpp (100%)
rename Code/Tools/ProjectManager/{source/Qt => Source}/FirstTimeUse.h (100%)
rename Code/Tools/ProjectManager/{source/Qt => Source}/FirstTimeUse.ui (100%)
rename Code/Tools/ProjectManager/{source/Qt => Source}/GemCatalog.cpp (100%)
rename Code/Tools/ProjectManager/{source/Qt => Source}/GemCatalog.h (100%)
rename Code/Tools/ProjectManager/{source/Qt => Source}/GemCatalog.ui (100%)
rename Code/Tools/ProjectManager/{source/Qt => Source}/NewProjectSettings.cpp (100%)
rename Code/Tools/ProjectManager/{source/Qt => Source}/NewProjectSettings.h (100%)
rename Code/Tools/ProjectManager/{source/Qt => Source}/NewProjectSettings.ui (100%)
rename Code/Tools/ProjectManager/{source/Qt => Source}/ProjectManagerWindow.cpp (100%)
rename Code/Tools/ProjectManager/{source/Qt => Source}/ProjectManagerWindow.h (100%)
rename Code/Tools/ProjectManager/{source/Qt => Source}/ProjectManagerWindow.ui (100%)
rename Code/Tools/ProjectManager/{source/Qt => Source}/ProjectSettings.cpp (100%)
rename Code/Tools/ProjectManager/{source/Qt => Source}/ProjectSettings.h (100%)
rename Code/Tools/ProjectManager/{source/Qt => Source}/ProjectSettings.ui (100%)
rename Code/Tools/ProjectManager/{source/Qt => Source}/ProjectsHome.cpp (100%)
rename Code/Tools/ProjectManager/{source/Qt => Source}/ProjectsHome.h (100%)
rename Code/Tools/ProjectManager/{source/Qt => Source}/ProjectsHome.ui (100%)
rename Code/Tools/ProjectManager/{source => Source}/ScreenDefs.h (100%)
rename Code/Tools/ProjectManager/{source => Source}/ScreenFactory.cpp (100%)
rename Code/Tools/ProjectManager/{source => Source}/ScreenFactory.h (100%)
rename Code/Tools/ProjectManager/{source/Qt => Source}/ScreenWidget.h (100%)
rename Code/Tools/ProjectManager/{source => Source}/main.cpp (100%)
diff --git a/Code/Tools/ProjectManager/source/Qt/EngineSettings.cpp b/Code/Tools/ProjectManager/Source/EngineSettings.cpp
similarity index 100%
rename from Code/Tools/ProjectManager/source/Qt/EngineSettings.cpp
rename to Code/Tools/ProjectManager/Source/EngineSettings.cpp
diff --git a/Code/Tools/ProjectManager/source/Qt/EngineSettings.h b/Code/Tools/ProjectManager/Source/EngineSettings.h
similarity index 100%
rename from Code/Tools/ProjectManager/source/Qt/EngineSettings.h
rename to Code/Tools/ProjectManager/Source/EngineSettings.h
diff --git a/Code/Tools/ProjectManager/source/Qt/EngineSettings.ui b/Code/Tools/ProjectManager/Source/EngineSettings.ui
similarity index 100%
rename from Code/Tools/ProjectManager/source/Qt/EngineSettings.ui
rename to Code/Tools/ProjectManager/Source/EngineSettings.ui
diff --git a/Code/Tools/ProjectManager/source/Qt/FirstTimeUse.cpp b/Code/Tools/ProjectManager/Source/FirstTimeUse.cpp
similarity index 100%
rename from Code/Tools/ProjectManager/source/Qt/FirstTimeUse.cpp
rename to Code/Tools/ProjectManager/Source/FirstTimeUse.cpp
diff --git a/Code/Tools/ProjectManager/source/Qt/FirstTimeUse.h b/Code/Tools/ProjectManager/Source/FirstTimeUse.h
similarity index 100%
rename from Code/Tools/ProjectManager/source/Qt/FirstTimeUse.h
rename to Code/Tools/ProjectManager/Source/FirstTimeUse.h
diff --git a/Code/Tools/ProjectManager/source/Qt/FirstTimeUse.ui b/Code/Tools/ProjectManager/Source/FirstTimeUse.ui
similarity index 100%
rename from Code/Tools/ProjectManager/source/Qt/FirstTimeUse.ui
rename to Code/Tools/ProjectManager/Source/FirstTimeUse.ui
diff --git a/Code/Tools/ProjectManager/source/Qt/GemCatalog.cpp b/Code/Tools/ProjectManager/Source/GemCatalog.cpp
similarity index 100%
rename from Code/Tools/ProjectManager/source/Qt/GemCatalog.cpp
rename to Code/Tools/ProjectManager/Source/GemCatalog.cpp
diff --git a/Code/Tools/ProjectManager/source/Qt/GemCatalog.h b/Code/Tools/ProjectManager/Source/GemCatalog.h
similarity index 100%
rename from Code/Tools/ProjectManager/source/Qt/GemCatalog.h
rename to Code/Tools/ProjectManager/Source/GemCatalog.h
diff --git a/Code/Tools/ProjectManager/source/Qt/GemCatalog.ui b/Code/Tools/ProjectManager/Source/GemCatalog.ui
similarity index 100%
rename from Code/Tools/ProjectManager/source/Qt/GemCatalog.ui
rename to Code/Tools/ProjectManager/Source/GemCatalog.ui
diff --git a/Code/Tools/ProjectManager/source/Qt/NewProjectSettings.cpp b/Code/Tools/ProjectManager/Source/NewProjectSettings.cpp
similarity index 100%
rename from Code/Tools/ProjectManager/source/Qt/NewProjectSettings.cpp
rename to Code/Tools/ProjectManager/Source/NewProjectSettings.cpp
diff --git a/Code/Tools/ProjectManager/source/Qt/NewProjectSettings.h b/Code/Tools/ProjectManager/Source/NewProjectSettings.h
similarity index 100%
rename from Code/Tools/ProjectManager/source/Qt/NewProjectSettings.h
rename to Code/Tools/ProjectManager/Source/NewProjectSettings.h
diff --git a/Code/Tools/ProjectManager/source/Qt/NewProjectSettings.ui b/Code/Tools/ProjectManager/Source/NewProjectSettings.ui
similarity index 100%
rename from Code/Tools/ProjectManager/source/Qt/NewProjectSettings.ui
rename to Code/Tools/ProjectManager/Source/NewProjectSettings.ui
diff --git a/Code/Tools/ProjectManager/source/Qt/ProjectManagerWindow.cpp b/Code/Tools/ProjectManager/Source/ProjectManagerWindow.cpp
similarity index 100%
rename from Code/Tools/ProjectManager/source/Qt/ProjectManagerWindow.cpp
rename to Code/Tools/ProjectManager/Source/ProjectManagerWindow.cpp
diff --git a/Code/Tools/ProjectManager/source/Qt/ProjectManagerWindow.h b/Code/Tools/ProjectManager/Source/ProjectManagerWindow.h
similarity index 100%
rename from Code/Tools/ProjectManager/source/Qt/ProjectManagerWindow.h
rename to Code/Tools/ProjectManager/Source/ProjectManagerWindow.h
diff --git a/Code/Tools/ProjectManager/source/Qt/ProjectManagerWindow.ui b/Code/Tools/ProjectManager/Source/ProjectManagerWindow.ui
similarity index 100%
rename from Code/Tools/ProjectManager/source/Qt/ProjectManagerWindow.ui
rename to Code/Tools/ProjectManager/Source/ProjectManagerWindow.ui
diff --git a/Code/Tools/ProjectManager/source/Qt/ProjectSettings.cpp b/Code/Tools/ProjectManager/Source/ProjectSettings.cpp
similarity index 100%
rename from Code/Tools/ProjectManager/source/Qt/ProjectSettings.cpp
rename to Code/Tools/ProjectManager/Source/ProjectSettings.cpp
diff --git a/Code/Tools/ProjectManager/source/Qt/ProjectSettings.h b/Code/Tools/ProjectManager/Source/ProjectSettings.h
similarity index 100%
rename from Code/Tools/ProjectManager/source/Qt/ProjectSettings.h
rename to Code/Tools/ProjectManager/Source/ProjectSettings.h
diff --git a/Code/Tools/ProjectManager/source/Qt/ProjectSettings.ui b/Code/Tools/ProjectManager/Source/ProjectSettings.ui
similarity index 100%
rename from Code/Tools/ProjectManager/source/Qt/ProjectSettings.ui
rename to Code/Tools/ProjectManager/Source/ProjectSettings.ui
diff --git a/Code/Tools/ProjectManager/source/Qt/ProjectsHome.cpp b/Code/Tools/ProjectManager/Source/ProjectsHome.cpp
similarity index 100%
rename from Code/Tools/ProjectManager/source/Qt/ProjectsHome.cpp
rename to Code/Tools/ProjectManager/Source/ProjectsHome.cpp
diff --git a/Code/Tools/ProjectManager/source/Qt/ProjectsHome.h b/Code/Tools/ProjectManager/Source/ProjectsHome.h
similarity index 100%
rename from Code/Tools/ProjectManager/source/Qt/ProjectsHome.h
rename to Code/Tools/ProjectManager/Source/ProjectsHome.h
diff --git a/Code/Tools/ProjectManager/source/Qt/ProjectsHome.ui b/Code/Tools/ProjectManager/Source/ProjectsHome.ui
similarity index 100%
rename from Code/Tools/ProjectManager/source/Qt/ProjectsHome.ui
rename to Code/Tools/ProjectManager/Source/ProjectsHome.ui
diff --git a/Code/Tools/ProjectManager/source/ScreenDefs.h b/Code/Tools/ProjectManager/Source/ScreenDefs.h
similarity index 100%
rename from Code/Tools/ProjectManager/source/ScreenDefs.h
rename to Code/Tools/ProjectManager/Source/ScreenDefs.h
diff --git a/Code/Tools/ProjectManager/source/ScreenFactory.cpp b/Code/Tools/ProjectManager/Source/ScreenFactory.cpp
similarity index 100%
rename from Code/Tools/ProjectManager/source/ScreenFactory.cpp
rename to Code/Tools/ProjectManager/Source/ScreenFactory.cpp
diff --git a/Code/Tools/ProjectManager/source/ScreenFactory.h b/Code/Tools/ProjectManager/Source/ScreenFactory.h
similarity index 100%
rename from Code/Tools/ProjectManager/source/ScreenFactory.h
rename to Code/Tools/ProjectManager/Source/ScreenFactory.h
diff --git a/Code/Tools/ProjectManager/source/Qt/ScreenWidget.h b/Code/Tools/ProjectManager/Source/ScreenWidget.h
similarity index 100%
rename from Code/Tools/ProjectManager/source/Qt/ScreenWidget.h
rename to Code/Tools/ProjectManager/Source/ScreenWidget.h
diff --git a/Code/Tools/ProjectManager/source/main.cpp b/Code/Tools/ProjectManager/Source/main.cpp
similarity index 100%
rename from Code/Tools/ProjectManager/source/main.cpp
rename to Code/Tools/ProjectManager/Source/main.cpp
From 625aa14aa8eac6699accbd38e11afe9133c9279f Mon Sep 17 00:00:00 2001
From: nggieber
Date: Wed, 5 May 2021 12:31:17 -0700
Subject: [PATCH 026/629] Updated files after moving all Qt folder into Source
---
Code/Tools/ProjectManager/CMakeLists.txt | 2 +-
.../ProjectManager/Source/EngineSettings.cpp | 4 +-
.../ProjectManager/Source/EngineSettings.h | 2 +-
.../ProjectManager/Source/FirstTimeUse.cpp | 4 +-
.../ProjectManager/Source/FirstTimeUse.h | 2 +-
.../ProjectManager/Source/GemCatalog.cpp | 4 +-
Code/Tools/ProjectManager/Source/GemCatalog.h | 2 +-
.../Source/NewProjectSettings.cpp | 4 +-
.../Source/NewProjectSettings.h | 2 +-
.../Source/ProjectManagerWindow.cpp | 4 +-
.../ProjectManager/Source/ProjectSettings.cpp | 4 +-
.../ProjectManager/Source/ProjectSettings.h | 2 +-
.../ProjectManager/Source/ProjectsHome.cpp | 4 +-
.../ProjectManager/Source/ProjectsHome.h | 2 +-
.../ProjectManager/Source/ScreenFactory.cpp | 12 ++---
.../ProjectManager/Source/ScreenFactory.h | 2 +-
.../ProjectManager/Source/ScreenWidget.h | 2 +-
Code/Tools/ProjectManager/Source/main.cpp | 2 +-
.../project_manager_files.cmake | 44 +++++++++----------
19 files changed, 52 insertions(+), 52 deletions(-)
diff --git a/Code/Tools/ProjectManager/CMakeLists.txt b/Code/Tools/ProjectManager/CMakeLists.txt
index 0961acd354..e4354bac32 100644
--- a/Code/Tools/ProjectManager/CMakeLists.txt
+++ b/Code/Tools/ProjectManager/CMakeLists.txt
@@ -27,7 +27,7 @@ ly_add_target(
PUBLIC
.
PRIVATE
- source
+ Source
BUILD_DEPENDENCIES
PRIVATE
diff --git a/Code/Tools/ProjectManager/Source/EngineSettings.cpp b/Code/Tools/ProjectManager/Source/EngineSettings.cpp
index 03040781f7..bc359637e4 100644
--- a/Code/Tools/ProjectManager/Source/EngineSettings.cpp
+++ b/Code/Tools/ProjectManager/Source/EngineSettings.cpp
@@ -10,9 +10,9 @@
*
*/
-#include
+#include
-#include
+#include
namespace O3DE::ProjectManager
{
diff --git a/Code/Tools/ProjectManager/Source/EngineSettings.h b/Code/Tools/ProjectManager/Source/EngineSettings.h
index 5f2aa5310a..f90f760798 100644
--- a/Code/Tools/ProjectManager/Source/EngineSettings.h
+++ b/Code/Tools/ProjectManager/Source/EngineSettings.h
@@ -12,7 +12,7 @@
#pragma once
#if !defined(Q_MOC_RUN)
-#include
+#include
#endif
namespace Ui
diff --git a/Code/Tools/ProjectManager/Source/FirstTimeUse.cpp b/Code/Tools/ProjectManager/Source/FirstTimeUse.cpp
index 9ba4eba2a6..5f5dcd5087 100644
--- a/Code/Tools/ProjectManager/Source/FirstTimeUse.cpp
+++ b/Code/Tools/ProjectManager/Source/FirstTimeUse.cpp
@@ -10,9 +10,9 @@
*
*/
-#include
+#include
-#include
+#include
namespace O3DE::ProjectManager
{
diff --git a/Code/Tools/ProjectManager/Source/FirstTimeUse.h b/Code/Tools/ProjectManager/Source/FirstTimeUse.h
index 677ca398fa..708513d493 100644
--- a/Code/Tools/ProjectManager/Source/FirstTimeUse.h
+++ b/Code/Tools/ProjectManager/Source/FirstTimeUse.h
@@ -12,7 +12,7 @@
#pragma once
#if !defined(Q_MOC_RUN)
-#include
+#include
#endif
namespace Ui
diff --git a/Code/Tools/ProjectManager/Source/GemCatalog.cpp b/Code/Tools/ProjectManager/Source/GemCatalog.cpp
index 6377eb5c8d..9d89740816 100644
--- a/Code/Tools/ProjectManager/Source/GemCatalog.cpp
+++ b/Code/Tools/ProjectManager/Source/GemCatalog.cpp
@@ -10,9 +10,9 @@
*
*/
-#include
+#include
-#include
+#include
namespace O3DE::ProjectManager
{
diff --git a/Code/Tools/ProjectManager/Source/GemCatalog.h b/Code/Tools/ProjectManager/Source/GemCatalog.h
index aee7b3a988..e45d865e58 100644
--- a/Code/Tools/ProjectManager/Source/GemCatalog.h
+++ b/Code/Tools/ProjectManager/Source/GemCatalog.h
@@ -12,7 +12,7 @@
#pragma once
#if !defined(Q_MOC_RUN)
-#include
+#include
#endif
namespace Ui
diff --git a/Code/Tools/ProjectManager/Source/NewProjectSettings.cpp b/Code/Tools/ProjectManager/Source/NewProjectSettings.cpp
index 7289c73329..2ebe54e682 100644
--- a/Code/Tools/ProjectManager/Source/NewProjectSettings.cpp
+++ b/Code/Tools/ProjectManager/Source/NewProjectSettings.cpp
@@ -10,9 +10,9 @@
*
*/
-#include
+#include
-#include
+#include
namespace O3DE::ProjectManager
{
diff --git a/Code/Tools/ProjectManager/Source/NewProjectSettings.h b/Code/Tools/ProjectManager/Source/NewProjectSettings.h
index 5790772a0c..f5fa91a9b9 100644
--- a/Code/Tools/ProjectManager/Source/NewProjectSettings.h
+++ b/Code/Tools/ProjectManager/Source/NewProjectSettings.h
@@ -12,7 +12,7 @@
#pragma once
#if !defined(Q_MOC_RUN)
-#include
+#include
#endif
namespace Ui
diff --git a/Code/Tools/ProjectManager/Source/ProjectManagerWindow.cpp b/Code/Tools/ProjectManager/Source/ProjectManagerWindow.cpp
index b37f73a0c5..12980fc836 100644
--- a/Code/Tools/ProjectManager/Source/ProjectManagerWindow.cpp
+++ b/Code/Tools/ProjectManager/Source/ProjectManagerWindow.cpp
@@ -10,7 +10,7 @@
*
*/
-#include
+#include
#include
#include
@@ -18,7 +18,7 @@
#include
-#include
+#include
namespace O3DE::ProjectManager
{
diff --git a/Code/Tools/ProjectManager/Source/ProjectSettings.cpp b/Code/Tools/ProjectManager/Source/ProjectSettings.cpp
index 56b27f5fe3..bc653f9c5b 100644
--- a/Code/Tools/ProjectManager/Source/ProjectSettings.cpp
+++ b/Code/Tools/ProjectManager/Source/ProjectSettings.cpp
@@ -10,9 +10,9 @@
*
*/
-#include
+#include
-#include
+#include
namespace O3DE::ProjectManager
{
diff --git a/Code/Tools/ProjectManager/Source/ProjectSettings.h b/Code/Tools/ProjectManager/Source/ProjectSettings.h
index c9356db9bf..e7781d3a2a 100644
--- a/Code/Tools/ProjectManager/Source/ProjectSettings.h
+++ b/Code/Tools/ProjectManager/Source/ProjectSettings.h
@@ -12,7 +12,7 @@
#pragma once
#if !defined(Q_MOC_RUN)
-#include
+#include
#endif
namespace Ui
diff --git a/Code/Tools/ProjectManager/Source/ProjectsHome.cpp b/Code/Tools/ProjectManager/Source/ProjectsHome.cpp
index ef85d71950..1a451f3d10 100644
--- a/Code/Tools/ProjectManager/Source/ProjectsHome.cpp
+++ b/Code/Tools/ProjectManager/Source/ProjectsHome.cpp
@@ -10,9 +10,9 @@
*
*/
-#include
+#include
-#include
+#include
namespace O3DE::ProjectManager
{
diff --git a/Code/Tools/ProjectManager/Source/ProjectsHome.h b/Code/Tools/ProjectManager/Source/ProjectsHome.h
index b5a062f2dd..4cc2918a38 100644
--- a/Code/Tools/ProjectManager/Source/ProjectsHome.h
+++ b/Code/Tools/ProjectManager/Source/ProjectsHome.h
@@ -12,7 +12,7 @@
#pragma once
#if !defined(Q_MOC_RUN)
-#include
+#include
#endif
namespace Ui
diff --git a/Code/Tools/ProjectManager/Source/ScreenFactory.cpp b/Code/Tools/ProjectManager/Source/ScreenFactory.cpp
index e29994d162..b07816e69e 100644
--- a/Code/Tools/ProjectManager/Source/ScreenFactory.cpp
+++ b/Code/Tools/ProjectManager/Source/ScreenFactory.cpp
@@ -11,12 +11,12 @@
*/
#include
-#include
-#include
-#include
-#include
-#include
-#include
+#include
+#include
+#include
+#include
+#include
+#include
namespace O3DE::ProjectManager
{
diff --git a/Code/Tools/ProjectManager/Source/ScreenFactory.h b/Code/Tools/ProjectManager/Source/ScreenFactory.h
index addc868dfa..ea68534a08 100644
--- a/Code/Tools/ProjectManager/Source/ScreenFactory.h
+++ b/Code/Tools/ProjectManager/Source/ScreenFactory.h
@@ -13,7 +13,7 @@
#include
-#include
+#include
#include
diff --git a/Code/Tools/ProjectManager/Source/ScreenWidget.h b/Code/Tools/ProjectManager/Source/ScreenWidget.h
index 0cec4bed03..b4c4fd190c 100644
--- a/Code/Tools/ProjectManager/Source/ScreenWidget.h
+++ b/Code/Tools/ProjectManager/Source/ScreenWidget.h
@@ -12,7 +12,7 @@
#pragma once
#if !defined(Q_MOC_RUN)
-#include
+#include
#include
#endif
diff --git a/Code/Tools/ProjectManager/Source/main.cpp b/Code/Tools/ProjectManager/Source/main.cpp
index 7ae977818b..149da79491 100644
--- a/Code/Tools/ProjectManager/Source/main.cpp
+++ b/Code/Tools/ProjectManager/Source/main.cpp
@@ -16,7 +16,7 @@
#include
#include
-#include
+#include
#include
#include
diff --git a/Code/Tools/ProjectManager/project_manager_files.cmake b/Code/Tools/ProjectManager/project_manager_files.cmake
index 0616b28e1e..2a7656c8c4 100644
--- a/Code/Tools/ProjectManager/project_manager_files.cmake
+++ b/Code/Tools/ProjectManager/project_manager_files.cmake
@@ -15,26 +15,26 @@ set(FILES
source/ScreenDefs.h
source/ScreenFactory.h
source/ScreenFactory.cpp
- source/Qt/ScreenWidget.h
- source/Qt/FirstTimeUse.h
- source/Qt/FirstTimeUse.cpp
- source/Qt/FirstTimeUse.ui
- source/Qt/ProjectManagerWindow.h
- source/Qt/ProjectManagerWindow.cpp
- source/Qt/ProjectManagerWindow.ui
- source/Qt/NewProjectSettings.h
- source/Qt/NewProjectSettings.cpp
- source/Qt/NewProjectSettings.ui
- source/Qt/GemCatalog.h
- source/Qt/GemCatalog.cpp
- source/Qt/GemCatalog.ui
- source/Qt/ProjectsHome.h
- source/Qt/ProjectsHome.cpp
- source/Qt/ProjectsHome.ui
- source/Qt/ProjectSettings.h
- source/Qt/ProjectSettings.cpp
- source/Qt/ProjectSettings.ui
- source/Qt/EngineSettings.h
- source/Qt/EngineSettings.cpp
- source/Qt/EngineSettings.ui
+ source/ScreenWidget.h
+ source/FirstTimeUse.h
+ source/FirstTimeUse.cpp
+ source/FirstTimeUse.ui
+ source/ProjectManagerWindow.h
+ source/ProjectManagerWindow.cpp
+ source/ProjectManagerWindow.ui
+ source/NewProjectSettings.h
+ source/NewProjectSettings.cpp
+ source/NewProjectSettings.ui
+ source/GemCatalog.h
+ source/GemCatalog.cpp
+ source/GemCatalog.ui
+ source/ProjectsHome.h
+ source/ProjectsHome.cpp
+ source/ProjectsHome.ui
+ source/ProjectSettings.h
+ source/ProjectSettings.cpp
+ source/ProjectSettings.ui
+ source/EngineSettings.h
+ source/EngineSettings.cpp
+ source/EngineSettings.ui
)
\ No newline at end of file
From d27aa0f5846c82cd5f1b56f90087c2628c772f88 Mon Sep 17 00:00:00 2001
From: pappeste
Date: Wed, 5 May 2021 12:31:34 -0700
Subject: [PATCH 027/629] replaced ly_add_dependencies with ly_add_target_files
so settingsregistry is happy
---
cmake/Platform/Common/Install_common.cmake | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/cmake/Platform/Common/Install_common.cmake b/cmake/Platform/Common/Install_common.cmake
index dbffcc8d12..f351b074a0 100644
--- a/cmake/Platform/Common/Install_common.cmake
+++ b/cmake/Platform/Common/Install_common.cmake
@@ -157,7 +157,7 @@ function(ly_generate_target_config_file NAME)
string(APPEND target_location "\"\${LY_ROOT_FOLDER}/${library_output_directory}/${PAL_PLATFORM_NAME}/$/${target_library_output_subdirectory}/$\"")
elseif(target_type STREQUAL SHARED_LIBRARY)
string(APPEND target_location "\"\${LY_ROOT_FOLDER}/${archive_output_directory}/${PAL_PLATFORM_NAME}/$/$\"")
- string(APPEND target_file_contents "ly_add_dependencies(${NAME} \"\${LY_ROOT_FOLDER}/${library_output_directory}/${PAL_PLATFORM_NAME}/$/${target_library_output_subdirectory}/$\")\n")
+ string(APPEND target_file_contents "ly_add_target_files(TARGET ${NAME} FILES \"\${LY_ROOT_FOLDER}/${library_output_directory}/${PAL_PLATFORM_NAME}/$/${target_library_output_subdirectory}/$\")\n")
else() # STATIC_LIBRARY, OBJECT_LIBRARY, INTERFACE_LIBRARY
string(APPEND target_location "\"\${LY_ROOT_FOLDER}/${archive_output_directory}/${PAL_PLATFORM_NAME}/$/$\"")
endif()
From 2044832bb1634b77cc25112bf5ad146146b26340 Mon Sep 17 00:00:00 2001
From: nggieber
Date: Wed, 5 May 2021 12:41:05 -0700
Subject: [PATCH 028/629] Updated Source capitalization in cmake files list
---
.../project_manager_files.cmake | 52 +++++++++----------
1 file changed, 26 insertions(+), 26 deletions(-)
diff --git a/Code/Tools/ProjectManager/project_manager_files.cmake b/Code/Tools/ProjectManager/project_manager_files.cmake
index 2a7656c8c4..698027ea15 100644
--- a/Code/Tools/ProjectManager/project_manager_files.cmake
+++ b/Code/Tools/ProjectManager/project_manager_files.cmake
@@ -11,30 +11,30 @@
set(FILES
project_manager.qrc
- source/main.cpp
- source/ScreenDefs.h
- source/ScreenFactory.h
- source/ScreenFactory.cpp
- source/ScreenWidget.h
- source/FirstTimeUse.h
- source/FirstTimeUse.cpp
- source/FirstTimeUse.ui
- source/ProjectManagerWindow.h
- source/ProjectManagerWindow.cpp
- source/ProjectManagerWindow.ui
- source/NewProjectSettings.h
- source/NewProjectSettings.cpp
- source/NewProjectSettings.ui
- source/GemCatalog.h
- source/GemCatalog.cpp
- source/GemCatalog.ui
- source/ProjectsHome.h
- source/ProjectsHome.cpp
- source/ProjectsHome.ui
- source/ProjectSettings.h
- source/ProjectSettings.cpp
- source/ProjectSettings.ui
- source/EngineSettings.h
- source/EngineSettings.cpp
- source/EngineSettings.ui
+ Source/main.cpp
+ Source/ScreenDefs.h
+ Source/ScreenFactory.h
+ Source/ScreenFactory.cpp
+ Source/ScreenWidget.h
+ Source/FirstTimeUse.h
+ Source/FirstTimeUse.cpp
+ Source/FirstTimeUse.ui
+ Source/ProjectManagerWindow.h
+ Source/ProjectManagerWindow.cpp
+ Source/ProjectManagerWindow.ui
+ Source/NewProjectSettings.h
+ Source/NewProjectSettings.cpp
+ Source/NewProjectSettings.ui
+ Source/GemCatalog.h
+ Source/GemCatalog.cpp
+ Source/GemCatalog.ui
+ Source/ProjectsHome.h
+ Source/ProjectsHome.cpp
+ Source/ProjectsHome.ui
+ Source/ProjectSettings.h
+ Source/ProjectSettings.cpp
+ Source/ProjectSettings.ui
+ Source/EngineSettings.h
+ Source/EngineSettings.cpp
+ Source/EngineSettings.ui
)
\ No newline at end of file
From 5b98227a773177b68999bd25fcff0b4ea2522385 Mon Sep 17 00:00:00 2001
From: lumberyard-employee-dm
<56135373+lumberyard-employee-dm@users.noreply.github.com>
Date: Wed, 5 May 2021 14:58:31 -0500
Subject: [PATCH 029/629] Adding newline to the end of
project_manager_files.cmake
---
Code/Tools/ProjectManager/project_manager_files.cmake | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Code/Tools/ProjectManager/project_manager_files.cmake b/Code/Tools/ProjectManager/project_manager_files.cmake
index 698027ea15..333180ea78 100644
--- a/Code/Tools/ProjectManager/project_manager_files.cmake
+++ b/Code/Tools/ProjectManager/project_manager_files.cmake
@@ -37,4 +37,4 @@ set(FILES
Source/EngineSettings.h
Source/EngineSettings.cpp
Source/EngineSettings.ui
-)
\ No newline at end of file
+)
From f6187f510a10d8f05bb884a261b3ae4c7b759e46 Mon Sep 17 00:00:00 2001
From: pappeste
Date: Wed, 5 May 2021 16:21:25 -0700
Subject: [PATCH 030/629] config file going to the wrong place
---
cmake/Platform/Common/Install_common.cmake | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/cmake/Platform/Common/Install_common.cmake b/cmake/Platform/Common/Install_common.cmake
index f351b074a0..f6e2488126 100644
--- a/cmake/Platform/Common/Install_common.cmake
+++ b/cmake/Platform/Common/Install_common.cmake
@@ -180,7 +180,7 @@ endif()
file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/install/${NAME}/${NAME}_$.cmake" CONTENT "${target_file_contents}")
get_target_property(target_source_dir ${NAME} SOURCE_DIR)
file(RELATIVE_PATH target_source_dir_relative ${CMAKE_SOURCE_DIR} ${target_source_dir})
- install(FILES "${CMAKE_CURRENT_BINARY_DIR}/install/${NAME}_$.cmake"
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/install/${NAME}/${NAME}_$.cmake"
DESTINATION ${target_source_dir_relative}/${NAME}
COMPONENT ${ly_install_target_COMPONENT}
)
From e63c36019470966c54f5dda17b5b3eac79f85a6e Mon Sep 17 00:00:00 2001
From: pappeste
Date: Wed, 5 May 2021 16:21:41 -0700
Subject: [PATCH 031/629] small unrelated fix
---
Code/Tools/ProjectManager/CMakeLists.txt | 3 ---
1 file changed, 3 deletions(-)
diff --git a/Code/Tools/ProjectManager/CMakeLists.txt b/Code/Tools/ProjectManager/CMakeLists.txt
index e4354bac32..2f0603a705 100644
--- a/Code/Tools/ProjectManager/CMakeLists.txt
+++ b/Code/Tools/ProjectManager/CMakeLists.txt
@@ -24,11 +24,8 @@ ly_add_target(
project_manager_files.cmake
Platform/${PAL_PLATFORM_NAME}/PAL_${PAL_PLATFORM_NAME_LOWERCASE}.cmake
INCLUDE_DIRECTORIES
- PUBLIC
- .
PRIVATE
Source
-
BUILD_DEPENDENCIES
PRIVATE
3rdParty::Qt::Core
From 9fe893830c6a4201c6ef5e6e4e244e853e9aa211 Mon Sep 17 00:00:00 2001
From: pappeste