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 <hultonha@amazon.co.uk>

* remove additional pre/post widget render calls that are no longer required

Signed-off-by: hultonha <hultonha@amazon.co.uk>
This commit is contained in:
hultonha
2021-09-13 09:36:34 +01:00
committed by GitHub
parent 51ce59e240
commit 28d45891f2
12 changed files with 42 additions and 186 deletions
+16 -48
View File
@@ -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