diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.cpp index e94b3457fa..eb16bf158e 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.cpp @@ -500,6 +500,13 @@ namespace AzToolsFramework return worldFromLocal.TransformPoint(CalculateCenterOffset(entityId, pivot)); } + void EditorTransformComponentSelection::SetAllViewportUiVisible(const bool visible) + { + SetViewportUiClusterVisible(m_transformModeClusterId, visible); + SetViewportUiClusterVisible(m_spaceCluster.m_spaceClusterId, visible); + m_viewportUiVisible = visible; + } + void EditorTransformComponentSelection::UpdateSpaceCluster(const ReferenceFrame referenceFrame) { auto buttonIdFromFrameFn = [this](const ReferenceFrame referenceFrame) @@ -1022,6 +1029,7 @@ namespace AzToolsFramework ToolsApplicationNotificationBus::Handler::BusConnect(); Camera::EditorCameraNotificationBus::Handler::BusConnect(); ComponentModeFramework::EditorComponentModeNotificationBus::Handler::BusConnect(entityContextId); + EditorEntityContextNotificationBus::Handler::BusConnect(); EditorEntityVisibilityNotificationBus::Router::BusRouterConnect(); EditorEntityLockComponentNotificationBus::Router::BusRouterConnect(); EditorManipulatorCommandUndoRedoRequestBus::Handler::BusConnect(entityContextId); @@ -1050,6 +1058,7 @@ namespace AzToolsFramework EditorManipulatorCommandUndoRedoRequestBus::Handler::BusDisconnect(); EditorEntityLockComponentNotificationBus::Router::BusRouterDisconnect(); EditorEntityVisibilityNotificationBus::Router::BusRouterDisconnect(); + EditorEntityContextNotificationBus::Handler::BusDisconnect(); ComponentModeFramework::EditorComponentModeNotificationBus::Handler::BusDisconnect(); Camera::EditorCameraNotificationBus::Handler::BusDisconnect(); ToolsApplicationNotificationBus::Handler::BusDisconnect(); @@ -2380,9 +2389,7 @@ namespace AzToolsFramework /*ID_VIEWPORTUI_VISIBLE=*/50040, "Toggle ViewportUI", "Hide/Unhide Viewport UI", [this]() { - SetViewportUiClusterVisible(m_transformModeClusterId, !m_viewportUiVisible); - SetViewportUiClusterVisible(m_spaceCluster.m_spaceClusterId, !m_viewportUiVisible); - m_viewportUiVisible = !m_viewportUiVisible; + SetAllViewportUiVisible(!m_viewportUiVisible); }); EditorMenuRequestBus::Broadcast(&EditorMenuRequests::RestoreEditMenuToDefault); @@ -3575,7 +3582,7 @@ namespace AzToolsFramework void EditorTransformComponentSelection::EnteredComponentMode(const AZStd::vector& /*componentModeTypes*/) { - SetViewportUiClusterVisible(m_transformModeClusterId, false); + SetAllViewportUiVisible(false); EditorEntityLockComponentNotificationBus::Router::BusRouterDisconnect(); EditorEntityVisibilityNotificationBus::Router::BusRouterDisconnect(); @@ -3584,7 +3591,7 @@ namespace AzToolsFramework void EditorTransformComponentSelection::LeftComponentMode(const AZStd::vector& /*componentModeTypes*/) { - SetViewportUiClusterVisible(m_transformModeClusterId, true); + SetAllViewportUiVisible(true); ToolsApplicationNotificationBus::Handler::BusConnect(); EditorEntityVisibilityNotificationBus::Router::BusRouterConnect(); @@ -3640,6 +3647,16 @@ namespace AzToolsFramework ETCS::SetEntityLocalRotation(entityId, localRotation, m_transformChangedInternally); } + void EditorTransformComponentSelection::OnStartPlayInEditor() + { + SetAllViewportUiVisible(false); + } + + void EditorTransformComponentSelection::OnStopPlayInEditor() + { + SetAllViewportUiVisible(true); + } + namespace ETCS { // little raii wrapper to switch a value from true to false and back diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.h b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.h index 1b52911978..773921ebea 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.h @@ -133,6 +133,7 @@ namespace AzToolsFramework , private ToolsApplicationNotificationBus::Handler , private Camera::EditorCameraNotificationBus::Handler , private ComponentModeFramework::EditorComponentModeNotificationBus::Handler + , private EditorEntityContextNotificationBus::Handler , private EditorEntityVisibilityNotificationBus::Router , private EditorEntityLockComponentNotificationBus::Router , private EditorManipulatorCommandUndoRedoRequestBus::Handler @@ -269,6 +270,10 @@ namespace AzToolsFramework void EnteredComponentMode(const AZStd::vector& componentModeTypes) override; void LeftComponentMode(const AZStd::vector& componentModeTypes) override; + // EditorEntityContextNotificationBus overrides ... + void OnStartPlayInEditor() override; + void OnStopPlayInEditor() override; + // Helpers to safely interact with the TransformBus (requests). void SetEntityWorldTranslation(AZ::EntityId entityId, const AZ::Vector3& worldTranslation); void SetEntityLocalTranslation(AZ::EntityId entityId, const AZ::Vector3& localTranslation); @@ -276,9 +281,12 @@ namespace AzToolsFramework void SetEntityLocalScale(AZ::EntityId entityId, float localScale); void SetEntityLocalRotation(AZ::EntityId entityId, const AZ::Vector3& localRotation); - // Responsible for keeping the space cluster in sync with the current reference frame. + //! Responsible for keeping the space cluster in sync with the current reference frame. void UpdateSpaceCluster(ReferenceFrame referenceFrame); + //! Hides/Shows all viewportUi toolbars. + void SetAllViewportUiVisible(bool visible); + AZ::EntityId m_hoveredEntityId; //!< What EntityId is the mouse currently hovering over (if any). AZ::EntityId m_cachedEntityIdUnderCursor; //!< Store the EntityId on each mouse move for use in Display. AZ::EntityId m_editorCameraComponentEntityId; //!< The EditorCameraComponent EntityId if it is set.