diff --git a/Gems/PhysX/Code/Editor/ColliderComponentMode.cpp b/Gems/PhysX/Code/Editor/ColliderComponentMode.cpp index eba245eca5..76e687f26a 100644 --- a/Gems/PhysX/Code/Editor/ColliderComponentMode.cpp +++ b/Gems/PhysX/Code/Editor/ColliderComponentMode.cpp @@ -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(m_subMode); AZ::u32 numSubModes = static_cast(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(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(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(SubMode::NumModes)); m_buttonIds[static_cast(SubMode::Offset)] = RegisterClusterButton(m_modeSelectionClusterId, "Move"); m_buttonIds[static_cast(SubMode::Rotation)] = RegisterClusterButton(m_modeSelectionClusterId, "Rotate"); m_buttonIds[static_cast(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::Handler(onButtonClicked); diff --git a/Gems/PhysX/Code/Editor/ColliderComponentMode.h b/Gems/PhysX/Code/Editor/ColliderComponentMode.h index bc8e7d9a0b..4c968bb87d 100644 --- a/Gems/PhysX/Code/Editor/ColliderComponentMode.h +++ b/Gems/PhysX/Code/Editor/ColliderComponentMode.h @@ -31,22 +31,22 @@ namespace PhysX ColliderComponentMode(const AZ::EntityComponentIdPair& entityComponentIdPair, AZ::Uuid componentType); ~ColliderComponentMode(); - // EditorBaseComponentMode ... + // EditorBaseComponentMode overrides ... void Refresh() override; AZStd::vector PopulateActionsImpl() override; AZStd::vector 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 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(SubMode::NumModes)> m_buttonIds; AZ::Event::Handler m_modeSelectionHandler; //!< Event handler for sub mode changes.