fix scaling issue with collider offset manipulators

Signed-off-by: greerdv <greerdv@amazon.com>
monroegm-disable-blank-issue-2
greerdv 4 years ago
parent d37315c2af
commit bb4c896311

@ -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)

@ -28,7 +28,8 @@ namespace PhysX
void ResetValues(const AZ::EntityComponentIdPair& idPair) override;
private:
void OnManipulatorMoved(const AZ::Vector3& position, const AZ::EntityComponentIdPair& idPair);
void OnManipulatorMoved(
const AZ::Vector3& startPosition, const AZ::Vector3& offset, const AZ::EntityComponentIdPair& idPair);
AzToolsFramework::TranslationManipulators m_translationManipulators;
};

Loading…
Cancel
Save