@@ -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);
|
||||
|
||||
@@ -31,22 +31,22 @@ namespace PhysX
|
||||
ColliderComponentMode(const AZ::EntityComponentIdPair& entityComponentIdPair, AZ::Uuid componentType);
|
||||
~ColliderComponentMode();
|
||||
|
||||
// EditorBaseComponentMode ...
|
||||
// EditorBaseComponentMode overrides ...
|
||||
void Refresh() override;
|
||||
AZStd::vector<AzToolsFramework::ActionOverride> PopulateActionsImpl() override;
|
||||
AZStd::vector<AzToolsFramework::ViewportUi::ClusterId> PopulateViewportUiImpl() override;
|
||||
|
||||
// ColliderComponentModeBus ...
|
||||
// ColliderComponentModeBus overrides ...
|
||||
SubMode GetCurrentMode() override;
|
||||
void SetCurrentMode(SubMode index) override;
|
||||
|
||||
// ColliderComponentModeUiBus ...
|
||||
// ColliderComponentModeUiBus overrides ...
|
||||
AzToolsFramework::ViewportUi::ButtonId GetOffsetButtonId() const override;
|
||||
AzToolsFramework::ViewportUi::ButtonId GetRotationButtonId() const override;
|
||||
AzToolsFramework::ViewportUi::ClusterId GetClusterId() const override;
|
||||
AzToolsFramework::ViewportUi::ButtonId GetDimensionsButtonId() const override;
|
||||
|
||||
// ComponentMode ...
|
||||
// ComponentMode overrides ...
|
||||
AZStd::string GetComponentModeName() const override;
|
||||
private:
|
||||
|
||||
@@ -66,7 +66,8 @@ namespace PhysX
|
||||
AzToolsFramework::ViewportUi::ClusterId
|
||||
m_modeSelectionClusterId; //!< Viewport UI cluster for changing sub mode.
|
||||
|
||||
AZStd::vector<AzToolsFramework::ViewportUi::ButtonId> m_buttonIds; //!< Ids for the Viewport UI buttons for each mode.
|
||||
//! Ids for the Viewport UI buttons for each mode.
|
||||
AZStd::fixed_vector< AzToolsFramework::ViewportUi::ButtonId, static_cast<size_t>(SubMode::NumModes)> m_buttonIds;
|
||||
|
||||
AZ::Event<AzToolsFramework::ViewportUi::ButtonId>::Handler
|
||||
m_modeSelectionHandler; //!< Event handler for sub mode changes.
|
||||
|
||||
Reference in New Issue
Block a user