@@ -142,7 +142,7 @@ namespace PhysX
|
|||||||
if (mouseInteraction.m_mouseEvent == AzToolsFramework::ViewportInteraction::MouseEvent::Wheel &&
|
if (mouseInteraction.m_mouseEvent == AzToolsFramework::ViewportInteraction::MouseEvent::Wheel &&
|
||||||
mouseInteraction.m_mouseInteraction.m_keyboardModifiers.Ctrl())
|
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 currentModeIndex = static_cast<AZ::u32>(m_subMode);
|
||||||
AZ::u32 numSubModes = static_cast<AZ::u32>(SubMode::NumModes);
|
AZ::u32 numSubModes = static_cast<AZ::u32>(SubMode::NumModes);
|
||||||
AZ::u32 nextModeIndex = (currentModeIndex + numSubModes + direction) % m_subModes.size();
|
AZ::u32 nextModeIndex = (currentModeIndex + numSubModes + direction) % m_subModes.size();
|
||||||
@@ -160,29 +160,18 @@ namespace PhysX
|
|||||||
|
|
||||||
void ColliderComponentMode::SetCurrentMode(SubMode newMode)
|
void ColliderComponentMode::SetCurrentMode(SubMode newMode)
|
||||||
{
|
{
|
||||||
if (auto subMode = m_subModes.find(newMode); subMode != m_subModes.end())
|
auto subMode = m_subModes.find(newMode);
|
||||||
{
|
AZ_Assert(subMode != m_subModes.end(), "Submode not found:%d", newMode);
|
||||||
m_subModes[m_subMode]->Teardown(GetEntityComponentIdPair());
|
m_subModes[m_subMode]->Teardown(GetEntityComponentIdPair());
|
||||||
m_subMode = newMode;
|
m_subMode = newMode;
|
||||||
m_subModes[m_subMode]->Setup(GetEntityComponentIdPair());
|
m_subModes[m_subMode]->Setup(GetEntityComponentIdPair());
|
||||||
|
|
||||||
const auto modeIndex = static_cast<size_t>(newMode);
|
const auto modeIndex = static_cast<size_t>(newMode);
|
||||||
if (modeIndex < m_buttonIds.size())
|
AZ_Assert(modeIndex < m_buttonIds.size(), "Invalid mode index %i.", modeIndex);
|
||||||
{
|
AzToolsFramework::ViewportUi::ViewportUiRequestBus::Event(
|
||||||
AzToolsFramework::ViewportUi::ViewportUiRequestBus::Event(
|
AzToolsFramework::ViewportUi::DefaultViewportId,
|
||||||
AzToolsFramework::ViewportUi::DefaultViewportId,
|
&AzToolsFramework::ViewportUi::ViewportUiRequestBus::Events::SetClusterActiveButton, m_modeSelectionClusterId,
|
||||||
&AzToolsFramework::ViewportUi::ViewportUiRequestBus::Events::SetClusterActiveButton, m_modeSelectionClusterId,
|
m_buttonIds[modeIndex]);
|
||||||
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
|
AzToolsFramework::ViewportUi::ClusterId ColliderComponentMode::GetClusterId() const
|
||||||
@@ -261,7 +250,6 @@ namespace PhysX
|
|||||||
&AzToolsFramework::ViewportUi::ViewportUiRequestBus::Events::CreateCluster, AzToolsFramework::ViewportUi::Alignment::TopLeft);
|
&AzToolsFramework::ViewportUi::ViewportUiRequestBus::Events::CreateCluster, AzToolsFramework::ViewportUi::Alignment::TopLeft);
|
||||||
|
|
||||||
// create and register the buttons
|
// 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::Offset)] = RegisterClusterButton(m_modeSelectionClusterId, "Move");
|
||||||
m_buttonIds[static_cast<size_t>(SubMode::Rotation)] = RegisterClusterButton(m_modeSelectionClusterId, "Rotate");
|
m_buttonIds[static_cast<size_t>(SubMode::Rotation)] = RegisterClusterButton(m_modeSelectionClusterId, "Rotate");
|
||||||
m_buttonIds[static_cast<size_t>(SubMode::Dimensions)] = RegisterClusterButton(m_modeSelectionClusterId, "Scale");
|
m_buttonIds[static_cast<size_t>(SubMode::Dimensions)] = RegisterClusterButton(m_modeSelectionClusterId, "Scale");
|
||||||
@@ -282,6 +270,10 @@ namespace PhysX
|
|||||||
{
|
{
|
||||||
SetCurrentMode(SubMode::Dimensions);
|
SetCurrentMode(SubMode::Dimensions);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
AZ_Error("PhysX Collider Component Mode", false, "Unrecognized button ID.");
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
m_modeSelectionHandler = AZ::Event<AzToolsFramework::ViewportUi::ButtonId>::Handler(onButtonClicked);
|
m_modeSelectionHandler = AZ::Event<AzToolsFramework::ViewportUi::ButtonId>::Handler(onButtonClicked);
|
||||||
|
|||||||
@@ -31,22 +31,22 @@ namespace PhysX
|
|||||||
ColliderComponentMode(const AZ::EntityComponentIdPair& entityComponentIdPair, AZ::Uuid componentType);
|
ColliderComponentMode(const AZ::EntityComponentIdPair& entityComponentIdPair, AZ::Uuid componentType);
|
||||||
~ColliderComponentMode();
|
~ColliderComponentMode();
|
||||||
|
|
||||||
// EditorBaseComponentMode ...
|
// EditorBaseComponentMode overrides ...
|
||||||
void Refresh() override;
|
void Refresh() override;
|
||||||
AZStd::vector<AzToolsFramework::ActionOverride> PopulateActionsImpl() override;
|
AZStd::vector<AzToolsFramework::ActionOverride> PopulateActionsImpl() override;
|
||||||
AZStd::vector<AzToolsFramework::ViewportUi::ClusterId> PopulateViewportUiImpl() override;
|
AZStd::vector<AzToolsFramework::ViewportUi::ClusterId> PopulateViewportUiImpl() override;
|
||||||
|
|
||||||
// ColliderComponentModeBus ...
|
// ColliderComponentModeBus overrides ...
|
||||||
SubMode GetCurrentMode() override;
|
SubMode GetCurrentMode() override;
|
||||||
void SetCurrentMode(SubMode index) override;
|
void SetCurrentMode(SubMode index) override;
|
||||||
|
|
||||||
// ColliderComponentModeUiBus ...
|
// ColliderComponentModeUiBus overrides ...
|
||||||
AzToolsFramework::ViewportUi::ButtonId GetOffsetButtonId() const override;
|
AzToolsFramework::ViewportUi::ButtonId GetOffsetButtonId() const override;
|
||||||
AzToolsFramework::ViewportUi::ButtonId GetRotationButtonId() const override;
|
AzToolsFramework::ViewportUi::ButtonId GetRotationButtonId() const override;
|
||||||
AzToolsFramework::ViewportUi::ClusterId GetClusterId() const override;
|
AzToolsFramework::ViewportUi::ClusterId GetClusterId() const override;
|
||||||
AzToolsFramework::ViewportUi::ButtonId GetDimensionsButtonId() const override;
|
AzToolsFramework::ViewportUi::ButtonId GetDimensionsButtonId() const override;
|
||||||
|
|
||||||
// ComponentMode ...
|
// ComponentMode overrides ...
|
||||||
AZStd::string GetComponentModeName() const override;
|
AZStd::string GetComponentModeName() const override;
|
||||||
private:
|
private:
|
||||||
|
|
||||||
@@ -66,7 +66,8 @@ namespace PhysX
|
|||||||
AzToolsFramework::ViewportUi::ClusterId
|
AzToolsFramework::ViewportUi::ClusterId
|
||||||
m_modeSelectionClusterId; //!< Viewport UI cluster for changing sub mode.
|
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
|
AZ::Event<AzToolsFramework::ViewportUi::ButtonId>::Handler
|
||||||
m_modeSelectionHandler; //!< Event handler for sub mode changes.
|
m_modeSelectionHandler; //!< Event handler for sub mode changes.
|
||||||
|
|||||||
Reference in New Issue
Block a user