Remove physics world body notification bus (#576)
This commit is contained in:
+13
-28
@@ -19,44 +19,29 @@
|
||||
|
||||
namespace AzPhysics
|
||||
{
|
||||
struct SimulatedBody;
|
||||
}
|
||||
|
||||
namespace Physics
|
||||
{
|
||||
//! Requests for generic physical world bodies
|
||||
class WorldBodyRequests
|
||||
//! Requests for physics simulated body components.
|
||||
class SimulatedBodyComponentRequests
|
||||
: public AZ::ComponentBus
|
||||
{
|
||||
public:
|
||||
using MutexType = AZStd::recursive_mutex;
|
||||
|
||||
//! Enable physics for this body
|
||||
//! Enable physics for this body.
|
||||
virtual void EnablePhysics() = 0;
|
||||
//! Disable physics for this body
|
||||
//! Disable physics for this body.
|
||||
virtual void DisablePhysics() = 0;
|
||||
//! Retrieve whether physics is enabled for this body
|
||||
//! Retrieve whether physics is enabled for this body.
|
||||
virtual bool IsPhysicsEnabled() const = 0;
|
||||
|
||||
//! Retrieves the AABB(aligned-axis bounding box) for this body
|
||||
//! Retrieves the AABB(aligned-axis bounding box) for this body.
|
||||
virtual AZ::Aabb GetAabb() const = 0;
|
||||
//! Retrieves current WorldBody* for this body. Note: Do not hold a reference to AzPhysics::SimulatedBody* as could be deleted
|
||||
virtual AzPhysics::SimulatedBody* GetWorldBody() = 0;
|
||||
|
||||
//! Perform a single-object raycast against this body
|
||||
//! Get the Simulated Body Handle for this body.
|
||||
virtual AzPhysics::SimulatedBodyHandle GetSimulatedBodyHandle() const = 0;
|
||||
//! Retrieves current WorldBody* for this body.
|
||||
//! @note Do not hold a reference to AzPhysics::SimulatedBody* as it could be deleted or moved.
|
||||
virtual AzPhysics::SimulatedBody* GetSimulatedBody() = 0;
|
||||
//! Perform a single-object raycast against this body.
|
||||
virtual AzPhysics::SceneQueryHit RayCast(const AzPhysics::RayCastRequest& request) = 0;
|
||||
};
|
||||
using WorldBodyRequestBus = AZ::EBus<WorldBodyRequests>;
|
||||
|
||||
//! Notifications for generic physical world bodies
|
||||
class WorldBodyNotifications
|
||||
: public AZ::ComponentBus
|
||||
{
|
||||
public:
|
||||
//! Notification for physics enabled
|
||||
virtual void OnPhysicsEnabled() = 0;
|
||||
//! Notification for physics disabled
|
||||
virtual void OnPhysicsDisabled() = 0;
|
||||
};
|
||||
using WorldBodyNotificationBus = AZ::EBus<WorldBodyNotifications>;
|
||||
using SimulatedBodyComponentRequestsBus = AZ::EBus<SimulatedBodyComponentRequests>;
|
||||
}
|
||||
@@ -21,7 +21,7 @@
|
||||
#include <AzFramework/Physics/ShapeConfiguration.h>
|
||||
#include <AzCore/Serialization/EditContext.h>
|
||||
#include <AzFramework/Physics/CollisionBus.h>
|
||||
#include <AzFramework/Physics/WorldBodyBus.h>
|
||||
#include <AzFramework/Physics/Components/SimulatedBodyComponentBus.h>
|
||||
#include <AzFramework/Physics/WindBus.h>
|
||||
#include <AzFramework/Physics/PhysicsSystem.h>
|
||||
#include <AzFramework/Physics/Collision/CollisionEvents.h>
|
||||
@@ -39,19 +39,19 @@ namespace Physics
|
||||
{
|
||||
namespace ReflectionUtils
|
||||
{
|
||||
void ReflectWorldBodyBus(AZ::ReflectContext* context)
|
||||
void ReflectSimulatedBodyComponentRequestsBus(AZ::ReflectContext* context)
|
||||
{
|
||||
if (auto* behaviorContext = azrtti_cast<AZ::BehaviorContext*>(context))
|
||||
{
|
||||
behaviorContext->EBus<Physics::WorldBodyRequestBus>("WorldBodyRequestBus")
|
||||
behaviorContext->EBus<AzPhysics::SimulatedBodyComponentRequestsBus>("SimulatedBodyComponentRequestBus")
|
||||
->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Common)
|
||||
->Attribute(AZ::Script::Attributes::Module, "physics")
|
||||
->Attribute(AZ::Script::Attributes::Category, "PhysX")
|
||||
->Event("EnablePhysics", &WorldBodyRequests::EnablePhysics)
|
||||
->Event("DisablePhysics", &WorldBodyRequests::DisablePhysics)
|
||||
->Event("IsPhysicsEnabled", &WorldBodyRequests::IsPhysicsEnabled)
|
||||
->Event("GetAabb", &WorldBodyRequests::GetAabb)
|
||||
->Event("RayCast", &WorldBodyRequests::RayCast)
|
||||
->Event("EnablePhysics", &AzPhysics::SimulatedBodyComponentRequests::EnablePhysics)
|
||||
->Event("DisablePhysics", &AzPhysics::SimulatedBodyComponentRequests::DisablePhysics)
|
||||
->Event("IsPhysicsEnabled", &AzPhysics::SimulatedBodyComponentRequests::IsPhysicsEnabled)
|
||||
->Event("GetAabb", &AzPhysics::SimulatedBodyComponentRequests::GetAabb)
|
||||
->Event("RayCast", &AzPhysics::SimulatedBodyComponentRequests::RayCast)
|
||||
;
|
||||
}
|
||||
}
|
||||
@@ -131,7 +131,7 @@ namespace Physics
|
||||
AnimationConfiguration::Reflect(context);
|
||||
CharacterConfiguration::Reflect(context);
|
||||
AzPhysics::SimulatedBody::Reflect(context);
|
||||
ReflectWorldBodyBus(context);
|
||||
ReflectSimulatedBodyComponentRequestsBus(context);
|
||||
CollisionFilteringRequests::Reflect(context);
|
||||
AzPhysics::SceneQuery::ReflectSceneQueryObjects(context);
|
||||
ReflectWindBus(context);
|
||||
|
||||
@@ -213,6 +213,12 @@ set(FILES
|
||||
StreamingInstall/StreamingInstall.cpp
|
||||
StreamingInstall/StreamingInstallRequests.h
|
||||
StreamingInstall/StreamingInstallNotifications.h
|
||||
Physics/Collision/CollisionEvents.h
|
||||
Physics/Collision/CollisionEvents.cpp
|
||||
Physics/Collision/CollisionLayers.h
|
||||
Physics/Collision/CollisionLayers.cpp
|
||||
Physics/Collision/CollisionGroups.h
|
||||
Physics/Collision/CollisionGroups.cpp
|
||||
Physics/Common/PhysicsSceneQueries.h
|
||||
Physics/Common/PhysicsSceneQueries.cpp
|
||||
Physics/Common/PhysicsEvents.h
|
||||
@@ -223,12 +229,7 @@ set(FILES
|
||||
Physics/Common/PhysicsSimulatedBodyEvents.h
|
||||
Physics/Common/PhysicsSimulatedBodyEvents.cpp
|
||||
Physics/Common/PhysicsTypes.h
|
||||
Physics/Collision/CollisionEvents.h
|
||||
Physics/Collision/CollisionEvents.cpp
|
||||
Physics/Collision/CollisionLayers.h
|
||||
Physics/Collision/CollisionLayers.cpp
|
||||
Physics/Collision/CollisionGroups.h
|
||||
Physics/Collision/CollisionGroups.cpp
|
||||
Physics/Components/SimulatedBodyComponentBus.h
|
||||
Physics/Configuration/CollisionConfiguration.h
|
||||
Physics/Configuration/CollisionConfiguration.cpp
|
||||
Physics/Configuration/RigidBodyConfiguration.h
|
||||
@@ -265,7 +266,6 @@ set(FILES
|
||||
Physics/ShapeConfiguration.h
|
||||
Physics/ShapeConfiguration.cpp
|
||||
Physics/SystemBus.h
|
||||
Physics/WorldBodyBus.h
|
||||
Physics/ColliderComponentBus.h
|
||||
Physics/RagdollPhysicsBus.h
|
||||
Physics/CharacterPhysicsDataBus.h
|
||||
|
||||
@@ -51,8 +51,8 @@ namespace Blast
|
||||
virtual AZ::Transform GetTransform() const = 0;
|
||||
virtual const BlastFamily& GetFamily() const = 0;
|
||||
virtual Nv::Blast::TkActor& GetTkActor() const = 0;
|
||||
virtual AzPhysics::SimulatedBody* GetWorldBody() = 0;
|
||||
virtual const AzPhysics::SimulatedBody* GetWorldBody() const = 0;
|
||||
virtual AzPhysics::SimulatedBody* GetSimulatedBody() = 0;
|
||||
virtual const AzPhysics::SimulatedBody* GetSimulatedBody() const = 0;
|
||||
virtual const AZ::Entity* GetEntity() const = 0;
|
||||
virtual const AZStd::vector<uint32_t>& GetChunkIndices() const = 0;
|
||||
virtual bool IsStatic() const = 0;
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
#include <AzFramework/Physics/Shape.h>
|
||||
#include <AzFramework/Physics/SystemBus.h>
|
||||
#include <AzFramework/Physics/Utils.h>
|
||||
#include <AzFramework/Physics/WorldBodyBus.h>
|
||||
#include <AzFramework/Physics/Components/SimulatedBodyComponentBus.h>
|
||||
#include <Blast/BlastActor.h>
|
||||
#include <Family/BlastFamily.h>
|
||||
#include <NvBlastExtPxAsset.h>
|
||||
@@ -164,7 +164,7 @@ namespace Blast
|
||||
|
||||
AZ::Transform BlastActorImpl::GetTransform() const
|
||||
{
|
||||
return GetWorldBody()->GetTransform();
|
||||
return GetSimulatedBody()->GetTransform();
|
||||
}
|
||||
|
||||
const BlastFamily& BlastActorImpl::GetFamily() const
|
||||
@@ -177,19 +177,19 @@ namespace Blast
|
||||
return m_tkActor;
|
||||
}
|
||||
|
||||
AzPhysics::SimulatedBody* BlastActorImpl::GetWorldBody()
|
||||
AzPhysics::SimulatedBody* BlastActorImpl::GetSimulatedBody()
|
||||
{
|
||||
AzPhysics::SimulatedBody* worldBody = nullptr;
|
||||
Physics::WorldBodyRequestBus::EventResult(
|
||||
worldBody, m_entity->GetId(), &Physics::WorldBodyRequests::GetWorldBody);
|
||||
AzPhysics::SimulatedBodyComponentRequestsBus::EventResult(
|
||||
worldBody, m_entity->GetId(), &AzPhysics::SimulatedBodyComponentRequests::GetSimulatedBody);
|
||||
return worldBody;
|
||||
}
|
||||
|
||||
const AzPhysics::SimulatedBody* BlastActorImpl::GetWorldBody() const
|
||||
const AzPhysics::SimulatedBody* BlastActorImpl::GetSimulatedBody() const
|
||||
{
|
||||
AzPhysics::SimulatedBody* worldBody = nullptr;
|
||||
Physics::WorldBodyRequestBus::EventResult(
|
||||
worldBody, m_entity->GetId(), &Physics::WorldBodyRequests::GetWorldBody);
|
||||
AzPhysics::SimulatedBodyComponentRequestsBus::EventResult(
|
||||
worldBody, m_entity->GetId(), &AzPhysics::SimulatedBodyComponentRequests::GetSimulatedBody);
|
||||
return worldBody;
|
||||
}
|
||||
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
#pragma once
|
||||
|
||||
#include <Actor/ShapesProvider.h>
|
||||
#include <AzFramework/Physics/WorldBodyBus.h>
|
||||
#include <Blast/BlastActor.h>
|
||||
#include <Actor/BlastActorDesc.h>
|
||||
#include <PhysX/ColliderComponentBus.h>
|
||||
@@ -45,8 +44,8 @@ namespace Blast
|
||||
const AZStd::vector<uint32_t>& GetChunkIndices() const override;
|
||||
bool IsStatic() const override;
|
||||
|
||||
AzPhysics::SimulatedBody* GetWorldBody() override;
|
||||
const AzPhysics::SimulatedBody* GetWorldBody() const override;
|
||||
AzPhysics::SimulatedBody* GetSimulatedBody() override;
|
||||
const AzPhysics::SimulatedBody* GetSimulatedBody() const override;
|
||||
|
||||
protected:
|
||||
//! We want to be able to override this function for testing purposes, because
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <AzFramework/Physics/WorldBodyBus.h>
|
||||
#include <AzFramework/Physics/Configuration/RigidBodyConfiguration.h>
|
||||
#include <PhysX/ColliderComponentBus.h>
|
||||
|
||||
|
||||
@@ -467,7 +467,7 @@ namespace Blast
|
||||
}
|
||||
|
||||
// transform all added lines from local to global
|
||||
const AZ::Transform& localToGlobal = blastActor->GetWorldBody()->GetTransform();
|
||||
const AZ::Transform& localToGlobal = blastActor->GetSimulatedBody()->GetTransform();
|
||||
for (uint32_t i = lineStartIndex; i < debugRenderBuffer.m_lines.size(); i++)
|
||||
{
|
||||
DebugLine& line = debugRenderBuffer.m_lines[i];
|
||||
@@ -485,7 +485,7 @@ namespace Blast
|
||||
{
|
||||
for (auto actor : m_family->GetActorTracker().GetActors())
|
||||
{
|
||||
auto worldBody = actor->GetWorldBody();
|
||||
auto worldBody = actor->GetSimulatedBody();
|
||||
if (actor->IsStatic())
|
||||
{
|
||||
AZ::Vector3 gravity = AzPhysics::DefaultGravity;
|
||||
|
||||
@@ -74,7 +74,7 @@ namespace Blast
|
||||
{
|
||||
if (m_chunkActors[chunkId])
|
||||
{
|
||||
m_meshFeatureProcessor->SetTransform(m_chunkMeshHandles[chunkId], m_chunkActors[chunkId]->GetWorldBody()->GetTransform(), m_scale);
|
||||
m_meshFeatureProcessor->SetTransform(m_chunkMeshHandles[chunkId], m_chunkActors[chunkId]->GetSimulatedBody()->GetTransform(), m_scale);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,12 +22,12 @@ namespace Blast
|
||||
{
|
||||
m_actors.emplace(actor);
|
||||
m_entityIdToActor.emplace(actor->GetEntity()->GetId(), actor);
|
||||
m_bodyToActor.emplace(actor->GetWorldBody(), actor);
|
||||
m_bodyToActor.emplace(actor->GetSimulatedBody(), actor);
|
||||
}
|
||||
|
||||
void ActorTracker::RemoveActor(BlastActor* actor)
|
||||
{
|
||||
m_bodyToActor.erase(actor->GetWorldBody());
|
||||
m_bodyToActor.erase(actor->GetSimulatedBody());
|
||||
m_entityIdToActor.erase(actor->GetEntity()->GetId());
|
||||
m_actors.erase(actor);
|
||||
}
|
||||
|
||||
@@ -179,7 +179,7 @@ namespace Blast
|
||||
{
|
||||
return;
|
||||
}
|
||||
parentBody = parentActor->GetWorldBody();
|
||||
parentBody = parentActor->GetSimulatedBody();
|
||||
|
||||
const bool parentStatic = parentActor->IsStatic();
|
||||
|
||||
@@ -493,7 +493,7 @@ namespace Blast
|
||||
}
|
||||
|
||||
// transform all added lines from local to global
|
||||
AZ::Transform localToGlobal = blastActor->GetWorldBody()->GetTransform();
|
||||
AZ::Transform localToGlobal = blastActor->GetSimulatedBody()->GetTransform();
|
||||
for (uint32_t i = lineStartIndex; i < debugRenderBuffer.m_lines.size(); i++)
|
||||
{
|
||||
DebugLine& line = debugRenderBuffer.m_lines[i];
|
||||
|
||||
@@ -124,7 +124,7 @@ namespace Blast
|
||||
|
||||
AZ::Vector3 DamageManager::TransformToLocal(BlastActor& actor, const AZ::Vector3& globalPosition)
|
||||
{
|
||||
const AZ::Transform hitToActorTransform(actor.GetWorldBody()->GetTransform().GetInverse());
|
||||
const AZ::Transform hitToActorTransform(actor.GetSimulatedBody()->GetTransform().GetInverse());
|
||||
const AZ::Vector3 hitPos = hitToActorTransform.TransformPoint(globalPosition);
|
||||
return hitPos;
|
||||
}
|
||||
|
||||
@@ -284,12 +284,12 @@ namespace Blast
|
||||
return m_transform;
|
||||
}
|
||||
|
||||
AzPhysics::SimulatedBody* GetWorldBody() override
|
||||
AzPhysics::SimulatedBody* GetSimulatedBody() override
|
||||
{
|
||||
return m_worldBody.get();
|
||||
}
|
||||
|
||||
const AzPhysics::SimulatedBody* GetWorldBody() const override
|
||||
const AzPhysics::SimulatedBody* GetSimulatedBody() const override
|
||||
{
|
||||
return m_worldBody.get();
|
||||
}
|
||||
|
||||
@@ -88,7 +88,7 @@ namespace PhysX
|
||||
Physics::RagdollNode* GetRagdollNode() const;
|
||||
void SetRagdollNode(Physics::RagdollNode* ragdollNode);
|
||||
|
||||
AzPhysics::SimulatedBody* GetWorldBody() const;
|
||||
AzPhysics::SimulatedBody* GetSimulatedBody() const;
|
||||
|
||||
private:
|
||||
|
||||
|
||||
@@ -77,7 +77,7 @@ namespace PhysX
|
||||
|
||||
inline AzPhysics::SimulatedBodyHandle ActorData::GetBodyHandle() const
|
||||
{
|
||||
AzPhysics::SimulatedBody* body = GetWorldBody();
|
||||
AzPhysics::SimulatedBody* body = GetSimulatedBody();
|
||||
if (body)
|
||||
{
|
||||
return body->m_bodyHandle;
|
||||
@@ -125,7 +125,7 @@ namespace PhysX
|
||||
m_payload.m_ragdollNode = ragdollNode;
|
||||
}
|
||||
|
||||
inline AzPhysics::SimulatedBody* ActorData::GetWorldBody() const
|
||||
inline AzPhysics::SimulatedBody* ActorData::GetSimulatedBody() const
|
||||
{
|
||||
if (m_payload.m_rigidBody)
|
||||
{
|
||||
|
||||
@@ -100,10 +100,9 @@ namespace PhysX
|
||||
required.push_back(AZ_CRC("TransformService", 0x8ee22c50));
|
||||
}
|
||||
|
||||
static void GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible)
|
||||
static void GetIncompatibleServices([[maybe_unused]] AZ::ComponentDescriptor::DependencyArrayType& incompatible)
|
||||
{
|
||||
// Not compatible with cry engine colliders
|
||||
incompatible.push_back(AZ_CRC("ColliderService", 0x902d4e93));
|
||||
|
||||
}
|
||||
|
||||
// AZ::Component
|
||||
|
||||
@@ -258,9 +258,9 @@ namespace PhysX
|
||||
{
|
||||
ActorData* userData = Utils::GetUserData(actor);
|
||||
Physics::Shape* shape = Utils::GetUserData(pxShape);
|
||||
if (userData != nullptr && userData->GetWorldBody())
|
||||
if (userData != nullptr && userData->GetSimulatedBody())
|
||||
{
|
||||
return GetPxHitType(m_filterCallback(userData->GetWorldBody(), shape));
|
||||
return GetPxHitType(m_filterCallback(userData->GetSimulatedBody(), shape));
|
||||
}
|
||||
}
|
||||
return m_hitType;
|
||||
|
||||
@@ -387,7 +387,7 @@ namespace PhysX
|
||||
|
||||
void EditorColliderComponent::Deactivate()
|
||||
{
|
||||
Physics::WorldBodyRequestBus::Handler::BusDisconnect();
|
||||
AzPhysics::SimulatedBodyComponentRequestsBus::Handler::BusDisconnect();
|
||||
m_colliderDebugDraw.Disconnect();
|
||||
AZ::Data::AssetBus::MultiHandler::BusDisconnect();
|
||||
m_nonUniformScaleChangedHandler.Disconnect();
|
||||
@@ -642,7 +642,7 @@ namespace PhysX
|
||||
|
||||
m_colliderDebugDraw.ClearCachedGeometry();
|
||||
|
||||
Physics::WorldBodyRequestBus::Handler::BusConnect(GetEntityId());
|
||||
AzPhysics::SimulatedBodyComponentRequestsBus::Handler::BusConnect(GetEntityId());
|
||||
}
|
||||
|
||||
AZ::Data::Asset<Pipeline::MeshAsset> EditorColliderComponent::GetMeshAsset() const
|
||||
@@ -1072,7 +1072,7 @@ namespace PhysX
|
||||
return AZ::Aabb::CreateNull();
|
||||
}
|
||||
|
||||
AzPhysics::SimulatedBody* EditorColliderComponent::GetWorldBody()
|
||||
AzPhysics::SimulatedBody* EditorColliderComponent::GetSimulatedBody()
|
||||
{
|
||||
if (m_sceneInterface && m_editorBodyHandle != AzPhysics::InvalidSimulatedBodyHandle)
|
||||
{
|
||||
@@ -1084,6 +1084,11 @@ namespace PhysX
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
AzPhysics::SimulatedBodyHandle EditorColliderComponent::GetSimulatedBodyHandle() const
|
||||
{
|
||||
return m_editorBodyHandle;
|
||||
}
|
||||
|
||||
AzPhysics::SceneQueryHit EditorColliderComponent::RayCast(const AzPhysics::RayCastRequest& request)
|
||||
{
|
||||
if (m_sceneInterface && m_editorBodyHandle != AzPhysics::InvalidSimulatedBodyHandle)
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
#include <AzFramework/Entity/EntityDebugDisplayBus.h>
|
||||
#include <AzFramework/Physics/Shape.h>
|
||||
#include <AzFramework/Physics/ShapeConfiguration.h>
|
||||
#include <AzFramework/Physics/WorldBodyBus.h>
|
||||
#include <AzFramework/Physics/Components/SimulatedBodyComponentBus.h>
|
||||
#include <AzFramework/Physics/Common/PhysicsEvents.h>
|
||||
#include <AzFramework/Physics/Common/PhysicsTypes.h>
|
||||
|
||||
@@ -105,7 +105,7 @@ namespace PhysX
|
||||
, private PhysX::ColliderShapeRequestBus::Handler
|
||||
, private AZ::Render::MeshComponentNotificationBus::Handler
|
||||
, private PhysX::EditorColliderComponentRequestBus::Handler
|
||||
, private Physics::WorldBodyRequestBus::Handler
|
||||
, private AzPhysics::SimulatedBodyComponentRequestsBus::Handler
|
||||
{
|
||||
public:
|
||||
AZ_RTTI(EditorColliderComponent, "{FD429282-A075-4966-857F-D0BBF186CFE6}", AzToolsFramework::Components::EditorComponentBase);
|
||||
@@ -205,12 +205,13 @@ namespace PhysX
|
||||
AZ::u32 OnConfigurationChanged();
|
||||
void UpdateShapeConfigurationScale();
|
||||
|
||||
// WorldBodyRequestBus
|
||||
// AzPhysics::SimulatedBodyComponentRequestsBus::Handler overrides ...
|
||||
void EnablePhysics() override;
|
||||
void DisablePhysics() override;
|
||||
bool IsPhysicsEnabled() const override;
|
||||
AZ::Aabb GetAabb() const override;
|
||||
AzPhysics::SimulatedBody* GetWorldBody() override;
|
||||
AzPhysics::SimulatedBody* GetSimulatedBody() override;
|
||||
AzPhysics::SimulatedBodyHandle GetSimulatedBodyHandle() const override;
|
||||
AzPhysics::SceneQueryHit RayCast(const AzPhysics::RayCastRequest& request) override;
|
||||
|
||||
// Mesh collider
|
||||
|
||||
@@ -265,14 +265,14 @@ namespace PhysX
|
||||
}
|
||||
CreateEditorWorldRigidBody();
|
||||
|
||||
Physics::WorldBodyRequestBus::Handler::BusConnect(GetEntityId());
|
||||
AzPhysics::SimulatedBodyComponentRequestsBus::Handler::BusConnect(GetEntityId());
|
||||
}
|
||||
|
||||
void EditorRigidBodyComponent::Deactivate()
|
||||
{
|
||||
m_debugDisplayDataChangeHandler.Disconnect();
|
||||
|
||||
Physics::WorldBodyRequestBus::Handler::BusDisconnect();
|
||||
AzPhysics::SimulatedBodyComponentRequestsBus::Handler::BusDisconnect();
|
||||
m_nonUniformScaleChangedHandler.Disconnect();
|
||||
m_sceneStartSimHandler.Disconnect();
|
||||
Physics::ColliderComponentEventBus::Handler::BusDisconnect();
|
||||
@@ -461,11 +461,16 @@ namespace PhysX
|
||||
return AZ::Aabb::CreateNull();
|
||||
}
|
||||
|
||||
AzPhysics::SimulatedBody* EditorRigidBodyComponent::GetWorldBody()
|
||||
AzPhysics::SimulatedBody* EditorRigidBodyComponent::GetSimulatedBody()
|
||||
{
|
||||
return m_editorBody;
|
||||
}
|
||||
|
||||
AzPhysics::SimulatedBodyHandle EditorRigidBodyComponent::GetSimulatedBodyHandle() const
|
||||
{
|
||||
return m_rigidBodyHandle;
|
||||
}
|
||||
|
||||
AzPhysics::SceneQueryHit EditorRigidBodyComponent::RayCast(const AzPhysics::RayCastRequest& request)
|
||||
{
|
||||
if (m_editorBody)
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
#include <AzFramework/Entity/EntityDebugDisplayBus.h>
|
||||
#include <AzFramework/Physics/SimulatedBodies/RigidBody.h>
|
||||
#include <AzFramework/Physics/WorldBodyBus.h>
|
||||
#include <AzFramework/Physics/Components/SimulatedBodyComponentBus.h>
|
||||
#include <AzFramework/Physics/Common/PhysicsEvents.h>
|
||||
#include <AzFramework/Physics/Common/PhysicsTypes.h>
|
||||
|
||||
@@ -49,7 +49,7 @@ namespace PhysX
|
||||
, protected AzFramework::EntityDebugDisplayEventBus::Handler
|
||||
, private AZ::TransformNotificationBus::Handler
|
||||
, private Physics::ColliderComponentEventBus::Handler
|
||||
, private Physics::WorldBodyRequestBus::Handler
|
||||
, private AzPhysics::SimulatedBodyComponentRequestsBus::Handler
|
||||
{
|
||||
public:
|
||||
AZ_EDITOR_COMPONENT(EditorRigidBodyComponent, "{F2478E6B-001A-4006-9D7E-DCB5A6B041DD}", AzToolsFramework::Components::EditorComponentBase);
|
||||
@@ -107,12 +107,13 @@ namespace PhysX
|
||||
// Physics::ColliderComponentEventBus
|
||||
void OnColliderChanged() override;
|
||||
|
||||
// WorldBodyRequestBus
|
||||
// AzPhysics::SimulatedBodyComponentRequestsBus::Handler overrides ...
|
||||
void EnablePhysics() override;
|
||||
void DisablePhysics() override;
|
||||
bool IsPhysicsEnabled() const override;
|
||||
AZ::Aabb GetAabb() const override;
|
||||
AzPhysics::SimulatedBody* GetWorldBody() override;
|
||||
AzPhysics::SimulatedBody* GetSimulatedBody() override;
|
||||
AzPhysics::SimulatedBodyHandle GetSimulatedBodyHandle() const override;
|
||||
AzPhysics::SceneQueryHit RayCast(const AzPhysics::RayCastRequest& request) override;
|
||||
|
||||
void CreateEditorWorldRigidBody();
|
||||
|
||||
@@ -120,8 +120,6 @@ namespace PhysX
|
||||
|
||||
void EditorShapeColliderComponent::GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible)
|
||||
{
|
||||
// Not compatible with Legacy Cry Physics services
|
||||
incompatible.push_back(AZ_CRC("ColliderService", 0x902d4e93));
|
||||
incompatible.push_back(AZ_CRC("LegacyCryPhysicsService", 0xbb370351));
|
||||
incompatible.push_back(AZ_CRC("PhysXShapeColliderService", 0x98a7e779));
|
||||
}
|
||||
@@ -273,7 +271,7 @@ namespace PhysX
|
||||
m_editorBody = azdynamic_cast<StaticRigidBody*>(m_sceneInterface->GetSimulatedBodyFromHandle(m_editorSceneHandle, m_editorBodyHandle));
|
||||
}
|
||||
|
||||
Physics::WorldBodyRequestBus::Handler::BusConnect(GetEntityId());
|
||||
AzPhysics::SimulatedBodyComponentRequestsBus::Handler::BusConnect(GetEntityId());
|
||||
}
|
||||
|
||||
AZ::u32 EditorShapeColliderComponent::OnConfigurationChanged()
|
||||
@@ -663,7 +661,7 @@ namespace PhysX
|
||||
|
||||
void EditorShapeColliderComponent::Deactivate()
|
||||
{
|
||||
Physics::WorldBodyRequestBus::Handler::BusDisconnect();
|
||||
AzPhysics::SimulatedBodyComponentRequestsBus::Handler::BusDisconnect();
|
||||
m_colliderDebugDraw.Disconnect();
|
||||
|
||||
m_nonUniformScaleChangedHandler.Disconnect();
|
||||
@@ -761,11 +759,16 @@ namespace PhysX
|
||||
return AZ::Aabb::CreateNull();
|
||||
}
|
||||
|
||||
AzPhysics::SimulatedBody* EditorShapeColliderComponent::GetWorldBody()
|
||||
AzPhysics::SimulatedBody* EditorShapeColliderComponent::GetSimulatedBody()
|
||||
{
|
||||
return m_editorBody;
|
||||
}
|
||||
|
||||
AzPhysics::SimulatedBodyHandle EditorShapeColliderComponent::GetSimulatedBodyHandle() const
|
||||
{
|
||||
return m_editorBodyHandle;
|
||||
}
|
||||
|
||||
AzPhysics::SceneQueryHit EditorShapeColliderComponent::RayCast(const AzPhysics::RayCastRequest& request)
|
||||
{
|
||||
if (m_editorBody)
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
#include <AzCore/Component/NonUniformScaleBus.h>
|
||||
#include <AzFramework/Entity/EntityDebugDisplayBus.h>
|
||||
#include <AzFramework/Physics/Shape.h>
|
||||
#include <AzFramework/Physics/WorldBodyBus.h>
|
||||
#include <AzFramework/Physics/Components/SimulatedBodyComponentBus.h>
|
||||
#include <AzFramework/Physics/Common/PhysicsEvents.h>
|
||||
#include <AzFramework/Physics/Common/PhysicsTypes.h>
|
||||
#include <AzToolsFramework/API/ToolsApplicationAPI.h>
|
||||
@@ -68,7 +68,7 @@ namespace PhysX
|
||||
, protected DebugDraw::DisplayCallback
|
||||
, protected LmbrCentral::ShapeComponentNotificationsBus::Handler
|
||||
, private PhysX::ColliderShapeRequestBus::Handler
|
||||
, protected Physics::WorldBodyRequestBus::Handler
|
||||
, protected AzPhysics::SimulatedBodyComponentRequestsBus::Handler
|
||||
{
|
||||
public:
|
||||
AZ_EDITOR_COMPONENT(EditorShapeColliderComponent, "{2389DDC7-871B-42C6-9C95-2A679DDA0158}",
|
||||
@@ -120,12 +120,13 @@ namespace PhysX
|
||||
// handling for non-uniform scale
|
||||
void OnNonUniformScaleChanged(const AZ::Vector3& scale);
|
||||
|
||||
// WorldBodyRequestBus
|
||||
// AzPhysics::SimulatedBodyComponentRequestsBus::Handler overrides ...
|
||||
void EnablePhysics() override;
|
||||
void DisablePhysics() override;
|
||||
bool IsPhysicsEnabled() const override;
|
||||
AZ::Aabb GetAabb() const override;
|
||||
AzPhysics::SimulatedBody* GetWorldBody() override;
|
||||
AzPhysics::SimulatedBody* GetSimulatedBody() override;
|
||||
AzPhysics::SimulatedBodyHandle GetSimulatedBodyHandle() const override;
|
||||
AzPhysics::SceneQueryHit RayCast(const AzPhysics::RayCastRequest& request) override;
|
||||
|
||||
// LmbrCentral::ShapeComponentNotificationBus
|
||||
|
||||
@@ -87,7 +87,7 @@ namespace PhysX
|
||||
AZ::TransformNotificationBus::Handler::BusConnect(GetEntityId());
|
||||
Physics::CharacterRequestBus::Handler::BusConnect(GetEntityId());
|
||||
Physics::CollisionFilteringRequestBus::Handler::BusConnect(GetEntityId());
|
||||
Physics::WorldBodyRequestBus::Handler::BusConnect(GetEntityId());
|
||||
AzPhysics::SimulatedBodyComponentRequestsBus::Handler::BusConnect(GetEntityId());
|
||||
}
|
||||
|
||||
void CharacterControllerComponent::Deactivate()
|
||||
@@ -95,7 +95,7 @@ namespace PhysX
|
||||
DestroyController();
|
||||
|
||||
Physics::CollisionFilteringRequestBus::Handler::BusDisconnect();
|
||||
Physics::WorldBodyRequestBus::Handler::BusDisconnect();
|
||||
AzPhysics::SimulatedBodyComponentRequestsBus::Handler::BusDisconnect();
|
||||
AZ::TransformNotificationBus::Handler::BusDisconnect();
|
||||
Physics::CharacterRequestBus::Handler::BusDisconnect();
|
||||
}
|
||||
@@ -215,11 +215,20 @@ namespace PhysX
|
||||
return AZ::Aabb::CreateNull();
|
||||
}
|
||||
|
||||
AzPhysics::SimulatedBody* CharacterControllerComponent::GetWorldBody()
|
||||
AzPhysics::SimulatedBody* CharacterControllerComponent::GetSimulatedBody()
|
||||
{
|
||||
return GetCharacter();
|
||||
}
|
||||
|
||||
AzPhysics::SimulatedBodyHandle CharacterControllerComponent::GetSimulatedBodyHandle() const
|
||||
{
|
||||
if (m_controller)
|
||||
{
|
||||
return m_controller->m_bodyHandle;
|
||||
}
|
||||
return AzPhysics::InvalidSimulatedBodyHandle;
|
||||
}
|
||||
|
||||
AzPhysics::SceneQueryHit CharacterControllerComponent::RayCast(const AzPhysics::RayCastRequest& request)
|
||||
{
|
||||
if (m_controller)
|
||||
@@ -456,7 +465,5 @@ namespace PhysX
|
||||
m_preSimulateHandler.Disconnect();
|
||||
|
||||
CharacterControllerRequestBus::Handler::BusDisconnect();
|
||||
|
||||
Physics::WorldBodyNotificationBus::Event(GetEntityId(), &Physics::WorldBodyNotifications::OnPhysicsDisabled);
|
||||
}
|
||||
} // namespace PhysX
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
#include <AzFramework/Physics/CharacterBus.h>
|
||||
#include <AzFramework/Physics/SystemBus.h>
|
||||
#include <AzFramework/Physics/CollisionBus.h>
|
||||
#include <AzFramework/Physics/WorldBodyBus.h>
|
||||
#include <AzFramework/Physics/Components/SimulatedBodyComponentBus.h>
|
||||
#include <AzFramework/Physics/Common/PhysicsEvents.h>
|
||||
#include <PhysXCharacters/API/CharacterController.h>
|
||||
#include <AzCore/Component/TransformBus.h>
|
||||
@@ -35,7 +35,7 @@ namespace PhysX
|
||||
class CharacterControllerComponent
|
||||
: public AZ::Component
|
||||
, public Physics::CharacterRequestBus::Handler
|
||||
, public Physics::WorldBodyRequestBus::Handler
|
||||
, public AzPhysics::SimulatedBodyComponentRequestsBus::Handler
|
||||
, public AZ::TransformNotificationBus::Handler
|
||||
, public CharacterControllerRequestBus::Handler
|
||||
, public Physics::CollisionFilteringRequestBus::Handler
|
||||
@@ -99,12 +99,13 @@ namespace PhysX
|
||||
bool IsPresent() const override { return IsPhysicsEnabled(); }
|
||||
Physics::Character* GetCharacter() override;
|
||||
|
||||
// WorldBodyRequestBus
|
||||
// AzPhysics::SimulatedBodyComponentRequestsBus::Handler overrides ...
|
||||
void EnablePhysics() override;
|
||||
void DisablePhysics() override;
|
||||
bool IsPhysicsEnabled() const override;
|
||||
AZ::Aabb GetAabb() const override;
|
||||
AzPhysics::SimulatedBody* GetWorldBody() override;
|
||||
AzPhysics::SimulatedBody* GetSimulatedBody() override;
|
||||
AzPhysics::SimulatedBodyHandle GetSimulatedBodyHandle() const override;
|
||||
AzPhysics::SceneQueryHit RayCast(const AzPhysics::RayCastRequest& request) override;
|
||||
|
||||
// CharacterControllerRequestBus
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
#include <PhysX_precompiled.h>
|
||||
#include <PhysXCharacters/Components/CharacterGameplayComponent.h>
|
||||
#include <AzFramework/Physics/CharacterBus.h>
|
||||
#include <AzFramework/Physics/WorldBodyBus.h>
|
||||
#include <AzFramework/Physics/Common/PhysicsSimulatedBody.h>
|
||||
#include <AzCore/Serialization/EditContext.h>
|
||||
#include <PhysX/PhysXLocks.h>
|
||||
@@ -158,7 +157,7 @@ namespace PhysX
|
||||
void CharacterGameplayComponent::Activate()
|
||||
{
|
||||
AzPhysics::SimulatedBody* worldBody = nullptr;
|
||||
Physics::WorldBodyRequestBus::EventResult(worldBody, GetEntityId(), &Physics::WorldBodyRequests::GetWorldBody);
|
||||
AzPhysics::SimulatedBodyComponentRequestsBus::EventResult(worldBody, GetEntityId(), &AzPhysics::SimulatedBodyComponentRequests::GetSimulatedBody);
|
||||
if (worldBody)
|
||||
{
|
||||
if (auto* sceneInterface = AZ::Interface<AzPhysics::SceneInterface>::Get())
|
||||
|
||||
@@ -257,11 +257,20 @@ namespace PhysX
|
||||
return AZ::Aabb::CreateNull();
|
||||
}
|
||||
|
||||
AzPhysics::SimulatedBody* RagdollComponent::GetWorldBody()
|
||||
AzPhysics::SimulatedBody* RagdollComponent::GetSimulatedBody()
|
||||
{
|
||||
return GetRagdoll();
|
||||
}
|
||||
|
||||
AzPhysics::SimulatedBodyHandle RagdollComponent::GetSimulatedBodyHandle() const
|
||||
{
|
||||
if (m_ragdoll)
|
||||
{
|
||||
return m_ragdoll->m_bodyHandle;
|
||||
}
|
||||
return AzPhysics::InvalidSimulatedBodyHandle;
|
||||
}
|
||||
|
||||
AzPhysics::SceneQueryHit RagdollComponent::RayCast(const AzPhysics::RayCastRequest& request)
|
||||
{
|
||||
if (m_ragdoll)
|
||||
@@ -357,7 +366,7 @@ namespace PhysX
|
||||
}
|
||||
|
||||
AzFramework::RagdollPhysicsRequestBus::Handler::BusConnect(GetEntityId());
|
||||
Physics::WorldBodyRequestBus::Handler::BusConnect(GetEntityId());
|
||||
AzPhysics::SimulatedBodyComponentRequestsBus::Handler::BusConnect(GetEntityId());
|
||||
|
||||
AzFramework::RagdollPhysicsNotificationBus::Event(GetEntityId(),
|
||||
&AzFramework::RagdollPhysicsNotifications::OnRagdollActivated);
|
||||
@@ -367,7 +376,6 @@ namespace PhysX
|
||||
{
|
||||
if (m_ragdoll)
|
||||
{
|
||||
Physics::WorldBodyRequestBus::Handler::BusDisconnect();
|
||||
AzFramework::RagdollPhysicsRequestBus::Handler::BusDisconnect();
|
||||
AzFramework::RagdollPhysicsNotificationBus::Event(GetEntityId(),
|
||||
&AzFramework::RagdollPhysicsNotifications::OnRagdollDeactivated);
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
#include <PhysXCharacters/API/Ragdoll.h>
|
||||
#include <AzCore/Component/Component.h>
|
||||
#include <AzFramework/Physics/CharacterPhysicsDataBus.h>
|
||||
#include <AzFramework/Physics/WorldBodyBus.h>
|
||||
#include <AzFramework/Physics/Components/SimulatedBodyComponentBus.h>
|
||||
|
||||
namespace AzPhysics
|
||||
{
|
||||
@@ -28,7 +28,7 @@ namespace PhysX
|
||||
class RagdollComponent
|
||||
: public AZ::Component
|
||||
, public AzFramework::RagdollPhysicsRequestBus::Handler
|
||||
, public Physics::WorldBodyRequestBus::Handler
|
||||
, public AzPhysics::SimulatedBodyComponentRequestsBus::Handler
|
||||
, public AzFramework::CharacterPhysicsDataNotificationBus::Handler
|
||||
{
|
||||
public:
|
||||
@@ -81,12 +81,13 @@ namespace PhysX
|
||||
void SetNodeState(size_t nodeIndex, const Physics::RagdollNodeState& nodeState) override;
|
||||
Physics::RagdollNode* GetNode(size_t nodeIndex) const override;
|
||||
|
||||
// WorldBodyRequestBus
|
||||
// AzPhysics::SimulatedBodyComponentRequestsBus::Handler overrides ...
|
||||
void EnablePhysics() override;
|
||||
void DisablePhysics() override;
|
||||
bool IsPhysicsEnabled() const override;
|
||||
AZ::Aabb GetAabb() const override;
|
||||
AzPhysics::SimulatedBody* GetWorldBody() override;
|
||||
AzPhysics::SimulatedBody* GetSimulatedBody() override;
|
||||
AzPhysics::SimulatedBodyHandle GetSimulatedBodyHandle() const override;
|
||||
AzPhysics::SceneQueryHit RayCast(const AzPhysics::RayCastRequest& request) override;
|
||||
|
||||
// CharacterPhysicsDataNotificationBus
|
||||
|
||||
@@ -189,7 +189,7 @@ namespace PhysX
|
||||
}
|
||||
|
||||
Physics::RigidBodyRequestBus::Handler::BusDisconnect();
|
||||
Physics::WorldBodyRequestBus::Handler::BusDisconnect();
|
||||
AzPhysics::SimulatedBodyComponentRequestsBus::Handler::BusDisconnect();
|
||||
AZ::TransformNotificationBus::MultiHandler::BusDisconnect();
|
||||
m_sceneFinishSimHandler.Disconnect();
|
||||
AZ::TickBus::Handler::BusDisconnect();
|
||||
@@ -309,7 +309,7 @@ namespace PhysX
|
||||
AZ::TickBus::Handler::BusConnect();
|
||||
AZ::TransformNotificationBus::MultiHandler::BusConnect(GetEntityId());
|
||||
Physics::RigidBodyRequestBus::Handler::BusConnect(GetEntityId());
|
||||
Physics::WorldBodyRequestBus::Handler::BusConnect(GetEntityId());
|
||||
AzPhysics::SimulatedBodyComponentRequestsBus::Handler::BusConnect(GetEntityId());
|
||||
}
|
||||
|
||||
void RigidBodyComponent::EnablePhysics()
|
||||
@@ -341,7 +341,6 @@ namespace PhysX
|
||||
m_initialScale = transform.ExtractScale();
|
||||
|
||||
Physics::RigidBodyNotificationBus::Event(GetEntityId(), &Physics::RigidBodyNotificationBus::Events::OnPhysicsEnabled);
|
||||
Physics::WorldBodyNotificationBus::Event(GetEntityId(), &Physics::WorldBodyNotifications::OnPhysicsEnabled);
|
||||
}
|
||||
|
||||
void RigidBodyComponent::DisablePhysics()
|
||||
@@ -352,7 +351,6 @@ namespace PhysX
|
||||
}
|
||||
|
||||
Physics::RigidBodyNotificationBus::Event(GetEntityId(), &Physics::RigidBodyNotificationBus::Events::OnPhysicsDisabled);
|
||||
Physics::WorldBodyNotificationBus::Event(GetEntityId(), &Physics::WorldBodyNotifications::OnPhysicsDisabled);
|
||||
}
|
||||
|
||||
bool RigidBodyComponent::IsPhysicsEnabled() const
|
||||
@@ -526,11 +524,16 @@ namespace PhysX
|
||||
return m_rigidBody;
|
||||
}
|
||||
|
||||
AzPhysics::SimulatedBody* RigidBodyComponent::GetWorldBody()
|
||||
AzPhysics::SimulatedBody* RigidBodyComponent::GetSimulatedBody()
|
||||
{
|
||||
return m_rigidBody;
|
||||
}
|
||||
|
||||
AzPhysics::SimulatedBodyHandle RigidBodyComponent::GetSimulatedBodyHandle() const
|
||||
{
|
||||
return m_rigidBodyHandle;
|
||||
}
|
||||
|
||||
AzPhysics::SceneQueryHit RigidBodyComponent::RayCast(const AzPhysics::RayCastRequest& request)
|
||||
{
|
||||
if (m_rigidBody)
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
#include <AzCore/Component/TickBus.h>
|
||||
#include <AzCore/Component/TransformBus.h>
|
||||
#include <AzFramework/Physics/RigidBodyBus.h>
|
||||
#include <AzFramework/Physics/WorldBodyBus.h>
|
||||
#include <AzFramework/Physics/Components/SimulatedBodyComponentBus.h>
|
||||
#include <AzFramework/Physics/Common/PhysicsEvents.h>
|
||||
#include <AzFramework/Physics/Configuration/RigidBodyConfiguration.h>
|
||||
#include <AzFramework/Physics/SimulatedBodies/RigidBody.h>
|
||||
@@ -35,7 +35,7 @@ namespace PhysX
|
||||
class RigidBodyComponent
|
||||
: public AZ::Component
|
||||
, public Physics::RigidBodyRequestBus::Handler
|
||||
, public Physics::WorldBodyRequestBus::Handler
|
||||
, public AzPhysics::SimulatedBodyComponentRequestsBus::Handler
|
||||
, public AZ::TickBus::Handler
|
||||
, public AzFramework::SliceGameEntityOwnershipServiceNotificationBus::Handler
|
||||
, protected AZ::TransformNotificationBus::MultiHandler
|
||||
@@ -120,8 +120,9 @@ namespace PhysX
|
||||
void SetSleepThreshold(float threshold) override;
|
||||
AzPhysics::RigidBody* GetRigidBody() override;
|
||||
|
||||
// WorldBodyRequestBus
|
||||
AzPhysics::SimulatedBody* GetWorldBody() override;
|
||||
// AzPhysics::SimulatedBodyComponentRequestsBus::Handler overrides ...
|
||||
AzPhysics::SimulatedBody* GetSimulatedBody() override;
|
||||
AzPhysics::SimulatedBodyHandle GetSimulatedBodyHandle() const override;
|
||||
|
||||
// SliceGameEntityOwnershipServiceNotificationBus
|
||||
void OnSliceInstantiated(const AZ::Data::AssetId&, const AZ::SliceComponent::SliceInstanceAddress&,
|
||||
|
||||
@@ -83,8 +83,8 @@ namespace PhysX
|
||||
continue;
|
||||
}
|
||||
|
||||
AzPhysics::SimulatedBody* body1 = actorData1->GetWorldBody();
|
||||
AzPhysics::SimulatedBody* body2 = actorData2->GetWorldBody();
|
||||
AzPhysics::SimulatedBody* body1 = actorData1->GetSimulatedBody();
|
||||
AzPhysics::SimulatedBody* body2 = actorData2->GetSimulatedBody();
|
||||
|
||||
if (!body1 || !body2)
|
||||
{
|
||||
@@ -161,7 +161,7 @@ namespace PhysX
|
||||
}
|
||||
|
||||
ActorData* triggerBodyActorData = Utils::GetUserData(triggerPair.triggerActor);
|
||||
AzPhysics::SimulatedBody* triggerBody = triggerBodyActorData->GetWorldBody();
|
||||
AzPhysics::SimulatedBody* triggerBody = triggerBodyActorData->GetSimulatedBody();
|
||||
if (!triggerBody)
|
||||
{
|
||||
AZ_Error("PhysX", false, "onTrigger:: trigger body was invalid");
|
||||
@@ -174,7 +174,7 @@ namespace PhysX
|
||||
}
|
||||
|
||||
ActorData* otherActorData = Utils::GetUserData(triggerPair.otherActor);
|
||||
AzPhysics::SimulatedBody* otherBody = otherActorData->GetWorldBody();
|
||||
AzPhysics::SimulatedBody* otherBody = otherActorData->GetSimulatedBody();
|
||||
if (!otherBody)
|
||||
{
|
||||
AZ_Error("PhysX", false, "onTrigger:: otherBody was invalid");
|
||||
|
||||
@@ -62,8 +62,6 @@ namespace PhysX
|
||||
|
||||
void StaticRigidBodyComponent::GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible)
|
||||
{
|
||||
// Not compatible with cry engine colliders
|
||||
incompatible.push_back(AZ_CRC("ColliderService", 0x902d4e93));
|
||||
// There can be only one StaticRigidBodyComponent per entity
|
||||
incompatible.push_back(AZ_CRC("PhysXStaticRigidBodyService", 0xaae8973b));
|
||||
// Cannot have both StaticRigidBodyComponent and RigidBodyComponent
|
||||
@@ -75,11 +73,6 @@ namespace PhysX
|
||||
dependent.push_back(AZ_CRC("PhysXColliderService", 0x4ff43f7c));
|
||||
}
|
||||
|
||||
PhysX::StaticRigidBody* StaticRigidBodyComponent::GetStaticRigidBody()
|
||||
{
|
||||
return m_staticRigidBody;
|
||||
}
|
||||
|
||||
void StaticRigidBodyComponent::InitStaticRigidBody()
|
||||
{
|
||||
AZ::Transform transform = AZ::Transform::CreateIdentity();
|
||||
@@ -117,8 +110,7 @@ namespace PhysX
|
||||
|
||||
InitStaticRigidBody();
|
||||
|
||||
Physics::WorldBodyRequestBus::Handler::BusConnect(GetEntityId());
|
||||
Physics::WorldBodyNotificationBus::Event(GetEntityId(), &Physics::WorldBodyNotifications::OnPhysicsEnabled);
|
||||
AzPhysics::SimulatedBodyComponentRequestsBus::Handler::BusConnect(GetEntityId());
|
||||
}
|
||||
|
||||
void StaticRigidBodyComponent::Deactivate()
|
||||
@@ -130,7 +122,7 @@ namespace PhysX
|
||||
m_staticRigidBody = nullptr;
|
||||
}
|
||||
|
||||
Physics::WorldBodyRequestBus::Handler::BusDisconnect();
|
||||
AzPhysics::SimulatedBodyComponentRequestsBus::Handler::BusDisconnect();
|
||||
AZ::TransformNotificationBus::Handler::BusDisconnect();
|
||||
}
|
||||
|
||||
@@ -149,8 +141,6 @@ namespace PhysX
|
||||
{
|
||||
sceneInterface->EnableSimulationOfBody(m_attachedSceneHandle, m_staticRigidBodyHandle);
|
||||
}
|
||||
|
||||
Physics::WorldBodyNotificationBus::Event(GetEntityId(), &Physics::WorldBodyNotifications::OnPhysicsEnabled);
|
||||
}
|
||||
|
||||
void StaticRigidBodyComponent::DisablePhysics()
|
||||
@@ -159,8 +149,6 @@ namespace PhysX
|
||||
{
|
||||
sceneInterface->DisableSimulationOfBody(m_attachedSceneHandle, m_staticRigidBodyHandle);
|
||||
}
|
||||
|
||||
Physics::WorldBodyNotificationBus::Event(GetEntityId(), &Physics::WorldBodyNotifications::OnPhysicsDisabled);
|
||||
}
|
||||
|
||||
bool StaticRigidBodyComponent::IsPhysicsEnabled() const
|
||||
@@ -173,7 +161,12 @@ namespace PhysX
|
||||
return m_staticRigidBody->GetAabb();
|
||||
}
|
||||
|
||||
AzPhysics::SimulatedBody* StaticRigidBodyComponent::GetWorldBody()
|
||||
AzPhysics::SimulatedBodyHandle StaticRigidBodyComponent::GetSimulatedBodyHandle() const
|
||||
{
|
||||
return m_staticRigidBodyHandle;
|
||||
}
|
||||
|
||||
AzPhysics::SimulatedBody* StaticRigidBodyComponent::GetSimulatedBody()
|
||||
{
|
||||
return m_staticRigidBody;
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
#include <AzCore/Component/Component.h>
|
||||
#include <AzCore/Component/TransformBus.h>
|
||||
#include <AzFramework/Physics/WorldBodyBus.h>
|
||||
#include <AzFramework/Physics/Components/SimulatedBodyComponentBus.h>
|
||||
#include <PhysX/ComponentTypeIds.h>
|
||||
|
||||
namespace AzPhysics
|
||||
@@ -27,7 +27,7 @@ namespace PhysX
|
||||
|
||||
class StaticRigidBodyComponent final
|
||||
: public AZ::Component
|
||||
, public Physics::WorldBodyRequestBus::Handler
|
||||
, public AzPhysics::SimulatedBodyComponentRequestsBus::Handler
|
||||
, private AZ::TransformNotificationBus::Handler
|
||||
{
|
||||
public:
|
||||
@@ -44,14 +44,14 @@ namespace PhysX
|
||||
static void GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible);
|
||||
static void GetDependentServices(AZ::ComponentDescriptor::DependencyArrayType& dependent);
|
||||
|
||||
PhysX::StaticRigidBody* GetStaticRigidBody();
|
||||
|
||||
// WorldBodyRequestBus
|
||||
// AzPhysics::SimulatedBodyComponentRequestsBus::Handler overrides ...
|
||||
void EnablePhysics() override;
|
||||
void DisablePhysics() override;
|
||||
bool IsPhysicsEnabled() const override;
|
||||
AZ::Aabb GetAabb() const override;
|
||||
AzPhysics::SimulatedBody* GetWorldBody() override;
|
||||
AzPhysics::SimulatedBodyHandle GetSimulatedBodyHandle() const override;
|
||||
AzPhysics::SimulatedBody* GetSimulatedBody() override;
|
||||
|
||||
AzPhysics::SceneQueryHit RayCast(const AzPhysics::RayCastRequest& request) override;
|
||||
|
||||
private:
|
||||
|
||||
@@ -460,14 +460,14 @@ namespace PhysX
|
||||
characterEntity->Activate();
|
||||
|
||||
bool physicsEnabled = false;
|
||||
Physics::WorldBodyRequestBus::EventResult(physicsEnabled, characterEntity->GetId(),
|
||||
&Physics::WorldBodyRequestBus::Events::IsPhysicsEnabled);
|
||||
AzPhysics::SimulatedBodyComponentRequestsBus::EventResult(physicsEnabled, characterEntity->GetId(),
|
||||
&AzPhysics::SimulatedBodyComponentRequestsBus::Events::IsPhysicsEnabled);
|
||||
EXPECT_TRUE(physicsEnabled);
|
||||
|
||||
// when physics is disabled
|
||||
Physics::WorldBodyRequestBus::Event(characterEntity->GetId(), &Physics::WorldBodyRequestBus::Events::DisablePhysics);
|
||||
Physics::WorldBodyRequestBus::EventResult(physicsEnabled, characterEntity->GetId(),
|
||||
&Physics::WorldBodyRequestBus::Events::IsPhysicsEnabled);
|
||||
AzPhysics::SimulatedBodyComponentRequestsBus::Event(characterEntity->GetId(), &AzPhysics::SimulatedBodyComponentRequestsBus::Events::DisablePhysics);
|
||||
AzPhysics::SimulatedBodyComponentRequestsBus::EventResult(physicsEnabled, characterEntity->GetId(),
|
||||
&AzPhysics::SimulatedBodyComponentRequestsBus::Events::IsPhysicsEnabled);
|
||||
EXPECT_FALSE(physicsEnabled);
|
||||
|
||||
// expect no error occurs when sending common events
|
||||
|
||||
@@ -77,7 +77,7 @@ namespace PhysXEditorTests
|
||||
EntityPtr gameEntity = CreateActiveGameEntityFromEditorEntity(editorEntity.get());
|
||||
|
||||
// since there was no editor rigid body component, the runtime entity should have a static rigid body
|
||||
const auto* staticBody = gameEntity->FindComponent<PhysX::StaticRigidBodyComponent>()->GetStaticRigidBody();
|
||||
const auto* staticBody = azdynamic_cast<PhysX::StaticRigidBody*>(gameEntity->FindComponent<PhysX::StaticRigidBodyComponent>()->GetSimulatedBody());
|
||||
|
||||
const AZ::Aabb aabb = staticBody->GetAabb();
|
||||
EXPECT_THAT(aabb.GetMin(), UnitTest::IsCloseTolerance(AZ::Vector3(5.6045f, 4.9960f, 11.7074f), 1e-3f));
|
||||
@@ -153,7 +153,7 @@ namespace PhysXEditorTests
|
||||
EntityPtr gameEntity = CreateActiveGameEntityFromEditorEntity(editorEntity.get());
|
||||
|
||||
// since there was no editor rigid body component, the runtime entity should have a static rigid body
|
||||
const auto* staticBody = gameEntity->FindComponent<PhysX::StaticRigidBodyComponent>()->GetStaticRigidBody();
|
||||
const auto* staticBody = azdynamic_cast<PhysX::StaticRigidBody*>(gameEntity->FindComponent<PhysX::StaticRigidBodyComponent>()->GetSimulatedBody());
|
||||
|
||||
const AZ::Aabb aabb = staticBody->GetAabb();
|
||||
|
||||
@@ -231,7 +231,7 @@ namespace PhysXEditorTests
|
||||
EntityPtr gameEntity = CreateActiveGameEntityFromEditorEntity(editorEntity.get());
|
||||
|
||||
// since there was no editor rigid body component, the runtime entity should have a static rigid body
|
||||
const auto* staticBody = gameEntity->FindComponent<PhysX::StaticRigidBodyComponent>()->GetStaticRigidBody();
|
||||
const auto* staticBody = azdynamic_cast<PhysX::StaticRigidBody*>(gameEntity->FindComponent<PhysX::StaticRigidBodyComponent>()->GetSimulatedBody());
|
||||
|
||||
const AZ::Aabb aabb = staticBody->GetAabb();
|
||||
|
||||
|
||||
@@ -121,7 +121,7 @@ namespace PhysXEditorTests
|
||||
EntityPtr gameEntity = CreateActiveGameEntityFromEditorEntity(editorEntity.get());
|
||||
|
||||
// since there was no editor rigid body component, the runtime entity should have a static rigid body
|
||||
const auto* staticBody = gameEntity->FindComponent<PhysX::StaticRigidBodyComponent>()->GetStaticRigidBody();
|
||||
const auto* staticBody = azdynamic_cast<PhysX::StaticRigidBody*>(gameEntity->FindComponent<PhysX::StaticRigidBodyComponent>()->GetSimulatedBody());
|
||||
const auto* pxRigidStatic = static_cast<const physx::PxRigidStatic*>(staticBody->GetNativePointer());
|
||||
|
||||
PHYSX_SCENE_READ_LOCK(pxRigidStatic->getScene());
|
||||
|
||||
@@ -613,17 +613,17 @@ namespace PhysX
|
||||
// Create 3 colliders, one of each type and check that the AABB of their body is the expected
|
||||
EntityPtr box = TestUtils::CreateBoxEntity(m_testSceneHandle, AZ::Vector3(0, 0, 0), AZ::Vector3(32, 32, 32));
|
||||
AZ::Aabb boxAABB;
|
||||
Physics::WorldBodyRequestBus::EventResult(boxAABB, box->GetId(), &Physics::WorldBodyRequests::GetAabb);
|
||||
AzPhysics::SimulatedBodyComponentRequestsBus::EventResult(boxAABB, box->GetId(), &AzPhysics::SimulatedBodyComponentRequests::GetAabb);
|
||||
EXPECT_TRUE(boxAABB.GetMin().IsClose(AZ::Vector3(-16, -16, -16)) && boxAABB.GetMax().IsClose(AZ::Vector3(16, 16, 16)));
|
||||
|
||||
EntityPtr sphere = TestUtils::CreateSphereEntity(m_testSceneHandle, AZ::Vector3(-100, 0, 0), 16);
|
||||
AZ::Aabb sphereAABB;
|
||||
Physics::WorldBodyRequestBus::EventResult(sphereAABB, sphere->GetId(), &Physics::WorldBodyRequests::GetAabb);
|
||||
AzPhysics::SimulatedBodyComponentRequestsBus::EventResult(sphereAABB, sphere->GetId(), &AzPhysics::SimulatedBodyComponentRequests::GetAabb);
|
||||
EXPECT_TRUE(sphereAABB.GetMin().IsClose(AZ::Vector3(-16 -100, -16, -16)) && sphereAABB.GetMax().IsClose(AZ::Vector3(16 -100, 16, 16)));
|
||||
|
||||
EntityPtr capsule = TestUtils::CreateCapsuleEntity(m_testSceneHandle, AZ::Vector3(100, 0, 0), 128, 16);
|
||||
AZ::Aabb capsuleAABB;
|
||||
Physics::WorldBodyRequestBus::EventResult(capsuleAABB, capsule->GetId(), &Physics::WorldBodyRequests::GetAabb);
|
||||
AzPhysics::SimulatedBodyComponentRequestsBus::EventResult(capsuleAABB, capsule->GetId(), &AzPhysics::SimulatedBodyComponentRequests::GetAabb);
|
||||
EXPECT_TRUE(capsuleAABB.GetMin().IsClose(AZ::Vector3(-16 +100, -16, -64)) && capsuleAABB.GetMax().IsClose(AZ::Vector3(16 +100, 16, 64)));
|
||||
}
|
||||
|
||||
@@ -632,17 +632,17 @@ namespace PhysX
|
||||
// Create 3 colliders, one of each type and check that the AABB of their body is the expected
|
||||
EntityPtr box = TestUtils::CreateStaticBoxEntity(m_testSceneHandle, AZ::Vector3(0, 0, 0), AZ::Vector3(32, 32, 32));
|
||||
AZ::Aabb boxAABB;
|
||||
Physics::WorldBodyRequestBus::EventResult(boxAABB, box->GetId(), &Physics::WorldBodyRequests::GetAabb);
|
||||
AzPhysics::SimulatedBodyComponentRequestsBus::EventResult(boxAABB, box->GetId(), &AzPhysics::SimulatedBodyComponentRequests::GetAabb);
|
||||
EXPECT_TRUE(boxAABB.GetMin().IsClose(AZ::Vector3(-16, -16, -16)) && boxAABB.GetMax().IsClose(AZ::Vector3(16, 16, 16)));
|
||||
|
||||
EntityPtr sphere = TestUtils::CreateStaticSphereEntity(m_testSceneHandle, AZ::Vector3(-100, 0, 0), 16);
|
||||
AZ::Aabb sphereAABB;
|
||||
Physics::WorldBodyRequestBus::EventResult(sphereAABB, sphere->GetId(), &Physics::WorldBodyRequests::GetAabb);
|
||||
AzPhysics::SimulatedBodyComponentRequestsBus::EventResult(sphereAABB, sphere->GetId(), &AzPhysics::SimulatedBodyComponentRequests::GetAabb);
|
||||
EXPECT_TRUE(sphereAABB.GetMin().IsClose(AZ::Vector3(-16 -100, -16, -16)) && sphereAABB.GetMax().IsClose(AZ::Vector3(16 -100, 16, 16)));
|
||||
|
||||
EntityPtr capsule = TestUtils::CreateStaticCapsuleEntity(m_testSceneHandle, AZ::Vector3(100, 0, 0), 128, 16);
|
||||
AZ::Aabb capsuleAABB;
|
||||
Physics::WorldBodyRequestBus::EventResult(capsuleAABB, capsule->GetId(), &Physics::WorldBodyRequests::GetAabb);
|
||||
AzPhysics::SimulatedBodyComponentRequestsBus::EventResult(capsuleAABB, capsule->GetId(), &AzPhysics::SimulatedBodyComponentRequests::GetAabb);
|
||||
EXPECT_TRUE(capsuleAABB.GetMin().IsClose(AZ::Vector3(-16 +100, -16, -64)) && capsuleAABB.GetMax().IsClose(AZ::Vector3(16 +100, 16, 64)));
|
||||
}
|
||||
|
||||
@@ -662,19 +662,19 @@ namespace PhysX
|
||||
request.m_direction = AZ::Vector3(0, 0, -1);
|
||||
request.m_distance = 200.f;
|
||||
|
||||
Physics::WorldBodyRequestBus::Event(entity->GetId(), &Physics::WorldBodyRequests::DisablePhysics);
|
||||
AzPhysics::SimulatedBodyComponentRequestsBus::Event(entity->GetId(), &AzPhysics::SimulatedBodyComponentRequests::DisablePhysics);
|
||||
|
||||
bool enabled = true;
|
||||
Physics::WorldBodyRequestBus::EventResult(enabled, entity->GetId(), &Physics::WorldBodyRequests::IsPhysicsEnabled);
|
||||
AzPhysics::SimulatedBodyComponentRequestsBus::EventResult(enabled, entity->GetId(), &AzPhysics::SimulatedBodyComponentRequests::IsPhysicsEnabled);
|
||||
EXPECT_FALSE(enabled);
|
||||
|
||||
AzPhysics::SceneQueryHits result = sceneInterface->QueryScene(sceneHandle, &request);
|
||||
EXPECT_FALSE(result);
|
||||
|
||||
Physics::WorldBodyRequestBus::Event(entity->GetId(), &Physics::WorldBodyRequests::EnablePhysics);
|
||||
AzPhysics::SimulatedBodyComponentRequestsBus::Event(entity->GetId(), &AzPhysics::SimulatedBodyComponentRequests::EnablePhysics);
|
||||
|
||||
enabled = false;
|
||||
Physics::WorldBodyRequestBus::EventResult(enabled, entity->GetId(), &Physics::WorldBodyRequests::IsPhysicsEnabled);
|
||||
AzPhysics::SimulatedBodyComponentRequestsBus::EventResult(enabled, entity->GetId(), &AzPhysics::SimulatedBodyComponentRequests::IsPhysicsEnabled);
|
||||
EXPECT_TRUE(enabled);
|
||||
|
||||
result = sceneInterface->QueryScene(sceneHandle, &request);
|
||||
@@ -718,7 +718,7 @@ namespace PhysX
|
||||
request.m_distance = 200.0f;
|
||||
|
||||
AzPhysics::SceneQueryHit hit;
|
||||
Physics::WorldBodyRequestBus::EventResult(hit, staticBoxEntity->GetId(), &Physics::WorldBodyRequests::RayCast, request);
|
||||
AzPhysics::SimulatedBodyComponentRequestsBus::EventResult(hit, staticBoxEntity->GetId(), &AzPhysics::SimulatedBodyComponentRequests::RayCast, request);
|
||||
|
||||
EXPECT_TRUE(hit);
|
||||
|
||||
@@ -922,7 +922,7 @@ namespace PhysX
|
||||
static const RayCastFunc WorldBodyRaycastEBusCall = []([[maybe_unused]] AZ::EntityId entityId, [[maybe_unused]] const AzPhysics::RayCastRequest& request)
|
||||
{
|
||||
AzPhysics::SceneQueryHit ret;
|
||||
Physics::WorldBodyRequestBus::EventResult(ret, entityId, &Physics::WorldBodyRequests::RayCast, request);
|
||||
AzPhysics::SimulatedBodyComponentRequestsBus::EventResult(ret, entityId, &AzPhysics::SimulatedBodyComponentRequests::RayCast, request);
|
||||
return ret;
|
||||
};
|
||||
|
||||
|
||||
@@ -312,7 +312,7 @@ namespace PhysX
|
||||
{
|
||||
// set up a trigger box
|
||||
auto triggerBox = TestUtils::CreateTriggerAtPosition<BoxColliderComponent>(AZ::Vector3(0.0f, 0.0f, 12.0f));
|
||||
auto triggerBody = triggerBox->FindComponent<StaticRigidBodyComponent>()->GetStaticRigidBody();
|
||||
auto* triggerBody = azdynamic_cast<PhysX::StaticRigidBody*>(triggerBox->FindComponent<PhysX::StaticRigidBodyComponent>()->GetSimulatedBody());
|
||||
auto triggerShape = triggerBody->GetShape(0);
|
||||
|
||||
TestTriggerAreaNotificationListener testTriggerAreaNotificationListener(triggerBox->GetId());
|
||||
@@ -445,7 +445,7 @@ namespace PhysX
|
||||
auto obj02 = TestUtils::AddStaticUnitTestObject<BoxColliderComponent>(m_testSceneHandle, AZ::Vector3(0.0f, 0.0f, 0.0f), "TestBox01");
|
||||
|
||||
auto body01 = obj01->FindComponent<RigidBodyComponent>()->GetRigidBody();
|
||||
auto body02 = obj02->FindComponent<StaticRigidBodyComponent>()->GetStaticRigidBody();
|
||||
auto* body02 = azdynamic_cast<PhysX::StaticRigidBody*>(obj02->FindComponent<PhysX::StaticRigidBodyComponent>()->GetSimulatedBody());
|
||||
|
||||
auto shape01 = body01->GetShape(0).get();
|
||||
auto shape02 = body02->GetShape(0).get();
|
||||
@@ -588,7 +588,7 @@ namespace PhysX
|
||||
{
|
||||
// set up a trigger box
|
||||
auto triggerBox = TestUtils::CreateTriggerAtPosition<BoxColliderComponent>(AZ::Vector3(0.0f, 0.0f, 0.0f));
|
||||
auto triggerBody = triggerBox->FindComponent<StaticRigidBodyComponent>()->GetStaticRigidBody();
|
||||
auto* triggerBody = azdynamic_cast<PhysX::StaticRigidBody*>(triggerBox->FindComponent<PhysX::StaticRigidBodyComponent>()->GetSimulatedBody());
|
||||
|
||||
// Create a test box above the trigger so when it falls down it'd enter and leave the trigger box
|
||||
auto testBox = TestUtils::AddUnitTestObject(m_testSceneHandle, AZ::Vector3(0.0f, 0.0f, 1.5f), "TestBox");
|
||||
@@ -628,7 +628,7 @@ namespace PhysX
|
||||
{
|
||||
// Set up a static non trigger box
|
||||
auto staticBox = TestUtils::AddStaticUnitTestObject<BoxColliderComponent>(m_testSceneHandle, AZ::Vector3(0.0f, 0.0f, 0.0f));
|
||||
auto staticBody = staticBox->FindComponent<StaticRigidBodyComponent>()->GetStaticRigidBody();
|
||||
auto* staticBody = azdynamic_cast<PhysX::StaticRigidBody*>(staticBox->FindComponent<PhysX::StaticRigidBodyComponent>()->GetSimulatedBody());
|
||||
|
||||
// Create a test trigger box above the static box so when it falls down it'd enter and leave the trigger box
|
||||
auto dynamicTrigger = TestUtils::CreateDynamicTriggerAtPosition<BoxColliderComponent>(AZ::Vector3(0.0f, 0.0f, 5.0f));
|
||||
|
||||
@@ -37,7 +37,7 @@ namespace PhysX
|
||||
<Class name="AZ::Component" field="BaseClass1" type="{EDFCB2CF-F75D-43BE-B26B-F35821B29247}">
|
||||
<Class name="AZ::u64" field="Id" value="0" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
<Class name="PhysX::Ragdoll" field="PhysXRagdoll" type="{55D477B5-B922-4D3E-89FE-7FB7B9FDD635}"/>
|
||||
<Class name="AZStd::shared_ptr" field="PhysXRagdoll" type="{A3E470C6-D6E0-5A32-9E83-96C379D9E7FA}"/>
|
||||
</Class>
|
||||
</ObjectStream>)DELIMITER";
|
||||
|
||||
|
||||
@@ -138,7 +138,7 @@ namespace PhysXEditorTests
|
||||
EntityPtr gameEntity = CreateActiveGameEntityFromEditorEntity(editorEntity.get());
|
||||
|
||||
// since there was no editor rigid body component, the runtime entity should have a static rigid body
|
||||
const auto* staticBody = gameEntity->FindComponent<PhysX::StaticRigidBodyComponent>()->GetStaticRigidBody();
|
||||
const auto* staticBody = azdynamic_cast<PhysX::StaticRigidBody*>(gameEntity->FindComponent<PhysX::StaticRigidBodyComponent>()->GetSimulatedBody());
|
||||
const auto* pxRigidStatic = static_cast<const physx::PxRigidStatic*>(staticBody->GetNativePointer());
|
||||
|
||||
PHYSX_SCENE_READ_LOCK(pxRigidStatic->getScene());
|
||||
@@ -196,7 +196,7 @@ namespace PhysXEditorTests
|
||||
EntityPtr gameEntity = CreateActiveGameEntityFromEditorEntity(editorEntity.get());
|
||||
|
||||
// since there was no editor rigid body component, the runtime entity should have a static rigid body
|
||||
const auto* staticBody = gameEntity->FindComponent<PhysX::StaticRigidBodyComponent>()->GetStaticRigidBody();
|
||||
const auto* staticBody = azdynamic_cast<PhysX::StaticRigidBody*>(gameEntity->FindComponent<PhysX::StaticRigidBodyComponent>()->GetSimulatedBody());
|
||||
const auto* pxRigidStatic = static_cast<const physx::PxRigidStatic*>(staticBody->GetNativePointer());
|
||||
|
||||
PHYSX_SCENE_READ_LOCK(pxRigidStatic->getScene());
|
||||
@@ -247,7 +247,7 @@ namespace PhysXEditorTests
|
||||
EntityPtr gameEntity = CreateActiveGameEntityFromEditorEntity(editorEntity.get());
|
||||
|
||||
// since there was no editor rigid body component, the runtime entity should have a static rigid body
|
||||
const auto* staticBody = gameEntity->FindComponent<PhysX::StaticRigidBodyComponent>()->GetStaticRigidBody();
|
||||
const auto* staticBody = azdynamic_cast<PhysX::StaticRigidBody*>(gameEntity->FindComponent<PhysX::StaticRigidBodyComponent>()->GetSimulatedBody());
|
||||
|
||||
// the vertices of the input polygon prism ranged from (0, 0) to (3, 3) and the height was set to 2
|
||||
// the bounding box of the static rigid body should reflect those values combined with the scale values above
|
||||
@@ -291,7 +291,7 @@ namespace PhysXEditorTests
|
||||
EntityPtr gameEntity = CreateActiveGameEntityFromEditorEntity(editorEntity.get());
|
||||
|
||||
// since there was no editor rigid body component, the runtime entity should have a static rigid body
|
||||
const auto* staticBody = gameEntity->FindComponent<PhysX::StaticRigidBodyComponent>()->GetStaticRigidBody();
|
||||
const auto* staticBody = azdynamic_cast<PhysX::StaticRigidBody*>(gameEntity->FindComponent<PhysX::StaticRigidBodyComponent>()->GetSimulatedBody());
|
||||
const auto* pxRigidStatic = static_cast<const physx::PxRigidStatic*>(staticBody->GetNativePointer());
|
||||
|
||||
PHYSX_SCENE_READ_LOCK(pxRigidStatic->getScene());
|
||||
@@ -363,7 +363,7 @@ namespace PhysXEditorTests
|
||||
EntityPtr gameEntity = CreateActiveGameEntityFromEditorEntity(editorEntity.get());
|
||||
|
||||
// since there was no editor rigid body component, the runtime entity should have a static rigid body
|
||||
const auto* staticBody = gameEntity->FindComponent<PhysX::StaticRigidBodyComponent>()->GetStaticRigidBody();
|
||||
const auto* staticBody = azdynamic_cast<PhysX::StaticRigidBody*>(gameEntity->FindComponent<PhysX::StaticRigidBodyComponent>()->GetSimulatedBody());
|
||||
const auto* pxRigidStatic = static_cast<const physx::PxRigidStatic*>(staticBody->GetNativePointer());
|
||||
|
||||
PHYSX_SCENE_READ_LOCK(pxRigidStatic->getScene());
|
||||
@@ -442,7 +442,7 @@ namespace PhysXEditorTests
|
||||
|
||||
// make a game entity and check its bounding box is consistent with the changed transform
|
||||
EntityPtr gameEntity = CreateActiveGameEntityFromEditorEntity(editorEntity.get());
|
||||
const auto* staticBody = gameEntity->FindComponent<PhysX::StaticRigidBodyComponent>()->GetStaticRigidBody();
|
||||
const auto* staticBody = azdynamic_cast<PhysX::StaticRigidBody*>(gameEntity->FindComponent<PhysX::StaticRigidBodyComponent>()->GetSimulatedBody());
|
||||
AZ::Aabb aabb = staticBody->GetAabb();
|
||||
EXPECT_TRUE(aabb.GetMax().IsClose(translation + 0.5f * scale * boxDimensions));
|
||||
EXPECT_TRUE(aabb.GetMin().IsClose(translation - 0.5f * scale * boxDimensions));
|
||||
|
||||
@@ -102,7 +102,6 @@ set(FILES
|
||||
Source/PhysXCharacters/Components/CharacterGameplayComponent.h
|
||||
Source/PhysXCharacters/Components/RagdollComponent.cpp
|
||||
Source/PhysXCharacters/Components/RagdollComponent.h
|
||||
|
||||
Include/PhysX/Debug/PhysXDebugConfiguration.h
|
||||
Include/PhysX/Debug/PhysXDebugInterface.h
|
||||
Include/PhysX/Configuration/PhysXConfiguration.h
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
#include <AzCore/Serialization/SerializeContext.h>
|
||||
#include <AzCore/Math/IntersectSegment.h>
|
||||
|
||||
#include <AzFramework/Physics/WorldBodyBus.h>
|
||||
#include <AzFramework/Physics/Common/PhysicsSceneQueries.h>
|
||||
#include <AzFramework/Physics/Components/SimulatedBodyComponentBus.h>
|
||||
|
||||
#include <SurfaceData/SurfaceDataSystemRequestBus.h>
|
||||
#include <SurfaceData/Utility/SurfaceDataUtility.h>
|
||||
@@ -221,7 +221,7 @@ namespace SurfaceData
|
||||
}
|
||||
|
||||
AzPhysics::SceneQueryHit result;
|
||||
Physics::WorldBodyRequestBus::EventResult(result, GetEntityId(), &Physics::WorldBodyRequestBus::Events::RayCast, request);
|
||||
AzPhysics::SimulatedBodyComponentRequestsBus::EventResult(result, GetEntityId(), &AzPhysics::SimulatedBodyComponentRequestsBus::Events::RayCast, request);
|
||||
|
||||
if (result)
|
||||
{
|
||||
@@ -319,7 +319,7 @@ namespace SurfaceData
|
||||
colliderValidBeforeUpdate = m_colliderBounds.IsValid();
|
||||
|
||||
m_colliderBounds = AZ::Aabb::CreateNull();
|
||||
Physics::WorldBodyRequestBus::EventResult(m_colliderBounds, GetEntityId(), &Physics::WorldBodyRequestBus::Events::GetAabb);
|
||||
AzPhysics::SimulatedBodyComponentRequestsBus::EventResult(m_colliderBounds, GetEntityId(), &AzPhysics::SimulatedBodyComponentRequestsBus::Events::GetAabb);
|
||||
|
||||
colliderValidAfterUpdate = m_colliderBounds.IsValid();
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
#include <AzFramework/Physics/Common/PhysicsSceneQueries.h>
|
||||
#include <AzFramework/Physics/Shape.h>
|
||||
#include <AzFramework/Physics/WorldBodyBus.h>
|
||||
#include <AzFramework/Physics/Components/SimulatedBodyComponentBus.h>
|
||||
|
||||
namespace UnitTest
|
||||
{
|
||||
@@ -45,12 +45,12 @@ namespace UnitTest
|
||||
};
|
||||
|
||||
class MockPhysicsWorldBusProvider
|
||||
: public Physics::WorldBodyRequestBus::Handler
|
||||
: public AzPhysics::SimulatedBodyComponentRequestsBus::Handler
|
||||
{
|
||||
public:
|
||||
MockPhysicsWorldBusProvider(const AZ::EntityId& id, AZ::Vector3 inPosition, bool setHitResult, const SurfaceData::SurfacePoint& hitResult)
|
||||
{
|
||||
Physics::WorldBodyRequestBus::Handler::BusConnect(id);
|
||||
AzPhysics::SimulatedBodyComponentRequestsBus::Handler::BusConnect(id);
|
||||
|
||||
// Whether or not the test should return a successful hit, we still want to create a valid
|
||||
// AABB so that the SurfaceData component registers itself as a provider.
|
||||
@@ -73,14 +73,15 @@ namespace UnitTest
|
||||
|
||||
virtual ~MockPhysicsWorldBusProvider()
|
||||
{
|
||||
Physics::WorldBodyRequestBus::Handler::BusDisconnect();
|
||||
AzPhysics::SimulatedBodyComponentRequestsBus::Handler::BusDisconnect();
|
||||
}
|
||||
|
||||
// Minimal mocks needed to mock out this ebus
|
||||
void EnablePhysics() override {}
|
||||
void DisablePhysics() override {}
|
||||
bool IsPhysicsEnabled() const override { return true; }
|
||||
AzPhysics::SimulatedBody* GetWorldBody() override { return nullptr; }
|
||||
AzPhysics::SimulatedBody* GetSimulatedBody() override { return nullptr; }
|
||||
AzPhysics::SimulatedBodyHandle GetSimulatedBodyHandle() const override { return AzPhysics::InvalidSimulatedBodyHandle; }
|
||||
|
||||
// Functional mocks to mock out the data needed by the component
|
||||
AZ::Aabb GetAabb() const override { return m_aabb; }
|
||||
|
||||
Reference in New Issue
Block a user