|
|
|
|
@ -45,19 +45,19 @@ namespace PhysX
|
|
|
|
|
m_translationManipulators.InstallLinearManipulatorMouseMoveCallback([this, idPair](
|
|
|
|
|
const AzToolsFramework::LinearManipulator::Action& action)
|
|
|
|
|
{
|
|
|
|
|
OnManipulatorMoved(action.LocalPosition(), idPair);
|
|
|
|
|
OnManipulatorMoved(action.m_start.m_localPosition, action.m_current.m_localPositionOffset, idPair);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
m_translationManipulators.InstallPlanarManipulatorMouseMoveCallback([this, idPair](
|
|
|
|
|
const AzToolsFramework::PlanarManipulator::Action& action)
|
|
|
|
|
{
|
|
|
|
|
OnManipulatorMoved(action.LocalPosition(), idPair);
|
|
|
|
|
OnManipulatorMoved(action.m_start.m_localPosition, action.m_current.m_localOffset, idPair);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
m_translationManipulators.InstallSurfaceManipulatorMouseMoveCallback([this, idPair](
|
|
|
|
|
const AzToolsFramework::SurfaceManipulator::Action& action)
|
|
|
|
|
{
|
|
|
|
|
OnManipulatorMoved(action.LocalPosition(), idPair);
|
|
|
|
|
OnManipulatorMoved(action.m_start.m_localPosition, action.m_current.m_localOffset, idPair);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -74,10 +74,14 @@ namespace PhysX
|
|
|
|
|
m_translationManipulators.Unregister();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ColliderOffsetMode::OnManipulatorMoved(const AZ::Vector3& position, const AZ::EntityComponentIdPair& idPair)
|
|
|
|
|
void ColliderOffsetMode::OnManipulatorMoved(const AZ::Vector3& startPosition, const AZ::Vector3& offset, const AZ::EntityComponentIdPair& idPair)
|
|
|
|
|
{
|
|
|
|
|
m_translationManipulators.SetLocalPosition(position);
|
|
|
|
|
PhysX::EditorColliderComponentRequestBus::Event(idPair, &PhysX::EditorColliderComponentRequests::SetColliderOffset, position);
|
|
|
|
|
AZ::Transform worldTransform = AZ::Transform::CreateIdentity();
|
|
|
|
|
AZ::TransformBus::EventResult(worldTransform, idPair.GetEntityId(), &AZ::TransformBus::Events::GetWorldTM);
|
|
|
|
|
const float scale = AZ::GetMax(AZ::MinTransformScale, worldTransform.GetUniformScale());
|
|
|
|
|
const AZ::Vector3 newPosition = startPosition + offset / scale;
|
|
|
|
|
m_translationManipulators.SetLocalPosition(newPosition);
|
|
|
|
|
PhysX::EditorColliderComponentRequestBus::Event(idPair, &PhysX::EditorColliderComponentRequests::SetColliderOffset, newPosition);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ColliderOffsetMode::ResetValues(const AZ::EntityComponentIdPair& idPair)
|
|
|
|
|
|