/* * 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 #include #include namespace PhysX { namespace TestUtils { template EntityPtr AddUnitTestObject(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) }); Physics::RigidBodyConfiguration rigidBodyConfig; rigidBodyConfig.m_computeMass = false; entity->CreateComponent(rigidBodyConfig); entity->Init(); entity->Activate(); return entity; } template EntityPtr AddStaticUnitTestObject(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(); 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; } } }