refactor and tidy up

Signed-off-by: greerdv <greerdv@amazon.com>
This commit is contained in:
greerdv
2022-02-04 18:56:59 +00:00
parent a4d5587183
commit 8ca4dbf2da
3 changed files with 21 additions and 19 deletions
+6 -19
View File
@@ -8,6 +8,7 @@
#include "ColliderSphereMode.h"
#include <PhysX/EditorColliderComponentRequestBus.h>
#include <Source/Utils.h>
#include <AzToolsFramework/Manipulators/LinearManipulator.h>
#include <AzToolsFramework/Manipulators/ManipulatorManager.h>
@@ -25,27 +26,15 @@ namespace PhysX
static const float MinSphereRadius = 0.01f;
static const AZ::Vector3 ManipulatorAxis = AZ::Vector3::CreateAxisX();
AZ::Transform GetColliderLocalTransform(const AZ::EntityComponentIdPair& idPair)
{
AZ::Quaternion colliderRotation = AZ::Quaternion::CreateIdentity();
PhysX::EditorColliderComponentRequestBus::EventResult(colliderRotation, idPair, &PhysX::EditorColliderComponentRequests::GetColliderRotation);
AZ::Vector3 colliderOffset = AZ::Vector3::CreateZero();
PhysX::EditorColliderComponentRequestBus::EventResult(colliderOffset, idPair, &PhysX::EditorColliderComponentRequests::GetColliderOffset);
return AZ::Transform::CreateFromQuaternionAndTranslation(colliderRotation, colliderOffset);
}
void ColliderSphereMode::Setup(const AZ::EntityComponentIdPair& idPair)
{
AZ::Transform colliderWorldTransform = AZ::Transform::Identity();
AZ::TransformBus::EventResult(colliderWorldTransform, idPair.GetEntityId(), &AZ::TransformBus::Events::GetWorldTM);
//PhysX::EditorColliderComponentRequestBus::EventResult(colliderWorldTransform, idPair, &PhysX::EditorColliderComponentRequests::GetColliderWorldTransform);
AZ::Vector3 nonUniformScale = AZ::Vector3::CreateOne();
AZ::NonUniformScaleRequestBus::EventResult(nonUniformScale, idPair.GetEntityId(), &AZ::NonUniformScaleRequests::GetScale);
const AZ::Transform colliderLocalTransform = GetColliderLocalTransform(idPair);
const AZ::Transform colliderLocalTransform = Utils::GetColliderLocalTransform(idPair);
float sphereRadius = 0.0f;
PhysX::EditorColliderComponentRequestBus::EventResult(sphereRadius, idPair, &PhysX::EditorColliderComponentRequests::GetSphereRadius);
@@ -54,7 +43,6 @@ namespace PhysX
m_radiusManipulator->AddEntityComponentIdPair(idPair);
m_radiusManipulator->SetAxis(ManipulatorAxis);
m_radiusManipulator->Register(AzToolsFramework::g_mainManipulatorManagerId);
//m_radiusManipulator->SetLocalPosition(ManipulatorAxis * sphereRadius);
m_radiusManipulator->SetLocalTransform(colliderLocalTransform * AZ::Transform::CreateTranslation(ManipulatorAxis * sphereRadius));
m_radiusManipulator->SetNonUniformScale(nonUniformScale);
m_radiusManipulator->SetBoundsDirty();
@@ -75,13 +63,12 @@ namespace PhysX
{
AZ::Transform colliderWorldTransform = AZ::Transform::Identity();
AZ::TransformBus::EventResult(colliderWorldTransform, idPair.GetEntityId(), &AZ::TransformBus::Events::GetWorldTM);
//PhysX::EditorColliderComponentRequestBus::EventResult(colliderWorldTransform, idPair, &PhysX::EditorColliderComponentRequests::GetColliderWorldTransform);
m_radiusManipulator->SetSpace(colliderWorldTransform);
AZ::Vector3 nonUniformScale = AZ::Vector3::CreateOne();
AZ::NonUniformScaleRequestBus::EventResult(nonUniformScale, idPair.GetEntityId(), &AZ::NonUniformScaleRequests::GetScale);
const AZ::Transform colliderLocalTransform = GetColliderLocalTransform(idPair);
const AZ::Transform colliderLocalTransform = Utils::GetColliderLocalTransform(idPair);
float sphereRadius = 0.0f;
PhysX::EditorColliderComponentRequestBus::EventResult(sphereRadius, idPair, &PhysX::EditorColliderComponentRequests::GetSphereRadius);
@@ -114,9 +101,9 @@ namespace PhysX
const AZ::EntityComponentIdPair idPair = *m_radiusManipulator->EntityComponentIdPairs().begin();
float radius = 0.0f;
PhysX::EditorColliderComponentRequestBus::EventResult(radius, idPair, &PhysX::EditorColliderComponentRequests::GetSphereRadius);
const AZ::Transform colliderLocalTransform = GetColliderLocalTransform(idPair);
const AZ::Transform colliderLocalTransform = Utils::GetColliderLocalTransform(idPair);
m_radiusManipulator->SetAxis(cameraState.m_side);
m_radiusManipulator->SetLocalTransform(GetColliderLocalTransform(idPair) * AZ::Transform::CreateTranslation(cameraState.m_side * radius));
m_radiusManipulator->SetLocalTransform(colliderLocalTransform * AZ::Transform::CreateTranslation(cameraState.m_side * radius));
}
}
@@ -136,7 +123,7 @@ namespace PhysX
// Update the manipulator and sphere radius
m_radiusManipulator->SetLocalTransform(
GetColliderLocalTransform(idPair) * AZ::Transform::CreateTranslation(extent * action.m_fixed.m_axis));
Utils::GetColliderLocalTransform(idPair) * AZ::Transform::CreateTranslation(extent * action.m_fixed.m_axis));
PhysX::EditorColliderComponentRequestBus::Event(idPair, &PhysX::EditorColliderComponentRequests::SetSphereRadius, extent);
}
}
+12
View File
@@ -29,6 +29,7 @@
#include <AzFramework/Physics/HeightfieldProviderBus.h>
#include <PhysX/ColliderShapeBus.h>
#include <PhysX/EditorColliderComponentRequestBus.h>
#include <PhysX/SystemComponentBus.h>
#include <PhysX/MeshAsset.h>
#include <PhysX/Utils.h>
@@ -832,6 +833,17 @@ namespace PhysX
return AZ::Transform::CreateFromQuaternionAndTranslation(colliderRelativeRotation, colliderRelativePosition);
}
AZ::Transform GetColliderLocalTransform(const AZ::EntityComponentIdPair& idPair)
{
AZ::Quaternion colliderRotation = AZ::Quaternion::CreateIdentity();
PhysX::EditorColliderComponentRequestBus::EventResult(colliderRotation, idPair, &PhysX::EditorColliderComponentRequests::GetColliderRotation);
AZ::Vector3 colliderOffset = AZ::Vector3::CreateZero();
PhysX::EditorColliderComponentRequestBus::EventResult(colliderOffset, idPair, &PhysX::EditorColliderComponentRequests::GetColliderOffset);
return AZ::Transform::CreateFromQuaternionAndTranslation(colliderRotation, colliderOffset);
}
AZ::Transform GetColliderWorldTransform(const AZ::Transform& worldTransform,
const AZ::Vector3& colliderRelativePosition,
const AZ::Quaternion& colliderRelativeRotation)
+3
View File
@@ -142,6 +142,9 @@ namespace PhysX
AZ::Transform GetColliderLocalTransform(const AZ::Vector3& colliderRelativePosition
, const AZ::Quaternion& colliderRelativeRotation);
//! Gets the local transform for a collider (the position and rotation relative to its entity).
AZ::Transform GetColliderLocalTransform(const AZ::EntityComponentIdPair& idPair);
//! Combines collider position and orientation offsets and world transform to a transform.
AZ::Transform GetColliderWorldTransform(const AZ::Transform& worldTransform
, const AZ::Vector3& colliderRelativePosition