Merge branch 'development' into cmake/warn_virtual

Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com>

# Conflicts:
#	Code/Editor/Viewport.h
This commit is contained in:
Esteban Papp
2021-09-13 08:59:24 -07:00
189 changed files with 325 additions and 358 deletions
+20 -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,14 @@ 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())), QueryKeyboardModifiers(),
BuildMousePick(WidgetToViewport(mapFromGlobal(QCursor::pos())))));
m_debugDisplay->DepthTestOn();
}
}
@@ -950,8 +932,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 +944,6 @@ AZ::EntityId EditorViewportWidget::PickEntity(const AzFramework::ScreenPoint& po
}
}
PostWidgetRendering();
return entityId;
}
@@ -999,28 +977,22 @@ 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 QueryKeyboardModifiers().Shift();
}
AzToolsFramework::ViewportInteraction::KeyboardModifiers EditorViewportWidget::QueryKeyboardModifiers()
{
return AzToolsFramework::ViewportInteraction::BuildKeyboardModifiers(QGuiApplication::queryKeyboardModifiers());
}
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
+6 -5
View File
@@ -92,6 +92,7 @@ class SANDBOX_API EditorViewportWidget final
, private AzToolsFramework::ViewportInteraction::ViewportFreezeRequestBus::Handler
, private AzToolsFramework::ViewportInteraction::MainEditorViewportInteractionRequestBus::Handler
, private AzToolsFramework::ViewportInteraction::EditorEntityViewportInteractionRequestBus::Handler
, private AzToolsFramework::ViewportInteraction::EditorModifierKeyRequestBus::Handler
, private AzFramework::AssetCatalogEventBus::Handler
, private AZ::RPI::SceneNotificationBus::Handler
{
@@ -205,18 +206,19 @@ private:
bool IsViewportInputFrozen() override;
void FreezeViewportInput(bool freeze) override;
// AzToolsFramework::MainEditorViewportInteractionRequestBus
// AzToolsFramework::MainEditorViewportInteractionRequestBus overrides ...
AZ::EntityId PickEntity(const AzFramework::ScreenPoint& point) override;
AZ::Vector3 PickTerrain(const AzFramework::ScreenPoint& point) override;
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<AZ::EntityId>& visibleEntities) override;
// EditorModifierKeyRequestBus overrides ...
AzToolsFramework::ViewportInteraction::KeyboardModifiers QueryKeyboardModifiers() override;
// Camera::EditorCameraRequestBus overrides ...
void SetViewFromEntityPerspective(const AZ::EntityId& entityId) override;
void SetViewAndMovementLockFromEntityPerspective(const AZ::EntityId& entityId, bool lockCameraMovement) override;
@@ -271,7 +273,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 +283,6 @@ private:
void PushDisableRendering();
void PopDisableRendering();
bool IsRenderingDisabled() const;
AzToolsFramework::ViewportInteraction::MousePick BuildMousePickInternal(const QPoint& point) const;
void RestoreViewportAfterGameMode();
-7
View File
@@ -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);
-27
View File
@@ -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.
//////////////////////////////////////////////////////////////////////////
+2 -14
View File
@@ -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() {}
CViewport *asCViewport() override { 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
@@ -428,7 +422,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 override { return m_selectionTolerance; }
//! Center viewport on selection.
void CenterOnSelection() override {}
@@ -573,12 +567,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.
void PreWidgetRendering() override {}
void PostWidgetRendering() override {}
AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
AzToolsFramework::ViewportUi::ViewportUiManager m_viewportUi;
AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING