fix various issues with collider manipulators and non-uniform scale
Signed-off-by: greerdv <greerdv@amazon.com>
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
#include <PhysX/EditorColliderComponentRequestBus.h>
|
||||
#include <AzToolsFramework/Manipulators/ManipulatorManager.h>
|
||||
#include <AzCore/Component/TransformBus.h>
|
||||
#include <AzCore/Component/NonUniformScaleBus.h>
|
||||
#include <AzFramework/Viewport/ViewportColors.h>
|
||||
#include <AzToolsFramework/Manipulators/AngularManipulator.h>
|
||||
#include <AzToolsFramework/ViewportSelection/EditorSelectionUtil.h>
|
||||
@@ -29,6 +30,9 @@ namespace PhysX
|
||||
AZ::Transform worldTransform;
|
||||
AZ::TransformBus::EventResult(worldTransform, idPair.GetEntityId(), &AZ::TransformInterface::GetWorldTM);
|
||||
|
||||
AZ::Vector3 nonUniformScale = AZ::Vector3::CreateOne();
|
||||
AZ::NonUniformScaleRequestBus::EventResult(nonUniformScale, idPair.GetEntityId(), &AZ::NonUniformScaleRequests::GetScale);
|
||||
|
||||
AZ::Quaternion colliderRotation;
|
||||
PhysX::EditorColliderComponentRequestBus::EventResult(colliderRotation, idPair, &PhysX::EditorColliderComponentRequests::GetColliderRotation);
|
||||
|
||||
@@ -36,7 +40,8 @@ namespace PhysX
|
||||
PhysX::EditorColliderComponentRequestBus::EventResult(colliderOffset, idPair, &PhysX::EditorColliderComponentRequests::GetColliderOffset);
|
||||
|
||||
m_rotationManipulators.SetSpace(worldTransform);
|
||||
m_rotationManipulators.SetLocalPosition(colliderOffset);
|
||||
m_rotationManipulators.SetNonUniformScale(nonUniformScale);
|
||||
m_rotationManipulators.SetLocalPosition(nonUniformScale * colliderOffset);
|
||||
m_rotationManipulators.SetLocalOrientation(colliderRotation);
|
||||
m_rotationManipulators.AddEntityComponentIdPair(idPair);
|
||||
m_rotationManipulators.Register(AzToolsFramework::g_mainManipulatorManagerId);
|
||||
@@ -70,7 +75,11 @@ namespace PhysX
|
||||
|
||||
AZ::Vector3 colliderOffset = AZ::Vector3::CreateZero();
|
||||
PhysX::EditorColliderComponentRequestBus::EventResult(colliderOffset, idPair, &PhysX::EditorColliderComponentRequests::GetColliderOffset);
|
||||
m_rotationManipulators.SetLocalPosition(colliderOffset);
|
||||
|
||||
AZ::Vector3 nonUniformScale = AZ::Vector3::CreateOne();
|
||||
AZ::NonUniformScaleRequestBus::EventResult(nonUniformScale, idPair.GetEntityId(), &AZ::NonUniformScaleRequests::GetScale);
|
||||
|
||||
m_rotationManipulators.SetLocalPosition(nonUniformScale * colliderOffset);
|
||||
}
|
||||
|
||||
void ColliderRotationMode::Teardown(const AZ::EntityComponentIdPair& idPair)
|
||||
|
||||
Reference in New Issue
Block a user