|
|
|
|
@ -142,7 +142,7 @@ namespace PhysX
|
|
|
|
|
if (mouseInteraction.m_mouseEvent == AzToolsFramework::ViewportInteraction::MouseEvent::Wheel &&
|
|
|
|
|
mouseInteraction.m_mouseInteraction.m_keyboardModifiers.Ctrl())
|
|
|
|
|
{
|
|
|
|
|
int direction = MouseWheelDelta(mouseInteraction) > 0.0f ? -1 : 1;
|
|
|
|
|
const int direction = MouseWheelDelta(mouseInteraction) > 0.0f ? -1 : 1;
|
|
|
|
|
AZ::u32 currentModeIndex = static_cast<AZ::u32>(m_subMode);
|
|
|
|
|
AZ::u32 numSubModes = static_cast<AZ::u32>(SubMode::NumModes);
|
|
|
|
|
AZ::u32 nextModeIndex = (currentModeIndex + numSubModes + direction) % m_subModes.size();
|
|
|
|
|
@ -160,29 +160,18 @@ namespace PhysX
|
|
|
|
|
|
|
|
|
|
void ColliderComponentMode::SetCurrentMode(SubMode newMode)
|
|
|
|
|
{
|
|
|
|
|
if (auto subMode = m_subModes.find(newMode); subMode != m_subModes.end())
|
|
|
|
|
{
|
|
|
|
|
m_subModes[m_subMode]->Teardown(GetEntityComponentIdPair());
|
|
|
|
|
m_subMode = newMode;
|
|
|
|
|
m_subModes[m_subMode]->Setup(GetEntityComponentIdPair());
|
|
|
|
|
auto subMode = m_subModes.find(newMode);
|
|
|
|
|
AZ_Assert(subMode != m_subModes.end(), "Submode not found:%d", newMode);
|
|
|
|
|
m_subModes[m_subMode]->Teardown(GetEntityComponentIdPair());
|
|
|
|
|
m_subMode = newMode;
|
|
|
|
|
m_subModes[m_subMode]->Setup(GetEntityComponentIdPair());
|
|
|
|
|
|
|
|
|
|
const auto modeIndex = static_cast<size_t>(newMode);
|
|
|
|
|
if (modeIndex < m_buttonIds.size())
|
|
|
|
|
{
|
|
|
|
|
AzToolsFramework::ViewportUi::ViewportUiRequestBus::Event(
|
|
|
|
|
AzToolsFramework::ViewportUi::DefaultViewportId,
|
|
|
|
|
&AzToolsFramework::ViewportUi::ViewportUiRequestBus::Events::SetClusterActiveButton, m_modeSelectionClusterId,
|
|
|
|
|
m_buttonIds[modeIndex]);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
AZ_Error("PhysX Collider Component Mode", false, "Invalid mode index %i.", modeIndex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
AZ_Assert(false, "Submode not found:%d", newMode);
|
|
|
|
|
}
|
|
|
|
|
const auto modeIndex = static_cast<size_t>(newMode);
|
|
|
|
|
AZ_Assert(modeIndex < m_buttonIds.size(), "Invalid mode index %i.", modeIndex);
|
|
|
|
|
AzToolsFramework::ViewportUi::ViewportUiRequestBus::Event(
|
|
|
|
|
AzToolsFramework::ViewportUi::DefaultViewportId,
|
|
|
|
|
&AzToolsFramework::ViewportUi::ViewportUiRequestBus::Events::SetClusterActiveButton, m_modeSelectionClusterId,
|
|
|
|
|
m_buttonIds[modeIndex]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
AzToolsFramework::ViewportUi::ClusterId ColliderComponentMode::GetClusterId() const
|
|
|
|
|
@ -261,7 +250,6 @@ namespace PhysX
|
|
|
|
|
&AzToolsFramework::ViewportUi::ViewportUiRequestBus::Events::CreateCluster, AzToolsFramework::ViewportUi::Alignment::TopLeft);
|
|
|
|
|
|
|
|
|
|
// create and register the buttons
|
|
|
|
|
m_buttonIds.resize(static_cast<size_t>(SubMode::NumModes));
|
|
|
|
|
m_buttonIds[static_cast<size_t>(SubMode::Offset)] = RegisterClusterButton(m_modeSelectionClusterId, "Move");
|
|
|
|
|
m_buttonIds[static_cast<size_t>(SubMode::Rotation)] = RegisterClusterButton(m_modeSelectionClusterId, "Rotate");
|
|
|
|
|
m_buttonIds[static_cast<size_t>(SubMode::Dimensions)] = RegisterClusterButton(m_modeSelectionClusterId, "Scale");
|
|
|
|
|
@ -282,6 +270,10 @@ namespace PhysX
|
|
|
|
|
{
|
|
|
|
|
SetCurrentMode(SubMode::Dimensions);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
AZ_Error("PhysX Collider Component Mode", false, "Unrecognized button ID.");
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
m_modeSelectionHandler = AZ::Event<AzToolsFramework::ViewportUi::ButtonId>::Handler(onButtonClicked);
|
|
|
|
|
|