From 1aae3d561989d04d0c6e22d755edea2405a1b1b2 Mon Sep 17 00:00:00 2001 From: greerdv Date: Wed, 17 Nov 2021 19:10:48 +0000 Subject: [PATCH 1/8] reorder cluster UI for collider component mode to match order in entity UI Signed-off-by: greerdv --- Gems/PhysX/Code/Editor/ColliderComponentMode.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gems/PhysX/Code/Editor/ColliderComponentMode.cpp b/Gems/PhysX/Code/Editor/ColliderComponentMode.cpp index 5de625f679..d6bafb8143 100644 --- a/Gems/PhysX/Code/Editor/ColliderComponentMode.cpp +++ b/Gems/PhysX/Code/Editor/ColliderComponentMode.cpp @@ -237,9 +237,9 @@ namespace PhysX &AzToolsFramework::ViewportUi::ViewportUiRequestBus::Events::CreateCluster, AzToolsFramework::ViewportUi::Alignment::TopLeft); // create and register the buttons - m_dimensionsModeButtonId = RegisterClusterButton(m_modeSelectionClusterId, "Scale"); m_offsetModeButtonId = RegisterClusterButton(m_modeSelectionClusterId, "Move"); m_rotationModeButtonId = RegisterClusterButton(m_modeSelectionClusterId, "Rotate"); + m_dimensionsModeButtonId = RegisterClusterButton(m_modeSelectionClusterId, "Scale"); const auto onButtonClicked = [this](AzToolsFramework::ViewportUi::ButtonId buttonId) { if (buttonId == m_dimensionsModeButtonId) From d05d304fe8a88a5b13ee36c1f8d79aa63c5f95f1 Mon Sep 17 00:00:00 2001 From: greerdv Date: Thu, 18 Nov 2021 13:49:18 +0000 Subject: [PATCH 2/8] highlight the button corresponding to the currently selected collider component mode Signed-off-by: greerdv --- .../Code/Editor/ColliderComponentMode.cpp | 73 +++++++++++++------ .../PhysX/Code/Editor/ColliderComponentMode.h | 11 ++- .../Code/Editor/ColliderComponentModeBus.h | 2 +- 3 files changed, 57 insertions(+), 29 deletions(-) diff --git a/Gems/PhysX/Code/Editor/ColliderComponentMode.cpp b/Gems/PhysX/Code/Editor/ColliderComponentMode.cpp index d6bafb8143..fbb8838bb8 100644 --- a/Gems/PhysX/Code/Editor/ColliderComponentMode.cpp +++ b/Gems/PhysX/Code/Editor/ColliderComponentMode.cpp @@ -39,19 +39,17 @@ namespace PhysX : AzToolsFramework::ComponentModeFramework::EditorBaseComponentMode(entityComponentIdPair, componentType) { CreateSubModes(); + CreateSubModeSelectionCluster(); ColliderComponentModeRequestBus::Handler::BusConnect(entityComponentIdPair); ColliderComponentModeUiRequestBus::Handler::BusConnect(entityComponentIdPair); - - CreateSubModeSelectionCluster(); } ColliderComponentMode::~ColliderComponentMode() { - RemoveSubModeSelectionCluster(); - ColliderComponentModeUiRequestBus::Handler::BusDisconnect(); ColliderComponentModeRequestBus::Handler::BusDisconnect(); + RemoveSubModeSelectionCluster(); m_subModes[m_subMode]->Teardown(GetEntityComponentIdPair()); } @@ -141,7 +139,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; + 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(); @@ -159,10 +157,30 @@ namespace PhysX void ColliderComponentMode::SetCurrentMode(SubMode newMode) { - AZ_Assert(m_subModes.count(newMode) > 0, "Submode not found:%d", newMode); - m_subModes[m_subMode]->Teardown(GetEntityComponentIdPair()); - m_subMode = newMode; - m_subModes[m_subMode]->Setup(GetEntityComponentIdPair()); + 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()); + + 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); + } } AzToolsFramework::ViewportUi::ClusterId ColliderComponentMode::GetClusterId() const @@ -172,17 +190,22 @@ namespace PhysX AzToolsFramework::ViewportUi::ButtonId ColliderComponentMode::GetOffsetButtonId() const { - return m_offsetModeButtonId; + return m_buttonIds[static_cast(SubMode::Offset)]; } AzToolsFramework::ViewportUi::ButtonId ColliderComponentMode::GetRotationButtonId() const { - return m_rotationModeButtonId; + return m_buttonIds[static_cast(SubMode::Rotation)]; } AzToolsFramework::ViewportUi::ButtonId ColliderComponentMode::GetDimensionsButtonId() const { - return m_dimensionsModeButtonId; + return m_buttonIds[static_cast(SubMode::Dimensions)]; + } + + AZStd::string ColliderComponentMode::GetComponentModeName() const + { + return "Collider Edit Mode"; } void RefreshUI() @@ -237,25 +260,31 @@ namespace PhysX &AzToolsFramework::ViewportUi::ViewportUiRequestBus::Events::CreateCluster, AzToolsFramework::ViewportUi::Alignment::TopLeft); // create and register the buttons - m_offsetModeButtonId = RegisterClusterButton(m_modeSelectionClusterId, "Move"); - m_rotationModeButtonId = RegisterClusterButton(m_modeSelectionClusterId, "Rotate"); - m_dimensionsModeButtonId = RegisterClusterButton(m_modeSelectionClusterId, "Scale"); + 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"); + + AzToolsFramework::ViewportUi::ViewportUiRequestBus::Event( + AzToolsFramework::ViewportUi::DefaultViewportId, + &AzToolsFramework::ViewportUi::ViewportUiRequestBus::Events::SetClusterActiveButton, m_modeSelectionClusterId, + m_buttonIds[static_cast(SubMode::Dimensions)]); const auto onButtonClicked = [this](AzToolsFramework::ViewportUi::ButtonId buttonId) { - if (buttonId == m_dimensionsModeButtonId) - { - SetCurrentMode(SubMode::Dimensions); - } - else if (buttonId == m_offsetModeButtonId) + if (buttonId == m_buttonIds[static_cast(SubMode::Offset)]) { SetCurrentMode(SubMode::Offset); } - else if (buttonId == m_rotationModeButtonId) + else if (buttonId == m_buttonIds[static_cast(SubMode::Rotation)]) { SetCurrentMode(SubMode::Rotation); } + else if (buttonId == m_buttonIds[static_cast(SubMode::Dimensions)]) + { + SetCurrentMode(SubMode::Dimensions); + } }; - + m_modeSelectionHandler = AZ::Event::Handler(onButtonClicked); AzToolsFramework::ViewportUi::ViewportUiRequestBus::Event( AzToolsFramework::ViewportUi::DefaultViewportId, diff --git a/Gems/PhysX/Code/Editor/ColliderComponentMode.h b/Gems/PhysX/Code/Editor/ColliderComponentMode.h index b4ca060065..bc8e7d9a0b 100644 --- a/Gems/PhysX/Code/Editor/ColliderComponentMode.h +++ b/Gems/PhysX/Code/Editor/ColliderComponentMode.h @@ -46,6 +46,8 @@ namespace PhysX AzToolsFramework::ViewportUi::ClusterId GetClusterId() const override; AzToolsFramework::ViewportUi::ButtonId GetDimensionsButtonId() const override; + // ComponentMode ... + AZStd::string GetComponentModeName() const override; private: // AzToolsFramework::ViewportInteraction::ViewportSelectionRequests ... @@ -63,12 +65,9 @@ namespace PhysX AzToolsFramework::ViewportUi::ClusterId m_modeSelectionClusterId; //!< Viewport UI cluster for changing sub mode. - AzToolsFramework::ViewportUi::ButtonId - m_dimensionsModeButtonId; //!< Id of the Viewport UI button for resize/dimensions mode. - AzToolsFramework::ViewportUi::ButtonId - m_offsetModeButtonId; //!< Id of the Viewport UI button for offset mode. - AzToolsFramework::ViewportUi::ButtonId - m_rotationModeButtonId; //!< Id of the Viewport UI button for rotation mode. + + AZStd::vector m_buttonIds; //!< Ids for the Viewport UI buttons for each mode. + AZ::Event::Handler m_modeSelectionHandler; //!< Event handler for sub mode changes. }; diff --git a/Gems/PhysX/Code/Editor/ColliderComponentModeBus.h b/Gems/PhysX/Code/Editor/ColliderComponentModeBus.h index 289215067a..05072f699a 100644 --- a/Gems/PhysX/Code/Editor/ColliderComponentModeBus.h +++ b/Gems/PhysX/Code/Editor/ColliderComponentModeBus.h @@ -19,9 +19,9 @@ namespace PhysX public: enum class SubMode : AZ::u32 { - Dimensions, Offset, Rotation, + Dimensions, NumModes }; From 3199cb9777b07cef158be9a0b337042307eefc34 Mon Sep 17 00:00:00 2001 From: greerdv Date: Fri, 19 Nov 2021 15:00:58 +0000 Subject: [PATCH 3/8] set initial collider component sub mode to translation Signed-off-by: greerdv --- Gems/PhysX/Code/Editor/ColliderComponentMode.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/Gems/PhysX/Code/Editor/ColliderComponentMode.cpp b/Gems/PhysX/Code/Editor/ColliderComponentMode.cpp index fbb8838bb8..c6ad0cd867 100644 --- a/Gems/PhysX/Code/Editor/ColliderComponentMode.cpp +++ b/Gems/PhysX/Code/Editor/ColliderComponentMode.cpp @@ -265,10 +265,7 @@ namespace PhysX m_buttonIds[static_cast(SubMode::Rotation)] = RegisterClusterButton(m_modeSelectionClusterId, "Rotate"); m_buttonIds[static_cast(SubMode::Dimensions)] = RegisterClusterButton(m_modeSelectionClusterId, "Scale"); - AzToolsFramework::ViewportUi::ViewportUiRequestBus::Event( - AzToolsFramework::ViewportUi::DefaultViewportId, - &AzToolsFramework::ViewportUi::ViewportUiRequestBus::Events::SetClusterActiveButton, m_modeSelectionClusterId, - m_buttonIds[static_cast(SubMode::Dimensions)]); + SetCurrentMode(SubMode::Offset); const auto onButtonClicked = [this](AzToolsFramework::ViewportUi::ButtonId buttonId) { if (buttonId == m_buttonIds[static_cast(SubMode::Offset)]) @@ -281,7 +278,7 @@ namespace PhysX } else if (buttonId == m_buttonIds[static_cast(SubMode::Dimensions)]) { - SetCurrentMode(SubMode::Dimensions); + SetCurrentMode(SubMode::Dimensions); } }; From e2f7893f842da7cc7dfb6ab64cf8cf93fd36f0e0 Mon Sep 17 00:00:00 2001 From: greerdv Date: Fri, 19 Nov 2021 15:23:09 +0000 Subject: [PATCH 4/8] fix collider component mode tests and mapping of number keys to component modes Signed-off-by: greerdv --- .../Code/Editor/ColliderComponentMode.cpp | 27 +++++++-------- .../Tests/PhysXColliderComponentModeTests.cpp | 34 +++++++++---------- 2 files changed, 30 insertions(+), 31 deletions(-) diff --git a/Gems/PhysX/Code/Editor/ColliderComponentMode.cpp b/Gems/PhysX/Code/Editor/ColliderComponentMode.cpp index c6ad0cd867..60e63c97d8 100644 --- a/Gems/PhysX/Code/Editor/ColliderComponentMode.cpp +++ b/Gems/PhysX/Code/Editor/ColliderComponentMode.cpp @@ -60,21 +60,9 @@ namespace PhysX AZStd::vector ColliderComponentMode::PopulateActionsImpl() { - - AzToolsFramework::ActionOverride setDimensionsModeAction; - setDimensionsModeAction.SetUri(SetDimensionsSubModeActionUri); - setDimensionsModeAction.SetKeySequence(QKeySequence(Qt::Key_1)); - setDimensionsModeAction.SetTitle("Set Resize Mode"); - setDimensionsModeAction.SetTip("Set resize mode"); - setDimensionsModeAction.SetEntityComponentIdPair(GetEntityComponentIdPair()); - setDimensionsModeAction.SetCallback([this]() - { - SetCurrentMode(SubMode::Dimensions); - }); - AzToolsFramework::ActionOverride setOffsetModeAction; setOffsetModeAction.SetUri(SetOffsetSubModeActionUri); - setOffsetModeAction.SetKeySequence(QKeySequence(Qt::Key_2)); + setOffsetModeAction.SetKeySequence(QKeySequence(Qt::Key_1)); setOffsetModeAction.SetTitle("Set Offset Mode"); setOffsetModeAction.SetTip("Set offset mode"); setOffsetModeAction.SetEntityComponentIdPair(GetEntityComponentIdPair()); @@ -85,7 +73,7 @@ namespace PhysX AzToolsFramework::ActionOverride setRotationModeAction; setRotationModeAction.SetUri(SetRotationSubModeActionUri); - setRotationModeAction.SetKeySequence(QKeySequence(Qt::Key_3)); + setRotationModeAction.SetKeySequence(QKeySequence(Qt::Key_2)); setRotationModeAction.SetTitle("Set Rotation Mode"); setRotationModeAction.SetTip("Set rotation mode"); setRotationModeAction.SetEntityComponentIdPair(GetEntityComponentIdPair()); @@ -94,6 +82,17 @@ namespace PhysX SetCurrentMode(SubMode::Rotation); }); + AzToolsFramework::ActionOverride setDimensionsModeAction; + setDimensionsModeAction.SetUri(SetDimensionsSubModeActionUri); + setDimensionsModeAction.SetKeySequence(QKeySequence(Qt::Key_3)); + setDimensionsModeAction.SetTitle("Set Resize Mode"); + setDimensionsModeAction.SetTip("Set resize mode"); + setDimensionsModeAction.SetEntityComponentIdPair(GetEntityComponentIdPair()); + setDimensionsModeAction.SetCallback([this]() + { + SetCurrentMode(SubMode::Dimensions); + }); + AzToolsFramework::ActionOverride resetModeAction; resetModeAction.SetUri(ResetSubModeActionUri); resetModeAction.SetKeySequence(QKeySequence(Qt::Key_R)); diff --git a/Gems/PhysX/Code/Tests/PhysXColliderComponentModeTests.cpp b/Gems/PhysX/Code/Tests/PhysXColliderComponentModeTests.cpp index 1f393386f8..2b5db1be67 100644 --- a/Gems/PhysX/Code/Tests/PhysXColliderComponentModeTests.cpp +++ b/Gems/PhysX/Code/Tests/PhysXColliderComponentModeTests.cpp @@ -66,7 +66,7 @@ namespace UnitTest PhysX::ColliderComponentModeRequests::SubMode subMode = PhysX::ColliderComponentModeRequests::SubMode::NumModes; PhysX::ColliderComponentModeRequestBus::BroadcastResult(subMode, &PhysX::ColliderComponentModeRequests::GetCurrentMode); - EXPECT_EQ(PhysX::ColliderComponentModeRequests::SubMode::Dimensions, subMode); + EXPECT_EQ(PhysX::ColliderComponentModeRequests::SubMode::Offset, subMode); // When the mouse wheel is scrolled while holding ctrl AzToolsFramework::ViewportInteraction::MouseInteractionEvent @@ -84,7 +84,7 @@ namespace UnitTest // Then the component mode is cycled. PhysX::ColliderComponentModeRequestBus::BroadcastResult(subMode, &PhysX::ColliderComponentModeRequests::GetCurrentMode); EXPECT_EQ(handled, MouseInteractionResult::Viewport); - EXPECT_EQ(PhysX::ColliderComponentModeRequests::SubMode::Offset, subMode); + EXPECT_EQ(PhysX::ColliderComponentModeRequests::SubMode::Dimensions, subMode); } TEST_F(PhysXColliderComponentModeTest, MouseWheelDownShouldSetPreviousMode) @@ -95,7 +95,7 @@ namespace UnitTest PhysX::ColliderComponentModeRequests::SubMode subMode = PhysX::ColliderComponentModeRequests::SubMode::NumModes; PhysX::ColliderComponentModeRequestBus::BroadcastResult(subMode, &PhysX::ColliderComponentModeRequests::GetCurrentMode); - EXPECT_EQ(PhysX::ColliderComponentModeRequests::SubMode::Dimensions, subMode); + EXPECT_EQ(PhysX::ColliderComponentModeRequests::SubMode::Offset, subMode); // When the mouse wheel is scrolled while holding ctrl AzToolsFramework::ViewportInteraction::MouseInteractionEvent @@ -116,7 +116,7 @@ namespace UnitTest EXPECT_EQ(PhysX::ColliderComponentModeRequests::SubMode::Rotation, subMode); } - TEST_F(PhysXColliderComponentModeTest, PressingKey1ShouldSetSizeMode) + TEST_F(PhysXColliderComponentModeTest, PressingKey1ShouldSetOffsetMode) { // Given there is a collider component in component mode. CreateColliderComponent(); @@ -124,17 +124,17 @@ namespace UnitTest PhysX::ColliderComponentModeRequests::SubMode subMode = PhysX::ColliderComponentModeRequests::SubMode::NumModes; PhysX::ColliderComponentModeRequestBus::BroadcastResult(subMode, &PhysX::ColliderComponentModeRequests::GetCurrentMode); - EXPECT_EQ(PhysX::ColliderComponentModeRequests::SubMode::Dimensions, subMode); + EXPECT_EQ(PhysX::ColliderComponentModeRequests::SubMode::Offset, subMode); // When the '1' key is pressed QTest::keyPress(&m_editorActions.m_componentModeWidget, Qt::Key_1); - // Then the component mode is set to Size. + // Then the component mode is set to Offset. PhysX::ColliderComponentModeRequestBus::BroadcastResult(subMode, &PhysX::ColliderComponentModeRequests::GetCurrentMode); - EXPECT_EQ(PhysX::ColliderComponentModeRequests::SubMode::Dimensions, subMode); + EXPECT_EQ(PhysX::ColliderComponentModeRequests::SubMode::Offset, subMode); } - TEST_F(PhysXColliderComponentModeTest, PressingKey2ShouldSetSizeMode) + TEST_F(PhysXColliderComponentModeTest, PressingKey2ShouldSetRotationMode) { // Given there is a collider component in component mode. auto colliderEntity = CreateColliderComponent(); @@ -143,14 +143,14 @@ namespace UnitTest PhysX::ColliderComponentModeRequests::SubMode subMode = PhysX::ColliderComponentModeRequests::SubMode::NumModes; PhysX::ColliderComponentModeRequestBus::BroadcastResult(subMode, &PhysX::ColliderComponentModeRequests::GetCurrentMode); - EXPECT_EQ(PhysX::ColliderComponentModeRequests::SubMode::Dimensions, subMode); + EXPECT_EQ(PhysX::ColliderComponentModeRequests::SubMode::Offset, subMode); // When the '2' key is pressed QTest::keyPress(&m_editorActions.m_componentModeWidget, Qt::Key_2); - // Then the component mode is set to Offset. + // Then the component mode is set to Rotation. PhysX::ColliderComponentModeRequestBus::BroadcastResult(subMode, &PhysX::ColliderComponentModeRequests::GetCurrentMode); - EXPECT_EQ(PhysX::ColliderComponentModeRequests::SubMode::Offset, subMode); + EXPECT_EQ(PhysX::ColliderComponentModeRequests::SubMode::Rotation, subMode); } TEST_F(PhysXColliderComponentModeTest, PressingKey3ShouldSetSizeMode) @@ -162,14 +162,14 @@ namespace UnitTest PhysX::ColliderComponentModeRequests::SubMode subMode = PhysX::ColliderComponentModeRequests::SubMode::NumModes; PhysX::ColliderComponentModeRequestBus::BroadcastResult(subMode, &PhysX::ColliderComponentModeRequests::GetCurrentMode); - EXPECT_EQ(PhysX::ColliderComponentModeRequests::SubMode::Dimensions, subMode); + EXPECT_EQ(PhysX::ColliderComponentModeRequests::SubMode::Offset, subMode); // When the '3' key is pressed QTest::keyPress(&m_editorActions.m_componentModeWidget, Qt::Key_3); - // Then the component mode is set to Rotation. + // Then the component mode is set to Size. PhysX::ColliderComponentModeRequestBus::BroadcastResult(subMode, &PhysX::ColliderComponentModeRequests::GetCurrentMode); - EXPECT_EQ(PhysX::ColliderComponentModeRequests::SubMode::Rotation, subMode); + EXPECT_EQ(PhysX::ColliderComponentModeRequests::SubMode::Dimensions, subMode); } TEST_F(PhysXColliderComponentModeTest, PressingKeyRShouldResetSphereRadius) @@ -292,7 +292,7 @@ namespace UnitTest // Check preconditions PhysX::ColliderComponentModeRequests::SubMode subMode = PhysX::ColliderComponentModeRequests::SubMode::NumModes; PhysX::ColliderComponentModeRequestBus::BroadcastResult(subMode, &PhysX::ColliderComponentModeRequests::GetCurrentMode); - EXPECT_EQ(PhysX::ColliderComponentModeRequests::SubMode::Dimensions, subMode); + EXPECT_EQ(PhysX::ColliderComponentModeRequests::SubMode::Offset, subMode); // Get the cluster and button Ids AzToolsFramework::ViewportUi::ClusterId modeSelectionClusterId; @@ -327,7 +327,7 @@ namespace UnitTest // Check preconditions PhysX::ColliderComponentModeRequests::SubMode subMode = PhysX::ColliderComponentModeRequests::SubMode::NumModes; PhysX::ColliderComponentModeRequestBus::BroadcastResult(subMode, &PhysX::ColliderComponentModeRequests::GetCurrentMode); - EXPECT_EQ(PhysX::ColliderComponentModeRequests::SubMode::Dimensions, subMode); + EXPECT_EQ(PhysX::ColliderComponentModeRequests::SubMode::Offset, subMode); // Get the cluster and button Ids AzToolsFramework::ViewportUi::ClusterId modeSelectionClusterId; @@ -362,7 +362,7 @@ namespace UnitTest // Check preconditions PhysX::ColliderComponentModeRequests::SubMode subMode = PhysX::ColliderComponentModeRequests::SubMode::NumModes; PhysX::ColliderComponentModeRequestBus::BroadcastResult(subMode, &PhysX::ColliderComponentModeRequests::GetCurrentMode); - EXPECT_EQ(PhysX::ColliderComponentModeRequests::SubMode::Dimensions, subMode); + EXPECT_EQ(PhysX::ColliderComponentModeRequests::SubMode::Offset, subMode); // Get the cluster and button Ids AzToolsFramework::ViewportUi::ClusterId modeSelectionClusterId; From bd4e012eeb8793b5580d4cbe5274eeed69322854 Mon Sep 17 00:00:00 2001 From: greerdv Date: Mon, 22 Nov 2021 17:59:43 +0000 Subject: [PATCH 5/8] run clang format Signed-off-by: greerdv --- .../Code/Editor/ColliderComponentMode.cpp | 69 ++++++++++--------- 1 file changed, 36 insertions(+), 33 deletions(-) diff --git a/Gems/PhysX/Code/Editor/ColliderComponentMode.cpp b/Gems/PhysX/Code/Editor/ColliderComponentMode.cpp index 60e63c97d8..eba245eca5 100644 --- a/Gems/PhysX/Code/Editor/ColliderComponentMode.cpp +++ b/Gems/PhysX/Code/Editor/ColliderComponentMode.cpp @@ -7,20 +7,20 @@ */ #include "ColliderComponentMode.h" +#include "ColliderAssetScaleMode.h" +#include "ColliderBoxMode.h" +#include "ColliderCapsuleMode.h" #include "ColliderOffsetMode.h" #include "ColliderRotationMode.h" -#include "ColliderBoxMode.h" #include "ColliderSphereMode.h" -#include "ColliderCapsuleMode.h" -#include "ColliderAssetScaleMode.h" #include #include #include +#include #include #include -#include namespace PhysX { @@ -31,7 +31,7 @@ namespace PhysX const AZ::Crc32 SetOffsetSubModeActionUri = AZ_CRC("com.o3de.action.physx.setoffsetsubmode", 0xc06132e5); const AZ::Crc32 SetRotationSubModeActionUri = AZ_CRC("com.o3de.action.physx.setrotationsubmode", 0xc4225918); const AZ::Crc32 ResetSubModeActionUri = AZ_CRC("com.o3de.action.physx.resetsubmode", 0xb70b120e); - } + } // namespace AZ_CLASS_ALLOCATOR_IMPL(ColliderComponentMode, AZ::SystemAllocator, 0); @@ -66,10 +66,11 @@ namespace PhysX setOffsetModeAction.SetTitle("Set Offset Mode"); setOffsetModeAction.SetTip("Set offset mode"); setOffsetModeAction.SetEntityComponentIdPair(GetEntityComponentIdPair()); - setOffsetModeAction.SetCallback([this]() - { - SetCurrentMode(SubMode::Offset); - }); + setOffsetModeAction.SetCallback( + [this]() + { + SetCurrentMode(SubMode::Offset); + }); AzToolsFramework::ActionOverride setRotationModeAction; setRotationModeAction.SetUri(SetRotationSubModeActionUri); @@ -77,10 +78,11 @@ namespace PhysX setRotationModeAction.SetTitle("Set Rotation Mode"); setRotationModeAction.SetTip("Set rotation mode"); setRotationModeAction.SetEntityComponentIdPair(GetEntityComponentIdPair()); - setRotationModeAction.SetCallback([this]() - { - SetCurrentMode(SubMode::Rotation); - }); + setRotationModeAction.SetCallback( + [this]() + { + SetCurrentMode(SubMode::Rotation); + }); AzToolsFramework::ActionOverride setDimensionsModeAction; setDimensionsModeAction.SetUri(SetDimensionsSubModeActionUri); @@ -88,7 +90,8 @@ namespace PhysX setDimensionsModeAction.SetTitle("Set Resize Mode"); setDimensionsModeAction.SetTip("Set resize mode"); setDimensionsModeAction.SetEntityComponentIdPair(GetEntityComponentIdPair()); - setDimensionsModeAction.SetCallback([this]() + setDimensionsModeAction.SetCallback( + [this]() { SetCurrentMode(SubMode::Dimensions); }); @@ -99,12 +102,13 @@ namespace PhysX resetModeAction.SetTitle("Reset Current Mode"); resetModeAction.SetTip("Reset current mode"); resetModeAction.SetEntityComponentIdPair(GetEntityComponentIdPair()); - resetModeAction.SetCallback([this]() - { - ResetCurrentMode(); - }); + resetModeAction.SetCallback( + [this]() + { + ResetCurrentMode(); + }); - return {setDimensionsModeAction, setOffsetModeAction, setRotationModeAction, resetModeAction }; + return { setDimensionsModeAction, setOffsetModeAction, setRotationModeAction, resetModeAction }; } void ColliderComponentMode::CreateSubModes() @@ -156,8 +160,7 @@ namespace PhysX void ColliderComponentMode::SetCurrentMode(SubMode newMode) { - if (auto subMode = m_subModes.find(newMode); - subMode != m_subModes.end()) + if (auto subMode = m_subModes.find(newMode); subMode != m_subModes.end()) { m_subModes[m_subMode]->Teardown(GetEntityComponentIdPair()); m_subMode = newMode; @@ -211,19 +214,18 @@ namespace PhysX { /// The reason this is in a free function is because ColliderComponentMode /// privately inherits from ToolsApplicationNotificationBus. Trying to invoke - /// the bus inside the class scope causes the compiler to complain it's not accessible - /// to due private inheritence. - /// Using the global namespace operator :: should have fixed that, except there + /// the bus inside the class scope causes the compiler to complain it's not accessible + /// to due private inheritence. + /// Using the global namespace operator :: should have fixed that, except there /// is a bug in the microsoft compiler meaning it doesn't work. So this is a work around. AzToolsFramework::ToolsApplicationNotificationBus::Broadcast( - &AzToolsFramework::ToolsApplicationNotificationBus::Events::InvalidatePropertyDisplay, - AzToolsFramework::Refresh_Values); + &AzToolsFramework::ToolsApplicationNotificationBus::Events::InvalidatePropertyDisplay, AzToolsFramework::Refresh_Values); } void ColliderComponentMode::ResetCurrentMode() { m_subModes[m_subMode]->ResetValues(GetEntityComponentIdPair()); - m_subModes[m_subMode]->Refresh(GetEntityComponentIdPair()); + m_subModes[m_subMode]->Refresh(GetEntityComponentIdPair()); RefreshUI(); } @@ -247,8 +249,8 @@ namespace PhysX void ColliderComponentMode::RemoveSubModeSelectionCluster() { AzToolsFramework::ViewportUi::ViewportUiRequestBus::Event( - AzToolsFramework::ViewportUi::DefaultViewportId, - &AzToolsFramework::ViewportUi::ViewportUiRequestBus::Events::RemoveCluster, m_modeSelectionClusterId); + AzToolsFramework::ViewportUi::DefaultViewportId, &AzToolsFramework::ViewportUi::ViewportUiRequestBus::Events::RemoveCluster, + m_modeSelectionClusterId); } void ColliderComponentMode::CreateSubModeSelectionCluster() @@ -266,7 +268,8 @@ namespace PhysX SetCurrentMode(SubMode::Offset); - const auto onButtonClicked = [this](AzToolsFramework::ViewportUi::ButtonId buttonId) { + const auto onButtonClicked = [this](AzToolsFramework::ViewportUi::ButtonId buttonId) + { if (buttonId == m_buttonIds[static_cast(SubMode::Offset)]) { SetCurrentMode(SubMode::Offset); @@ -284,7 +287,7 @@ namespace PhysX m_modeSelectionHandler = AZ::Event::Handler(onButtonClicked); AzToolsFramework::ViewportUi::ViewportUiRequestBus::Event( AzToolsFramework::ViewportUi::DefaultViewportId, - &AzToolsFramework::ViewportUi::ViewportUiRequestBus::Events::RegisterClusterEventHandler, - m_modeSelectionClusterId, m_modeSelectionHandler); + &AzToolsFramework::ViewportUi::ViewportUiRequestBus::Events::RegisterClusterEventHandler, m_modeSelectionClusterId, + m_modeSelectionHandler); } -} +} // namespace PhysX From 03e5fd213cc0b00a6020c3812e3aa2a6a688554b Mon Sep 17 00:00:00 2001 From: greerdv Date: Mon, 22 Nov 2021 18:46:29 +0000 Subject: [PATCH 6/8] feedback from PR Signed-off-by: greerdv --- .../Code/Editor/ColliderComponentMode.cpp | 40 ++++++++----------- .../PhysX/Code/Editor/ColliderComponentMode.h | 11 ++--- 2 files changed, 22 insertions(+), 29 deletions(-) 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. From 9513ab8d1ee530ebc7fb7fdd79db2a092d174b69 Mon Sep 17 00:00:00 2001 From: greerdv Date: Mon, 22 Nov 2021 21:54:00 +0000 Subject: [PATCH 7/8] switch back to vector for button ids since there may not be a 1 to 1 mapping to modes in future Signed-off-by: greerdv --- Gems/PhysX/Code/Editor/ColliderComponentMode.cpp | 1 + Gems/PhysX/Code/Editor/ColliderComponentMode.h | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Gems/PhysX/Code/Editor/ColliderComponentMode.cpp b/Gems/PhysX/Code/Editor/ColliderComponentMode.cpp index 76e687f26a..1f1cdd79fa 100644 --- a/Gems/PhysX/Code/Editor/ColliderComponentMode.cpp +++ b/Gems/PhysX/Code/Editor/ColliderComponentMode.cpp @@ -250,6 +250,7 @@ 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"); diff --git a/Gems/PhysX/Code/Editor/ColliderComponentMode.h b/Gems/PhysX/Code/Editor/ColliderComponentMode.h index 4c968bb87d..a756075513 100644 --- a/Gems/PhysX/Code/Editor/ColliderComponentMode.h +++ b/Gems/PhysX/Code/Editor/ColliderComponentMode.h @@ -66,8 +66,7 @@ namespace PhysX AzToolsFramework::ViewportUi::ClusterId m_modeSelectionClusterId; //!< Viewport UI cluster for changing sub mode. - //! Ids for the Viewport UI buttons for each mode. - AZStd::fixed_vector< AzToolsFramework::ViewportUi::ButtonId, static_cast(SubMode::NumModes)> m_buttonIds; + AZStd::vector m_buttonIds; //!< Ids for the Viewport UI buttons for each mode. AZ::Event::Handler m_modeSelectionHandler; //!< Event handler for sub mode changes. From f3347f56db0406798e6c768c6f8892147e0527d3 Mon Sep 17 00:00:00 2001 From: greerdv Date: Tue, 23 Nov 2021 09:40:13 +0000 Subject: [PATCH 8/8] remove variable only used in assert Signed-off-by: greerdv --- Gems/PhysX/Code/Editor/ColliderComponentMode.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Gems/PhysX/Code/Editor/ColliderComponentMode.cpp b/Gems/PhysX/Code/Editor/ColliderComponentMode.cpp index 1f1cdd79fa..e5e75d88a3 100644 --- a/Gems/PhysX/Code/Editor/ColliderComponentMode.cpp +++ b/Gems/PhysX/Code/Editor/ColliderComponentMode.cpp @@ -160,8 +160,7 @@ namespace PhysX void ColliderComponentMode::SetCurrentMode(SubMode newMode) { - auto subMode = m_subModes.find(newMode); - AZ_Assert(subMode != m_subModes.end(), "Submode not found:%d", newMode); + AZ_Assert(m_subModes.find(newMode) != m_subModes.end(), "Submode not found:%d", newMode); m_subModes[m_subMode]->Teardown(GetEntityComponentIdPair()); m_subMode = newMode; m_subModes[m_subMode]->Setup(GetEntityComponentIdPair());