/* * Copyright (c) Contributors to the Open 3D Engine Project. * For complete copyright and license terms please see the LICENSE at the root of this distribution. * * SPDX-License-Identifier: Apache-2.0 OR MIT * */ #include #include #include #include namespace PhysX { namespace TestUtils { template EntityPtr AddUnitTestObject(AzPhysics::SceneHandle sceneHandle, const AZ::Vector3& position, const char* name) { EntityPtr entity = AZStd::make_shared(name); AZ::TransformConfig transformConfig; transformConfig.m_worldTransform = AZ::Transform::CreateTranslation(position); entity->CreateComponent()->SetConfiguration(transformConfig); auto colliderComponent = entity->CreateComponent(); auto colliderConfig = AZStd::make_shared(); auto shapeConfig = AZStd::make_shared(); colliderComponent->SetShapeConfigurationList({ AZStd::make_pair(colliderConfig, shapeConfig) }); AzPhysics::RigidBodyConfiguration rigidBodyConfig; rigidBodyConfig.m_computeMass = false; entity->CreateComponent(rigidBodyConfig, sceneHandle); entity->Init(); entity->Activate(); return entity; } template EntityPtr AddStaticUnitTestObject(AzPhysics::SceneHandle sceneHandle, const AZ::Vector3& position, const char* name) { EntityPtr entity = AZStd::make_shared(name); AZ::TransformConfig transformConfig; transformConfig.m_worldTransform = AZ::Transform::CreateTranslation(position); entity->CreateComponent()->SetConfiguration(transformConfig); auto colliderComponent = entity->CreateComponent(); auto colliderConfig = AZStd::make_shared(); auto shapeConfig = AZStd::make_shared(); colliderComponent->SetShapeConfigurationList({ AZStd::make_pair(colliderConfig, shapeConfig) }); entity->CreateComponent(sceneHandle); entity->Init(); entity->Activate(); return entity; } template EntityPtr CreateTriggerAtPosition(const AZ::Vector3& position) { EntityPtr triggerEntity = AZStd::make_shared("TriggerEntity"); AZ::TransformConfig transformConfig; transformConfig.m_worldTransform = AZ::Transform::CreateTranslation(position); triggerEntity->CreateComponent()->SetConfiguration(transformConfig); auto colliderConfiguration = AZStd::make_shared(); colliderConfiguration->m_isTrigger = true; auto shapeConfiguration = AZStd::make_shared(); auto colliderComponent = triggerEntity->CreateComponent(); colliderComponent->SetShapeConfigurationList({ AZStd::make_pair(colliderConfiguration, shapeConfiguration) }); triggerEntity->CreateComponent(); triggerEntity->Init(); triggerEntity->Activate(); return triggerEntity; } template EntityPtr CreateDynamicTriggerAtPosition(const AZ::Vector3& position) { EntityPtr triggerEntity = AZStd::make_shared("DynamicTriggerEntity"); AZ::TransformConfig transformConfig; transformConfig.m_worldTransform = AZ::Transform::CreateTranslation(position); triggerEntity->CreateComponent()->SetConfiguration(transformConfig); auto colliderConfiguration = AZStd::make_shared(); colliderConfiguration->m_isTrigger = true; auto shapeConfiguration = AZStd::make_shared(); auto colliderComponent = triggerEntity->CreateComponent(); colliderComponent->SetShapeConfigurationList({ AZStd::make_pair(colliderConfiguration, shapeConfiguration) }); triggerEntity->CreateComponent(); triggerEntity->Init(); triggerEntity->Activate(); return triggerEntity; } } }