/* * 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 "LmbrCentral_precompiled.h" #if ENABLE_CRY_PHYSICS #include "LmbrCentralEditor.h" #include "LmbrCentralReflectionTest.h" #include "Physics/EditorRigidPhysicsComponent.h" #include #include using namespace LmbrCentral; // Serialized legacy PhysicsComponent containing RigidPhysicsBehavior. // PhysicsComponent is wrapped by a GenericComponentWrapper because it's being used by the editor. // This should get converted to an EditorRigidPhysicsComponent. const char kWrappedLegacyPhysicsComponentWithRigidBehavior[] = R"DELIMITER( )DELIMITER"; class LoadEditorRigidPhysicsComponentFromLegacyData : public LoadReflectedObjectTest { protected: const char* GetSourceDataBuffer() const override { return kWrappedLegacyPhysicsComponentWithRigidBehavior; } void SetUp() override { LoadReflectedObjectTest::SetUp(); if (m_object) { if (m_editorPhysicsComponent = azrtti_cast(m_object->GetTemplate())) { m_editorPhysicsComponent->GetConfiguration(m_rigidPhysicsConfig); } } } EditorRigidPhysicsComponent* m_editorPhysicsComponent = nullptr; AzFramework::RigidPhysicsConfig m_rigidPhysicsConfig; }; TEST_F(LoadEditorRigidPhysicsComponentFromLegacyData, Application_IsRunning) { ASSERT_NE(GetApplication(), nullptr); } TEST_F(LoadEditorRigidPhysicsComponentFromLegacyData, Components_Load) { EXPECT_NE(m_object.get(), nullptr); } TEST_F(LoadEditorRigidPhysicsComponentFromLegacyData, EditorComponentWithinWrapper_Found) { EXPECT_NE(m_editorPhysicsComponent, nullptr); } TEST_F(LoadEditorRigidPhysicsComponentFromLegacyData, EnabledInitially_MatchesSourceData) { EXPECT_EQ(m_rigidPhysicsConfig.m_enabledInitially, false); } TEST_F(LoadEditorRigidPhysicsComponentFromLegacyData, SpecifyMassOrDensity_MatchesSourceData) { EXPECT_EQ(m_rigidPhysicsConfig.m_specifyMassOrDensity, static_cast(0)); } TEST_F(LoadEditorRigidPhysicsComponentFromLegacyData, Mass_MatchesSourceData) { EXPECT_FLOAT_EQ(m_rigidPhysicsConfig.m_mass, 33.f); } TEST_F(LoadEditorRigidPhysicsComponentFromLegacyData, Density_MatchesSourceData) { EXPECT_FLOAT_EQ(m_rigidPhysicsConfig.m_density, 555.f); } TEST_F(LoadEditorRigidPhysicsComponentFromLegacyData, AtRestInitially_MatchesSourceData) { EXPECT_EQ(m_rigidPhysicsConfig.m_atRestInitially, false); } TEST_F(LoadEditorRigidPhysicsComponentFromLegacyData, InteractsWithTriggers_MatchesSourceData) { EXPECT_EQ(m_rigidPhysicsConfig.m_interactsWithTriggers, false); } TEST_F(LoadEditorRigidPhysicsComponentFromLegacyData, RecordCollision_MatchesSourceData) { EXPECT_EQ(m_rigidPhysicsConfig.m_recordCollisions, true); } TEST_F(LoadEditorRigidPhysicsComponentFromLegacyData, MaxRecordedCollision_MatchesSourceData) { EXPECT_EQ(m_rigidPhysicsConfig.m_maxRecordedCollisions, 3); } TEST_F(LoadEditorRigidPhysicsComponentFromLegacyData, SimulationDamping_MatchesSourceData) { EXPECT_FLOAT_EQ(m_rigidPhysicsConfig.m_simulationDamping, 0.1f); } TEST_F(LoadEditorRigidPhysicsComponentFromLegacyData, SimulationMinEnergy_MatchesSourceData) { EXPECT_FLOAT_EQ(m_rigidPhysicsConfig.m_simulationMinEnergy, 0.003f); } TEST_F(LoadEditorRigidPhysicsComponentFromLegacyData, BuoyancyDamping_MatchesSourceData) { EXPECT_FLOAT_EQ(m_rigidPhysicsConfig.m_buoyancyDamping, 0.3f); } TEST_F(LoadEditorRigidPhysicsComponentFromLegacyData, BuoyancyDensity_MatchesSourceData) { EXPECT_FLOAT_EQ(m_rigidPhysicsConfig.m_buoyancyDensity, 1.3f); } TEST_F(LoadEditorRigidPhysicsComponentFromLegacyData, BuoyancyResistance_MatchesSourceData) { EXPECT_FLOAT_EQ(m_rigidPhysicsConfig.m_buoyancyResistance, 1.6f); } // Serialized EditorRigidPhysicsConfiguration version 1. // This version was accidentally reflected as a templated class. const char kEditorRigidPhysicsConfigurationV1[] = R"DELIMITER( )DELIMITER"; class LoadEditorRigidPhysicsConfigurationV1 : public LoadReflectedObjectTest { const char* GetSourceDataBuffer() const override { return kEditorRigidPhysicsConfigurationV1; } }; TEST_F(LoadEditorRigidPhysicsConfigurationV1, Load_Succeeds) { EXPECT_NE(m_object.get(), nullptr); } #endif // ENABLE_CRY_PHYSICS