Integrating latest from github/staging

Integrating up through commit 5e1bdae
This commit is contained in:
alexpete
2021-03-26 14:31:50 -07:00
parent 9c54341af8
commit 36c4e827bd
764 changed files with 11453 additions and 20251 deletions
@@ -156,7 +156,7 @@ namespace AZ
// get project folder
auto settingsRegistry = AZ::SettingsRegistry::Get();
AZ::IO::FixedMaxPath projectPath;
if (!settingsRegistry->Get(projectPath.Native(), AZ::SettingsRegistryMergeUtils::FilePathKey_SourceGameFolder))
if (!settingsRegistry->Get(projectPath.Native(), AZ::SettingsRegistryMergeUtils::FilePathKey_ProjectPath))
{
return Events::ProcessingResult::Ignored;
}
@@ -47,6 +47,8 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
BUILD_DEPENDENCIES
PRIVATE
AZ::AzTest
AZ::AzFramework
AZ::SceneCore
AZ::SceneData
)
ly_add_googletest(
@@ -144,92 +144,92 @@ namespace AZ
return m_shininess;
}
void MaterialData::SetUseColorMap(bool useColorMap)
void MaterialData::SetUseColorMap(AZStd::optional<bool> useColorMap)
{
m_useColorMap = useColorMap;
}
bool MaterialData::GetUseColorMap() const
AZStd::optional<bool> MaterialData::GetUseColorMap() const
{
return m_useColorMap;
}
void MaterialData::SetBaseColor(const AZ::Vector3& baseColor)
void MaterialData::SetBaseColor(const AZStd::optional<AZ::Vector3>& baseColor)
{
m_baseColor = baseColor;
}
const AZ::Vector3& MaterialData::GetBaseColor() const
AZStd::optional<AZ::Vector3> MaterialData::GetBaseColor() const
{
return m_baseColor;
}
void MaterialData::SetUseMetallicMap(bool useMetallicMap)
void MaterialData::SetUseMetallicMap(AZStd::optional<bool> useMetallicMap)
{
m_useMetallicMap = useMetallicMap;
}
bool MaterialData::GetUseMetallicMap() const
AZStd::optional<bool> MaterialData::GetUseMetallicMap() const
{
return m_useMetallicMap;
}
void MaterialData::SetMetallicFactor(float metallicFactor)
void MaterialData::SetMetallicFactor(AZStd::optional<float> metallicFactor)
{
m_metallicFactor = metallicFactor;
}
float MaterialData::GetMetallicFactor() const
AZStd::optional<float> MaterialData::GetMetallicFactor() const
{
return m_metallicFactor;
}
void MaterialData::SetUseRoughnessMap(bool useRoughnessMap)
void MaterialData::SetUseRoughnessMap(AZStd::optional<bool> useRoughnessMap)
{
m_useRoughnessMap = useRoughnessMap;
}
bool MaterialData::GetUseRoughnessMap() const
AZStd::optional<bool> MaterialData::GetUseRoughnessMap() const
{
return m_useRoughnessMap;
}
void MaterialData::SetRoughnessFactor(float roughnessFactor)
void MaterialData::SetRoughnessFactor(AZStd::optional<float> roughnessFactor)
{
m_roughnessFactor = roughnessFactor;
}
float MaterialData::GetRoughnessFactor() const
AZStd::optional<float> MaterialData::GetRoughnessFactor() const
{
return m_roughnessFactor;
}
void MaterialData::SetUseEmissiveMap(bool useEmissiveMap)
void MaterialData::SetUseEmissiveMap(AZStd::optional<bool> useEmissiveMap)
{
m_useEmissiveMap = useEmissiveMap;
}
bool MaterialData::GetUseEmissiveMap() const
AZStd::optional<bool> MaterialData::GetUseEmissiveMap() const
{
return m_useEmissiveMap;
}
void MaterialData::SetEmissiveIntensity(float emissiveIntensity)
void MaterialData::SetEmissiveIntensity(AZStd::optional<float> emissiveIntensity)
{
m_emissiveIntensity = emissiveIntensity;
}
float MaterialData::GetEmissiveIntensity() const
AZStd::optional<float> MaterialData::GetEmissiveIntensity() const
{
return m_emissiveIntensity;
}
void MaterialData::SetUseAOMap(bool useAOMap)
void MaterialData::SetUseAOMap(AZStd::optional<bool> useAOMap)
{
m_useAOMap = useAOMap;
}
bool MaterialData::GetUseAOMap() const
AZStd::optional<bool> MaterialData::GetUseAOMap() const
{
return m_useAOMap;
}
@@ -47,15 +47,15 @@ namespace AZ
SCENE_DATA_API virtual void SetOpacity(float opacity);
SCENE_DATA_API virtual void SetShininess(float shininess);
SCENE_DATA_API virtual void SetUniqueId(uint64_t uid);
SCENE_DATA_API virtual void SetUseColorMap(bool useColorMap);
SCENE_DATA_API virtual void SetBaseColor(const AZ::Vector3& baseColor);
SCENE_DATA_API virtual void SetUseMetallicMap(bool useMetallicMap);
SCENE_DATA_API virtual void SetMetallicFactor(float metallicFactor);
SCENE_DATA_API virtual void SetUseRoughnessMap(bool useRoughnessMap);
SCENE_DATA_API virtual void SetRoughnessFactor(float roughnessFactor);
SCENE_DATA_API virtual void SetUseEmissiveMap(bool useEmissiveMap);
SCENE_DATA_API virtual void SetEmissiveIntensity(float emissiveIntensity);
SCENE_DATA_API virtual void SetUseAOMap(bool useAOMap);
SCENE_DATA_API virtual void SetUseColorMap(AZStd::optional<bool> useColorMap);
SCENE_DATA_API virtual void SetBaseColor(const AZStd::optional<AZ::Vector3>& baseColor);
SCENE_DATA_API virtual void SetUseMetallicMap(AZStd::optional<bool> useMetallicMap);
SCENE_DATA_API virtual void SetMetallicFactor(AZStd::optional<float> metallicFactor);
SCENE_DATA_API virtual void SetUseRoughnessMap(AZStd::optional<bool> useRoughnessMap);
SCENE_DATA_API virtual void SetRoughnessFactor(AZStd::optional<float> roughnessFactor);
SCENE_DATA_API virtual void SetUseEmissiveMap(AZStd::optional<bool> useEmissiveMap);
SCENE_DATA_API virtual void SetEmissiveIntensity(AZStd::optional<float> emissiveIntensity);
SCENE_DATA_API virtual void SetUseAOMap(AZStd::optional<bool> useAOMap);
SCENE_DATA_API const AZStd::string& GetTexture(TextureMapType mapType) const override;
@@ -67,15 +67,15 @@ namespace AZ
SCENE_DATA_API float GetOpacity() const override;
SCENE_DATA_API float GetShininess() const override;
SCENE_DATA_API uint64_t GetUniqueId() const override;
SCENE_DATA_API bool GetUseColorMap() const override;
SCENE_DATA_API const AZ::Vector3& GetBaseColor() const override;
SCENE_DATA_API bool GetUseMetallicMap() const override;
SCENE_DATA_API float GetMetallicFactor() const override;
SCENE_DATA_API bool GetUseRoughnessMap() const override;
SCENE_DATA_API float GetRoughnessFactor() const override;
SCENE_DATA_API bool GetUseEmissiveMap() const override;
SCENE_DATA_API float GetEmissiveIntensity() const override;
SCENE_DATA_API bool GetUseAOMap() const override;
SCENE_DATA_API AZStd::optional<bool> GetUseColorMap() const override;
SCENE_DATA_API AZStd::optional<AZ::Vector3> GetBaseColor() const override;
SCENE_DATA_API AZStd::optional<bool> GetUseMetallicMap() const override;
SCENE_DATA_API AZStd::optional<float> GetMetallicFactor() const override;
SCENE_DATA_API AZStd::optional<bool> GetUseRoughnessMap() const override;
SCENE_DATA_API AZStd::optional<float> GetRoughnessFactor() const override;
SCENE_DATA_API AZStd::optional<bool> GetUseEmissiveMap() const override;
SCENE_DATA_API AZStd::optional<float> GetEmissiveIntensity() const override;
SCENE_DATA_API AZStd::optional<bool> GetUseAOMap() const override;
static void Reflect(ReflectContext* context);
@@ -85,18 +85,18 @@ namespace AZ
AZ::Vector3 m_diffuseColor;
AZ::Vector3 m_specularColor;
AZ::Vector3 m_emissiveColor;
AZ::Vector3 m_baseColor;
AZStd::optional<AZ::Vector3> m_baseColor;
float m_opacity;
float m_shininess;
float m_metallicFactor = 0.0f;
float m_roughnessFactor = 0.0f;
float m_emissiveIntensity = 0.0f;
AZStd::optional<float> m_metallicFactor = AZStd::nullopt;
AZStd::optional<float> m_roughnessFactor = AZStd::nullopt;
AZStd::optional<float> m_emissiveIntensity = AZStd::nullopt;
bool m_useColorMap = false;
bool m_useMetallicMap = false;
bool m_useRoughnessMap = false;
bool m_useEmissiveMap = false;
bool m_useAOMap = false;
AZStd::optional<bool> m_useColorMap = AZStd::nullopt;
AZStd::optional<bool> m_useMetallicMap = AZStd::nullopt;
AZStd::optional<bool> m_useRoughnessMap = AZStd::nullopt;
AZStd::optional<bool> m_useEmissiveMap = AZStd::nullopt;
AZStd::optional<bool> m_useAOMap = AZStd::nullopt;
bool m_isNoDraw;
@@ -66,6 +66,19 @@ namespace AZ
m_vertexLinks[vertexIndex].push_back(link);
}
bool CompareLinks(const SceneAPI::DataTypes::ISkinWeightData::Link& left, const SceneAPI::DataTypes::ISkinWeightData::Link& right)
{
// sort highest to lowest
return left.weight >= right.weight;
}
void SkinWeightData::AddAndSortLink(size_t vertexIndex, const SceneAPI::DataTypes::ISkinWeightData::Link& link)
{
AZ_Assert(vertexIndex < m_vertexLinks.size(), "Invalid vertex index %i for skin weight data links.", vertexIndex);
m_vertexLinks[vertexIndex].insert(
AZStd::lower_bound(m_vertexLinks[vertexIndex].begin(), m_vertexLinks[vertexIndex].end(), link, CompareLinks), link);
}
int SkinWeightData::GetBoneId(const AZStd::string& boneName)
{
if (m_boneNameIdMap.find(boneName) == m_boneNameIdMap.end())
@@ -41,6 +41,7 @@ namespace AZ
SCENE_DATA_API void ResizeContainerSpace(size_t size);
SCENE_DATA_API void AppendLink(size_t vertexIndex, const SceneAPI::DataTypes::ISkinWeightData::Link& link);
SCENE_DATA_API void AddAndSortLink(size_t vertexIndex, const SceneAPI::DataTypes::ISkinWeightData::Link& link);
SCENE_DATA_API int GetBoneId(const AZStd::string& boneName);
@@ -14,4 +14,5 @@ set(FILES
Tests/GraphData/MeshDataTests.cpp
Tests/GraphData/MeshDataPrimitiveUtilsTests.cpp
Tests/GraphData/GraphDataBehaviorTests.cpp
Tests/SceneManifest/SceneManifestRuleTests.cpp
)
@@ -0,0 +1,178 @@
/*
* 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 <SceneAPI/SceneCore/Containers/SceneManifest.h>
#include <SceneAPI/SceneData/ReflectionRegistrar.h>
#include <SceneAPI/SceneData/Rules/CommentRule.h>
#include <AzCore/Name/NameDictionary.h>
#include <AzCore/RTTI/BehaviorContext.h>
#include <AzCore/RTTI/ReflectionManager.h>
#include <AzCore/Serialization/Json/RegistrationContext.h>
#include <AzCore/Serialization/Json/JsonSystemComponent.h>
#include <AzCore/std/smart_ptr/make_shared.h>
#include <AzCore/std/smart_ptr/shared_ptr.h>
#include <AzCore/UnitTest/TestTypes.h>
#include <AzFramework/FileFunc/FileFunc.h>
#include <AzCore/Math/Quaternion.h>
namespace AZ
{
namespace SceneAPI
{
class MockRotationRule final
: public DataTypes::IManifestObject
{
public:
AZ_RTTI(MockRotationRule, "{90AECE4A-58D4-411C-9CDE-59B54C59354F}", DataTypes::IManifestObject);
AZ_CLASS_ALLOCATOR(MockRotationRule, AZ::SystemAllocator, 0);
static void Reflect(ReflectContext* context)
{
AZ::SerializeContext* serializeContext = azrtti_cast<AZ::SerializeContext*>(context);
if (serializeContext)
{
serializeContext->Class<MockRotationRule, DataTypes::IManifestObject>()
->Version(1)
->Field("rotation", &MockRotationRule::m_rotation);
}
}
AZ::Quaternion m_rotation = AZ::Quaternion::CreateIdentity();
};
namespace Containers
{
class SceneManifestContainer
{
public:
static AZ::Outcome<rapidjson::Document, AZStd::string> SaveToJsonDocumentHelper(
SceneAPI::Containers::SceneManifest& manifest,
SerializeContext* context,
JsonRegistrationContext* registrationContext)
{
return manifest.SaveToJsonDocument(context, registrationContext);
}
};
}
}
namespace SceneData
{
class SceneManifest_JSON
: public UnitTest::AllocatorsFixture
{
public:
AZStd::unique_ptr<AZ::SerializeContext> m_serializeContext;
AZStd::unique_ptr<AZ::JsonRegistrationContext> m_jsonRegistrationContext;
AZStd::unique_ptr<JsonSystemComponent> m_jsonSystemComponent;
void SetUp() override
{
UnitTest::AllocatorsFixture::SetUp();
AZ::NameDictionary::Create();
m_serializeContext = AZStd::make_unique<AZ::SerializeContext>();
AZ::SceneAPI::RegisterDataTypeReflection(m_serializeContext.get());
AZ::SceneAPI::Containers::SceneManifest::Reflect(m_serializeContext.get());
AZ::SceneAPI::DataTypes::IManifestObject::Reflect(m_serializeContext.get());
AZ::SceneAPI::MockRotationRule::Reflect(m_serializeContext.get());
m_jsonRegistrationContext = AZStd::make_unique<AZ::JsonRegistrationContext>();
m_jsonSystemComponent = AZStd::make_unique<JsonSystemComponent>();
m_jsonSystemComponent->Reflect(m_jsonRegistrationContext.get());
}
void TearDown() override
{
m_jsonRegistrationContext->EnableRemoveReflection();
m_jsonSystemComponent->Reflect(m_jsonRegistrationContext.get());
m_jsonRegistrationContext->DisableRemoveReflection();
m_serializeContext.reset();
m_jsonRegistrationContext.reset();
m_jsonSystemComponent.reset();
AZ::NameDictionary::Destroy();
UnitTest::AllocatorsFixture::TearDown();
}
};
TEST_F(SceneManifest_JSON, LoadFromString_BlankManifest_HasDefaultParts)
{
SceneAPI::Containers::SceneManifest sceneManifest;
sceneManifest.LoadFromString("{}", m_serializeContext.get(), m_jsonRegistrationContext.get(), false);
}
TEST_F(SceneManifest_JSON, LoadFromString_LoadRotationRuleWithQuaternion_ReturnsTrue)
{
using namespace SceneAPI::Containers;
SceneManifest sceneManifest;
auto anglesInDegrees = AZ::Vector3(45.0f, 90.0f, 45.0f);
auto originRule = AZStd::make_shared<AZ::SceneAPI::MockRotationRule>();
originRule->m_rotation = Quaternion::CreateFromEulerAnglesDegrees(anglesInDegrees);
sceneManifest.AddEntry(originRule);
auto writeToJsonResult = SceneManifestContainer::SaveToJsonDocumentHelper(sceneManifest, m_serializeContext.get(), m_jsonRegistrationContext.get());
ASSERT_TRUE(writeToJsonResult.IsSuccess());
AZStd::string jsonText;
auto writeToStringResult = AzFramework::FileFunc::WriteJsonToString(writeToJsonResult.GetValue(), jsonText);
ASSERT_TRUE(writeToStringResult.IsSuccess());
EXPECT_THAT(jsonText.c_str(), ::testing::HasSubstr(R"("$type": "MockRotationRule")"));
EXPECT_THAT(jsonText.c_str(), ::testing::HasSubstr(R"("rotation": [)"));
SceneManifest loaded;
auto loadFromStringResult = loaded.LoadFromString(jsonText, m_serializeContext.get(), m_jsonRegistrationContext.get());
EXPECT_TRUE(loadFromStringResult.IsSuccess());
EXPECT_FALSE(loaded.IsEmpty());
ASSERT_EQ(loaded.GetEntryCount(), sceneManifest.GetEntryCount());
}
TEST_F(SceneManifest_JSON, LoadFromString_LoadRotationRuleWithAnglesInDegrees_ReturnsTrue)
{
using namespace SceneAPI::Containers;
constexpr const char* jsonWithAngles = { R"JSON(
{
"values": [
{
"$type": "MockRotationRule",
"rotation": { "yaw" : 45.0, "pitch" : 90.0, "roll" : 0.0 }
}
]
})JSON"};
SceneManifest loaded;
auto loadFromStringResult = loaded.LoadFromString(jsonWithAngles, m_serializeContext.get(), m_jsonRegistrationContext.get());
EXPECT_TRUE(loadFromStringResult.IsSuccess());
EXPECT_FALSE(loaded.IsEmpty());
auto writeToJsonResult =
SceneManifestContainer::SaveToJsonDocumentHelper(loaded, m_serializeContext.get(), m_jsonRegistrationContext.get());
ASSERT_TRUE(writeToJsonResult.IsSuccess());
AZStd::string jsonText;
auto writeToStringResult = AzFramework::FileFunc::WriteJsonToString(writeToJsonResult.GetValue(), jsonText);
ASSERT_TRUE(writeToStringResult.IsSuccess());
EXPECT_THAT(jsonText.c_str(), ::testing::HasSubstr(R"("$type": "MockRotationRule")"));
EXPECT_THAT(jsonText.c_str(), ::testing::HasSubstr(R"("rotation": [)"));
EXPECT_THAT(jsonText.c_str(), ::testing::HasSubstr(R"(0.27)"));
EXPECT_THAT(jsonText.c_str(), ::testing::HasSubstr(R"(0.65)"));
}
}
}