Initial commit

This commit is contained in:
alexpete
2021-03-05 11:26:34 -08:00
commit a10351f38d
27091 changed files with 5521199 additions and 0 deletions
@@ -0,0 +1,113 @@
/*
* 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.
*
*/
#include <AzTest/AzTest.h>
#include <AzCore/UnitTest/UnitTest.h>
#include <AzToolsFramework/ToolsComponents/TransformComponent.h>
#include <AzToolsFramework/UnitTest/AzToolsFrameworkTestHelpers.h>
namespace AzToolsFramework
{
struct TransformTestEntityHierarchy
{
AZ::EntityId m_parentId;
AZ::EntityId m_childId;
AZ::EntityId m_grandchild1Id;
AZ::EntityId m_grandchild2Id;
};
class EditorTransformComponentTest
: public UnitTest::ToolsApplicationFixture
{
public:
static TransformTestEntityHierarchy BuildTestHierarchy()
{
TransformTestEntityHierarchy result;
result.m_parentId = UnitTest::CreateDefaultEditorEntity("Parent");
result.m_childId = UnitTest::CreateDefaultEditorEntity("Child");
result.m_grandchild1Id = UnitTest::CreateDefaultEditorEntity("Grandchild1");
result.m_grandchild2Id = UnitTest::CreateDefaultEditorEntity("Grandchild2");
// Set parent-child relationships
AZ::TransformBus::Event(result.m_childId, &AZ::TransformBus::Events::SetParent, result.m_parentId);
AZ::TransformBus::Event(result.m_grandchild1Id, &AZ::TransformBus::Events::SetParent, result.m_childId);
AZ::TransformBus::Event(result.m_grandchild2Id, &AZ::TransformBus::Events::SetParent, result.m_childId);
return result;
}
};
TEST_F(EditorTransformComponentTest, TransformTests_EntityHasParent_WorldScaleInheritsParentScale)
{
TransformTestEntityHierarchy hierarchy = BuildTestHierarchy();
// Set scale to parent entity
const AZ::Vector3 parentScale(2.0f, 1.0f, 3.0f);
AZ::TransformBus::Event(hierarchy.m_parentId, &AZ::TransformInterface::SetLocalScale, parentScale);
// Set scale to child entity
const AZ::Vector3 childScale(5.0f, 6.0f, 10.0f);
AZ::TransformBus::Event(hierarchy.m_childId, &AZ::TransformInterface::SetLocalScale, childScale);
const AZ::Vector3 expectedScale = childScale * parentScale;
AZ::Vector3 childWorldScale = AZ::Vector3::CreateOne();
AZ::TransformBus::EventResult(childWorldScale, hierarchy.m_childId, &AZ::TransformBus::Events::GetWorldScale);
EXPECT_THAT(childWorldScale, UnitTest::IsClose(expectedScale));
}
TEST_F(EditorTransformComponentTest, TransformTests_GetChildren_DirectChildrenMatchHierarchy)
{
TransformTestEntityHierarchy hierarchy = BuildTestHierarchy();
EntityIdList children;
AZ::TransformBus::EventResult(children, hierarchy.m_parentId, &AZ::TransformBus::Events::GetChildren);
EXPECT_EQ(children.size(), 1);
EXPECT_EQ(children[0], hierarchy.m_childId);
}
TEST_F(EditorTransformComponentTest, TransformTests_GetAllDescendants_AllDescendantsMatchHierarchy)
{
TransformTestEntityHierarchy hierarchy = BuildTestHierarchy();
EntityIdList descendants;
AZ::TransformBus::EventResult(descendants, hierarchy.m_parentId, &AZ::TransformBus::Events::GetAllDescendants);
// Order of descendants here and in other test cases depends on TransformHierarchyInformationBus
// Sorting it to get predictable order and be able to verify by index
std::sort(descendants.begin(), descendants.end());
EXPECT_EQ(descendants.size(), 3);
EXPECT_EQ(descendants[0], hierarchy.m_childId);
EXPECT_EQ(descendants[1], hierarchy.m_grandchild1Id);
EXPECT_EQ(descendants[2], hierarchy.m_grandchild2Id);
}
TEST_F(EditorTransformComponentTest, TransformTests_GetEntityAndAllDescendants_AllDescendantsMatchHierarchyAndResultIncludesParentEntity)
{
TransformTestEntityHierarchy hierarchy = BuildTestHierarchy();
EntityIdList entityAndDescendants;
AZ::TransformBus::EventResult(entityAndDescendants, hierarchy.m_parentId, &AZ::TransformBus::Events::GetEntityAndAllDescendants);
std::sort(entityAndDescendants.begin(), entityAndDescendants.end());
EXPECT_EQ(entityAndDescendants.size(), 4);
EXPECT_EQ(entityAndDescendants[0], hierarchy.m_parentId);
EXPECT_EQ(entityAndDescendants[1], hierarchy.m_childId);
EXPECT_EQ(entityAndDescendants[2], hierarchy.m_grandchild1Id);
EXPECT_EQ(entityAndDescendants[3], hierarchy.m_grandchild2Id);
}
} // namespace AzToolsFramework