From 28d45891f29210cca73aed56f5996fa4e0bb9caf Mon Sep 17 00:00:00 2001 From: hultonha <82228511+hultonha@users.noreply.github.com> Date: Mon, 13 Sep 2021 09:36:34 +0100 Subject: [PATCH] Remove redundant API calls from EditorViewportWidget and use new WorldToScreen call (#4022) * remove redundant API calls from EditorViewportWidget and use new WorldToScreen call Signed-off-by: hultonha * remove additional pre/post widget render calls that are no longer required Signed-off-by: hultonha --- Code/Editor/EditorViewportWidget.cpp | 64 +++++-------------- Code/Editor/EditorViewportWidget.h | 5 +- Code/Editor/IEditorImpl.cpp | 7 -- Code/Editor/Viewport.cpp | 27 -------- Code/Editor/Viewport.h | 16 +---- .../Manipulators/EditorVertexSelection.cpp | 7 +- .../Viewport/ViewportMessages.h | 27 -------- .../ViewportSelection/EditorHelpers.cpp | 7 +- .../ViewportSelection/EditorSelectionUtil.cpp | 12 ---- .../ViewportSelection/EditorSelectionUtil.h | 3 - .../EditorTransformComponentSelection.cpp | 15 +---- .../Editor/EditorViewportEntityPicker.cpp | 38 +++++------ 12 files changed, 42 insertions(+), 186 deletions(-) diff --git a/Code/Editor/EditorViewportWidget.cpp b/Code/Editor/EditorViewportWidget.cpp index 736bbe5feb..61c7355273 100644 --- a/Code/Editor/EditorViewportWidget.cpp +++ b/Code/Editor/EditorViewportWidget.cpp @@ -295,28 +295,17 @@ void EditorViewportWidget::mousePressEvent(QMouseEvent* event) QtViewport::mousePressEvent(event); } -AzToolsFramework::ViewportInteraction::MousePick EditorViewportWidget::BuildMousePickInternal(const QPoint& point) const +AzToolsFramework::ViewportInteraction::MousePick EditorViewportWidget::BuildMousePick(const QPoint& point) const { - using namespace AzToolsFramework::ViewportInteraction; - - MousePick mousePick; - mousePick.m_screenCoordinates = ScreenPointFromQPoint(point); - const auto& ray = m_renderViewport->ViewportScreenToWorldRay(mousePick.m_screenCoordinates); - if (ray.has_value()) + AzToolsFramework::ViewportInteraction::MousePick mousePick; + mousePick.m_screenCoordinates = AzToolsFramework::ViewportInteraction::ScreenPointFromQPoint(point); + if (const auto& ray = m_renderViewport->ViewportScreenToWorldRay(mousePick.m_screenCoordinates); + ray.has_value()) { mousePick.m_rayOrigin = ray.value().origin; mousePick.m_rayDirection = ray.value().direction; } - return mousePick; -} -AzToolsFramework::ViewportInteraction::MousePick EditorViewportWidget::BuildMousePick(const QPoint& point) -{ - using namespace AzToolsFramework::ViewportInteraction; - - PreWidgetRendering(); - const MousePick mousePick = BuildMousePickInternal(point); - PostWidgetRendering(); return mousePick; } @@ -325,9 +314,7 @@ AzToolsFramework::ViewportInteraction::MouseInteraction EditorViewportWidget::Bu const AzToolsFramework::ViewportInteraction::KeyboardModifiers modifiers, const AzToolsFramework::ViewportInteraction::MousePick& mousePick) const { - using namespace AzToolsFramework::ViewportInteraction; - - MouseInteraction mouse; + AzToolsFramework::ViewportInteraction::MouseInteraction mouse; mouse.m_interactionId.m_cameraId = m_viewEntityId; mouse.m_interactionId.m_viewportId = GetViewportId(); mouse.m_mouseButtons = buttons; @@ -339,11 +326,11 @@ AzToolsFramework::ViewportInteraction::MouseInteraction EditorViewportWidget::Bu AzToolsFramework::ViewportInteraction::MouseInteraction EditorViewportWidget::BuildMouseInteraction( const Qt::MouseButtons buttons, const Qt::KeyboardModifiers modifiers, const QPoint& point) { - using namespace AzToolsFramework::ViewportInteraction; + namespace AztfVi = AzToolsFramework::ViewportInteraction; return BuildMouseInteractionInternal( - BuildMouseButtons(buttons), - BuildKeyboardModifiers(modifiers), + AztfVi::BuildMouseButtons(buttons), + AztfVi::BuildKeyboardModifiers(modifiers), BuildMousePick(WidgetToViewport(point))); } @@ -721,8 +708,6 @@ void EditorViewportWidget::OnBeginPrepareRender() return; } - PreWidgetRendering(); - RenderAll(); // Draw 2D helpers. @@ -748,8 +733,6 @@ void EditorViewportWidget::OnBeginPrepareRender() m_debugDisplay->SetState(prevState); m_debugDisplay->DepthTestOn(); - - PostWidgetRendering(); } ////////////////////////////////////////////////////////////////////////// @@ -769,15 +752,15 @@ void EditorViewportWidget::RenderAll() if (m_manipulatorManager != nullptr) { - using namespace AzToolsFramework::ViewportInteraction; + namespace AztfVi = AzToolsFramework::ViewportInteraction; m_debugDisplay->DepthTestOff(); m_manipulatorManager->DrawManipulators( *m_debugDisplay, GetCameraState(), BuildMouseInteractionInternal( - MouseButtons(TranslateMouseButtons(QGuiApplication::mouseButtons())), - BuildKeyboardModifiers(QGuiApplication::queryKeyboardModifiers()), - BuildMousePickInternal(WidgetToViewport(mapFromGlobal(QCursor::pos()))))); + AztfVi::MouseButtons(AztfVi::TranslateMouseButtons(QGuiApplication::mouseButtons())), + AztfVi::BuildKeyboardModifiers(QGuiApplication::queryKeyboardModifiers()), + BuildMousePick(WidgetToViewport(mapFromGlobal(QCursor::pos()))))); m_debugDisplay->DepthTestOn(); } } @@ -950,8 +933,6 @@ AZ::Vector3 EditorViewportWidget::PickTerrain(const AzFramework::ScreenPoint& po AZ::EntityId EditorViewportWidget::PickEntity(const AzFramework::ScreenPoint& point) { - PreWidgetRendering(); - AZ::EntityId entityId; HitContext hitInfo; hitInfo.view = this; @@ -964,8 +945,6 @@ AZ::EntityId EditorViewportWidget::PickEntity(const AzFramework::ScreenPoint& po } } - PostWidgetRendering(); - return entityId; } @@ -999,28 +978,17 @@ QWidget* EditorViewportWidget::GetWidgetForViewportContextMenu() return this; } -void EditorViewportWidget::BeginWidgetContext() -{ - PreWidgetRendering(); -} - -void EditorViewportWidget::EndWidgetContext() -{ - PostWidgetRendering(); -} - bool EditorViewportWidget::ShowingWorldSpace() { - using namespace AzToolsFramework::ViewportInteraction; - return BuildKeyboardModifiers(QGuiApplication::queryKeyboardModifiers()).Shift(); + return AzToolsFramework::ViewportInteraction::BuildKeyboardModifiers(QGuiApplication::queryKeyboardModifiers()).Shift(); } void EditorViewportWidget::SetViewportId(int id) { CViewport::SetViewportId(id); - // Clear the cached debugdisplay pointer. we're about to delete that render viewport, and deleting the render - // viewport invalidates the debugdisplay. + // Clear the cached DebugDisplay pointer. we're about to delete that render viewport, and deleting the render + // viewport invalidates the DebugDisplay. m_debugDisplay = nullptr; // First delete any existing layout diff --git a/Code/Editor/EditorViewportWidget.h b/Code/Editor/EditorViewportWidget.h index dff0adb55a..426b7c5ad1 100644 --- a/Code/Editor/EditorViewportWidget.h +++ b/Code/Editor/EditorViewportWidget.h @@ -211,8 +211,6 @@ private: float TerrainHeight(const AZ::Vector2& position) override; bool ShowingWorldSpace() override; QWidget* GetWidgetForViewportContextMenu() override; - void BeginWidgetContext() override; - void EndWidgetContext() override; // EditorEntityViewportInteractionRequestBus overrides ... void FindVisibleEntities(AZStd::vector& visibleEntities) override; @@ -271,7 +269,7 @@ private: // note: The argument passed to parameter **point**, originating // from a Qt event, must first be passed to WidgetToViewport before being // passed to BuildMousePick. - AzToolsFramework::ViewportInteraction::MousePick BuildMousePick(const QPoint& point); + AzToolsFramework::ViewportInteraction::MousePick BuildMousePick(const QPoint& point) const; bool CheckRespondToInput() const; @@ -281,7 +279,6 @@ private: void PushDisableRendering(); void PopDisableRendering(); bool IsRenderingDisabled() const; - AzToolsFramework::ViewportInteraction::MousePick BuildMousePickInternal(const QPoint& point) const; void RestoreViewportAfterGameMode(); diff --git a/Code/Editor/IEditorImpl.cpp b/Code/Editor/IEditorImpl.cpp index 51ef0dedc3..66c64d5bef 100644 --- a/Code/Editor/IEditorImpl.cpp +++ b/Code/Editor/IEditorImpl.cpp @@ -632,14 +632,7 @@ void CEditorImpl::SetReferenceCoordSys(RefCoordSys refCoords) CViewport* pViewport = GetActiveView(); if (pViewport) { - //Pre and Post widget rendering calls are made here to make sure that the proper camera state is set. - //MakeConstructionPlane will make a call to ViewToWorldRay which needs the correct camera state - //in the CRenderViewport to be set. - pViewport->PreWidgetRendering(); - pViewport->MakeConstructionPlane(GetIEditor()->GetAxisConstrains()); - - pViewport->PostWidgetRendering(); } Notify(eNotify_OnRefCoordSysChange); diff --git a/Code/Editor/Viewport.cpp b/Code/Editor/Viewport.cpp index 9c6088e340..2d41538d92 100644 --- a/Code/Editor/Viewport.cpp +++ b/Code/Editor/Viewport.cpp @@ -43,12 +43,7 @@ void QtViewport::BuildDragDropContext(AzQtComponents::ViewportDragContext& context, const QPoint& pt) { context.m_hitLocation = AZ::Vector3::CreateZero(); - - PreWidgetRendering(); // required so that the current render cam is set. - context.m_hitLocation = GetHitLocation(pt); - - PostWidgetRendering(); } @@ -1352,28 +1347,6 @@ bool QtViewport::MouseCallback(EMouseEvent event, const QPoint& point, Qt::Keybo return true; } - // RAII wrapper for Pre / PostWidgetRendering calls. - // It also tracks the times a mouse callback potentially created a new viewport context. - struct ScopedProcessingMouseCallback - { - explicit ScopedProcessingMouseCallback(QtViewport* viewport) - : m_viewport(viewport) - { - m_viewport->m_processingMouseCallbacksCounter++; - m_viewport->PreWidgetRendering(); - } - - ~ScopedProcessingMouseCallback() - { - m_viewport->PostWidgetRendering(); - m_viewport->m_processingMouseCallbacksCounter--; - } - - QtViewport* m_viewport; - }; - - ScopedProcessingMouseCallback scopedProcessingMouseCallback(this); - ////////////////////////////////////////////////////////////////////////// // Hit test gizmo objects. ////////////////////////////////////////////////////////////////////////// diff --git a/Code/Editor/Viewport.h b/Code/Editor/Viewport.h index 6b5bfb5c34..74897508f0 100644 --- a/Code/Editor/Viewport.h +++ b/Code/Editor/Viewport.h @@ -274,12 +274,6 @@ public: void SetViewPane(CLayoutViewPane* viewPane) { m_viewPane = viewPane; } - //Child classes can override these to provide extra logic that wraps - //widget rendering. Needed by the RenderViewport to handle raycasts - //from screen-space to world-space. - virtual void PreWidgetRendering() {} - virtual void PostWidgetRendering() {} - virtual CViewport *asCViewport() { return this; } protected: @@ -289,7 +283,7 @@ protected: // Screen Matrix Matrix34 m_screenTM; int m_nCurViewportID; - // Final game view matrix before drpping back to editor + // Final game view matrix before dropping back to editor Matrix34 m_gameTM; AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING @@ -427,7 +421,7 @@ public: QRect GetSelectionRectangle() const override { return m_selectedRect; }; //! Called when dragging selection rectangle. void OnDragSelectRectangle(const QRect& rect, bool bNormalizeRect = false) override; - //! Get selection procision tolerance. + //! Get selection precision tolerance. float GetSelectionTolerance() const { return m_selectionTolerance; } //! Center viewport on selection. void CenterOnSelection() override {} @@ -572,12 +566,6 @@ protected: void dragLeaveEvent(QDragLeaveEvent* event) override; void dropEvent(QDropEvent* event) override; - //Child classes can override these to provide extra logic that wraps - //widget rendering. Needed by the RenderViewport to handle raycasts - //from screen-space to world-space. - virtual void PreWidgetRendering() {} - virtual void PostWidgetRendering() {} - AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING AzToolsFramework::ViewportUi::ViewportUiManager m_viewportUi; AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Manipulators/EditorVertexSelection.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Manipulators/EditorVertexSelection.cpp index af5a9004e3..7b2ce53613 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Manipulators/EditorVertexSelection.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Manipulators/EditorVertexSelection.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -363,9 +364,7 @@ namespace AzToolsFramework boxSelectData.m_activeSelection = boxSelectData.m_startSelection; } - // set the widget context before calls to ViewportWorldToScreen so we are not - // going to constantly be pushing/popping the widget context - ViewportInteraction::WidgetContextGuard widgetContextGuard(viewportId); + const AzFramework::CameraState cameraState = GetCameraState(viewportId); // box select active (clicking and dragging) if (editorBoxSelect.BoxRegion()) @@ -385,7 +384,7 @@ namespace AzToolsFramework found, fixedVertices, &AZ::FixedVerticesRequestBus::Handler::GetVertex, vertexIndex, localVertex); const AZ::Vector3 worldVertex = worldFromLocal.TransformPoint(AZ::AdaptVertexOut(localVertex)); - const AzFramework::ScreenPoint screenPosition = GetScreenPosition(viewportId, worldVertex); + const AzFramework::ScreenPoint screenPosition = AzFramework::WorldToScreen(worldVertex, cameraState); // check if a vertex is inside the box select region if (editorBoxSelect.BoxRegion()->contains(ViewportInteraction::QPointFromScreenPoint(screenPosition))) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Viewport/ViewportMessages.h b/Code/Framework/AzToolsFramework/AzToolsFramework/Viewport/ViewportMessages.h index 942fee1a49..fa4d8dfe11 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Viewport/ViewportMessages.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Viewport/ViewportMessages.h @@ -254,11 +254,6 @@ namespace AzToolsFramework virtual bool ShowingWorldSpace() = 0; //! Return the widget to use as the parent for the viewport context menu. virtual QWidget* GetWidgetForViewportContextMenu() = 0; - //! Set the render context for the viewport. - virtual void BeginWidgetContext() = 0; - //! End the render context for the viewport. - //! Return to previous context before Begin was called. - virtual void EndWidgetContext() = 0; protected: ~MainEditorViewportInteractionRequests() = default; @@ -297,28 +292,6 @@ namespace AzToolsFramework //! Type to inherit to implement MainEditorViewportInteractionRequests. using ViewportMouseCursorRequestBus = AZ::EBus; - - //! A helper to wrap Begin/EndWidgetContext. - class WidgetContextGuard - { - public: - explicit WidgetContextGuard(const int viewportId) - : m_viewportId(viewportId) - { - MainEditorViewportInteractionRequestBus::Event( - viewportId, &MainEditorViewportInteractionRequestBus::Events::BeginWidgetContext); - } - - ~WidgetContextGuard() - { - MainEditorViewportInteractionRequestBus::Event( - m_viewportId, &MainEditorViewportInteractionRequestBus::Events::EndWidgetContext); - } - - private: - int m_viewportId; //!< The viewport id the widget context is being set on. - }; - } // namespace ViewportInteraction //! Utility function to return EntityContextId. diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorHelpers.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorHelpers.cpp index 7abff230e3..25b10463dc 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorHelpers.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorHelpers.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -118,10 +119,6 @@ namespace AzToolsFramework const int viewportId = mouseInteraction.m_mouseInteraction.m_interactionId.m_viewportId; - // set the widget context before calls to ViewportWorldToScreen so we are not - // going to constantly be pushing/popping the widget context - ViewportInteraction::WidgetContextGuard widgetContextGuard(viewportId); - const bool helpersVisible = HelpersVisible(); // selecting new entities @@ -145,7 +142,7 @@ namespace AzToolsFramework const AZ::Vector3& entityPosition = m_entityDataCache->GetVisibleEntityPosition(entityCacheIndex); // selecting based on 2d icon - should only do it when visible and not selected - const AzFramework::ScreenPoint screenPosition = GetScreenPosition(viewportId, entityPosition); + const AzFramework::ScreenPoint screenPosition = AzFramework::WorldToScreen(entityPosition, cameraState); const float distSqFromCamera = cameraState.m_position.GetDistanceSq(entityPosition); const auto iconRange = static_cast(GetIconScale(distSqFromCamera) * s_iconSize * 0.5f); diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorSelectionUtil.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorSelectionUtil.cpp index f4b68b5970..a5ef66e7a3 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorSelectionUtil.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorSelectionUtil.cpp @@ -48,18 +48,6 @@ namespace AzToolsFramework return AZ::GetMax(projectedCameraDistance, cameraState.m_nearClip) / apparentDistance; } - AzFramework::ScreenPoint GetScreenPosition(const int viewportId, const AZ::Vector3& worldTranslation) - { - AZ_PROFILE_FUNCTION(AzToolsFramework); - - auto screenPosition = AzFramework::ScreenPoint(0, 0); - ViewportInteraction::ViewportInteractionRequestBus::EventResult( - screenPosition, viewportId, &ViewportInteraction::ViewportInteractionRequestBus::Events::ViewportWorldToScreen, - worldTranslation); - - return screenPosition; - } - bool AabbIntersectRay(const AZ::Vector3& origin, const AZ::Vector3& direction, const AZ::Aabb& aabb, float& distance) { AZ_PROFILE_FUNCTION(AzToolsFramework); diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorSelectionUtil.h b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorSelectionUtil.h index ec9bde9f9c..d58549b329 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorSelectionUtil.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorSelectionUtil.h @@ -39,9 +39,6 @@ namespace AzToolsFramework //! Calculate scale factor based on distance from camera float CalculateScreenToWorldMultiplier(const AZ::Vector3& worldPosition, const AzFramework::CameraState& cameraState); - //! Map from world space to screen space. - AzFramework::ScreenPoint GetScreenPosition(int viewportId, const AZ::Vector3& worldTranslation); - //! Given a mouse interaction, determine if the pick ray from its position //! in screen space intersected an aabb in world space. bool AabbIntersectMouseRay(const ViewportInteraction::MouseInteraction& mouseInteraction, const AZ::Aabb& aabb); diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.cpp index afcade944a..6442559ede 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.cpp @@ -412,10 +412,7 @@ namespace AzToolsFramework potentialSelectedEntityIds.clear(); } - // set the widget context before calls to ViewportWorldToScreen so we are not - // going to constantly be pushing/popping the widget context - ViewportInteraction::WidgetContextGuard widgetContextGuard(viewportId); - + const AzFramework::CameraState cameraState = GetCameraState(viewportId); for (size_t entityCacheIndex = 0; entityCacheIndex < entityDataCache.VisibleEntityDataCount(); ++entityCacheIndex) { if (entityDataCache.IsVisibleEntityLocked(entityCacheIndex) || !entityDataCache.IsVisibleEntityVisible(entityCacheIndex)) @@ -426,7 +423,7 @@ namespace AzToolsFramework const AZ::EntityId entityId = entityDataCache.GetVisibleEntityId(entityCacheIndex); const AZ::Vector3& entityPosition = entityDataCache.GetVisibleEntityPosition(entityCacheIndex); - const AzFramework::ScreenPoint screenPosition = GetScreenPosition(viewportId, entityPosition); + const AzFramework::ScreenPoint screenPosition = AzFramework::WorldToScreen(entityPosition, cameraState); if (currentKeyboardModifiers.Ctrl()) { @@ -1779,13 +1776,7 @@ namespace AzToolsFramework CheckDirtyEntityIds(); - const int viewportId = mouseInteraction.m_mouseInteraction.m_interactionId.m_viewportId; - - const AzFramework::CameraState cameraState = GetCameraState(viewportId); - - // set the widget context before calls to ViewportWorldToScreen so we are not - // going to constantly be pushing/popping the widget context - ViewportInteraction::WidgetContextGuard widgetContextGuard(viewportId); + const AzFramework::CameraState cameraState = GetCameraState(mouseInteraction.m_mouseInteraction.m_interactionId.m_viewportId); m_cachedEntityIdUnderCursor = m_editorHelpers->HandleMouseInteraction(cameraState, mouseInteraction); diff --git a/Gems/PhysX/Code/Editor/EditorViewportEntityPicker.cpp b/Gems/PhysX/Code/Editor/EditorViewportEntityPicker.cpp index 605e6f213f..7f46f961f2 100644 --- a/Gems/PhysX/Code/Editor/EditorViewportEntityPicker.cpp +++ b/Gems/PhysX/Code/Editor/EditorViewportEntityPicker.cpp @@ -6,12 +6,12 @@ * SPDX-License-Identifier: Apache-2.0 OR MIT * */ + #include #include #include #include #include - #include namespace PhysX @@ -28,17 +28,13 @@ namespace PhysX } AZ::EntityId EditorViewportEntityPicker::PickEntity( - [[maybe_unused]] const AzFramework::CameraState& cameraState - , const AzToolsFramework::ViewportInteraction::MouseInteractionEvent& mouseInteraction - , AZ::Vector3& pickPosition - , AZ::Aabb& pickAabb) - { + [[maybe_unused]] const AzFramework::CameraState& cameraState, + const AzToolsFramework::ViewportInteraction::MouseInteractionEvent& mouseInteraction, + AZ::Vector3& pickPosition, + AZ::Aabb& pickAabb) + { const int viewportId = mouseInteraction.m_mouseInteraction.m_interactionId.m_viewportId; - // set the widget context before calls to ViewportWorldToScreen so we are not - // going to constantly be pushing/popping the widget context - AzToolsFramework::ViewportInteraction::WidgetContextGuard widgetContextGuard(viewportId); - // selecting new entities AZ::EntityId entityIdUnderCursor; pickPosition = AZ::Vector3::CreateZero(); @@ -48,31 +44,29 @@ namespace PhysX { const AZ::EntityId entityId = m_entityDataCache->GetVisibleEntityId(entityCacheIndex); - if (m_entityDataCache->IsVisibleEntityLocked(entityCacheIndex) - || !m_entityDataCache->IsVisibleEntityVisible(entityCacheIndex)) + if (m_entityDataCache->IsVisibleEntityLocked(entityCacheIndex) || !m_entityDataCache->IsVisibleEntityVisible(entityCacheIndex)) { continue; } // Ignore the case where the mouse hovers over an icon. Proceed to check for intersection with entity's AABB. - if (const AZ::Aabb aabb = AzToolsFramework::CalculateEditorEntitySelectionBounds( - entityId, AzFramework::ViewportInfo{viewportId}); + if (const AZ::Aabb aabb = + AzToolsFramework::CalculateEditorEntitySelectionBounds(entityId, AzFramework::ViewportInfo{ viewportId }); aabb.IsValid()) { const float pickRayLength = 1000.0f; - const AZ::Vector3 rayScaledDir = - mouseInteraction.m_mouseInteraction.m_mousePick.m_rayDirection * pickRayLength; + const AZ::Vector3 rayScaledDir = mouseInteraction.m_mouseInteraction.m_mousePick.m_rayDirection * pickRayLength; AZ::Vector3 startNormal; float t, end; int intersectResult = AZ::Intersect::IntersectRayAABB( - mouseInteraction.m_mouseInteraction.m_mousePick.m_rayOrigin, rayScaledDir, - rayScaledDir.GetReciprocal(), aabb, t, end, startNormal); + mouseInteraction.m_mouseInteraction.m_mousePick.m_rayOrigin, rayScaledDir, rayScaledDir.GetReciprocal(), aabb, t, end, + startNormal); if (intersectResult > 0) { entityIdUnderCursor = entityId; - pickPosition = mouseInteraction.m_mouseInteraction.m_mousePick.m_rayOrigin - + (mouseInteraction.m_mouseInteraction.m_mousePick.m_rayDirection * pickRayLength * t); + pickPosition = mouseInteraction.m_mouseInteraction.m_mousePick.m_rayOrigin + + (mouseInteraction.m_mouseInteraction.m_mousePick.m_rayDirection * pickRayLength * t); pickAabb = aabb; } } @@ -82,10 +76,8 @@ namespace PhysX } void EditorViewportEntityPicker::DisplayViewport( - const AzFramework::ViewportInfo& viewportInfo, - AzFramework::DebugDisplayRequests& debugDisplay) + const AzFramework::ViewportInfo& viewportInfo, [[maybe_unused]] AzFramework::DebugDisplayRequests& debugDisplay) { - AZ_UNUSED(debugDisplay); m_entityDataCache->CalculateVisibleEntityDatas(viewportInfo); } } // namespace PhysX