XII Release 0.1.0
Loading...
Searching...
No Matches
xiiQtEngineViewWidget Class Reference

Base class for views that show engine output. More...

#include <EngineViewWidget.moc.h>

Inheritance diagram for xiiQtEngineViewWidget:
[legend]

Classes

struct  InteractionContext
 Holds information about the viewport that the user just now hovered over and what object was picked last. More...

Public Member Functions

 xiiQtEngineViewWidget (QWidget *pParent, xiiQtEngineDocumentWindow *pDocumentWindow, xiiEngineViewConfig *pViewConfig)
xiiUInt32 GetViewID () const
 Returns the ID of this view.
xiiQtEngineDocumentWindow * GetDocumentWindow () const
virtual void SyncToEngine ()
 Sends the redraw message to the engine.
void GetCameraMatrices (xiiMat4 &out_mViewMatrix, xiiMat4 &out_mProjectionMatrix) const
void UpdateCameraInterpolation ()
 Called every frame to move the camera to its current target (focus on selection, etc.).
void InterpolateCameraTo (const xiiVec3 &vPosition, const xiiVec3 &vDirection, float fFovOrDim, const xiiVec3 *pNewUpDirection=nullptr, bool bImmediate=false)
 The view's camera will be interpolated to the given coordinates.
void SetEnablePicking (bool bEnable)
void SetPickTransparent (bool bEnable)
virtual bool IsPickingAgainstSelectionAllowed () const
 Disabled during drag&drop operations, to prevent picking against the dragged object.
void OpenContextMenu (QPoint globalPos)
 Supposed to open a context menu at the given position. Derived classes must implement OnOpenContextMenu and do the actual work there.
const xiiObjectPickingResult & PickObject (xiiUInt16 uiScreenPosX, xiiUInt16 uiScreenPosY) const
 Starts a picking operation for the given pixel position in this view. Returns the most recent picking information in the meantime.
xiiResult PickPlane (xiiUInt16 uiScreenPosX, xiiUInt16 uiScreenPosY, const xiiPlane &plane, xiiVec3 &out_vPosition) const
 Similar to PickObject, but computes the intersection with the given plane instead.
void HandleViewMessage (const xiiEditorEngineViewMsg *pMsg)
 Processes incoming messages from the engine that are meant for this particular view. Mostly picking results.
virtual xiiPlane GetFallbackPickingPlane (xiiVec3 vPointOnPlane=xiiVec3(0)) const
void TakeScreenshot (xiiStringView sOutputPath) const

Static Public Member Functions

static const InteractionContext & GetInteractionContext ()
 Returns the latest information about what viewport the user interacted with.
static void SetInteractionContext (const InteractionContext &ctxt)
 Overrides the InteractionContext with custom values. Mostly useful for injecting procedural user interaction for unit tests.

Public Attributes

xiiHybridArray< xiiEditorInputContext *, 8 > m_InputContexts
 Add input contexts in the order in which they are supposed to be processed.
xiiEngineViewConfig * m_pViewConfig

Static Public Attributes

static xiiSizeU32 s_FixedResolution

Protected Member Functions

virtual bool eventFilter (QObject *object, QEvent *event) override
 Used to deactivate shortcuts.
virtual void paintEvent (QPaintEvent *event) override
virtual QPaintEngine * paintEngine () const override
virtual void resizeEvent (QResizeEvent *event) override
virtual void keyPressEvent (QKeyEvent *e) override
virtual void keyReleaseEvent (QKeyEvent *e) override
virtual void mousePressEvent (QMouseEvent *e) override
virtual void mouseReleaseEvent (QMouseEvent *e) override
virtual void mouseMoveEvent (QMouseEvent *e) override
virtual void wheelEvent (QWheelEvent *e) override
virtual void focusOutEvent (QFocusEvent *e) override
virtual void dragEnterEvent (QDragEnterEvent *e) override
virtual void dragLeaveEvent (QDragLeaveEvent *e) override
virtual void dropEvent (QDropEvent *e) override
void EngineViewProcessEventHandler (const xiiEditorEngineProcessConnection::Event &e)
void ShowRestartButton (bool bShow)
void RecreateEngineViewport ()
virtual void OnOpenContextMenu (QPoint globalPos)
virtual void HandleMarqueePickingResult (const xiiViewMarqueePickingResultMsgToEditor *pMsg)

Protected Attributes

bool m_bUpdatePickingData
bool m_bPickTransparent = true
bool m_bInDragAndDropOperation
xiiUInt32 m_uiViewID
xiiQtEngineDocumentWindow * m_pDocumentWindow = nullptr
float m_fCameraLerp
float m_fCameraStartFovOrDim
float m_fCameraTargetFovOrDim
xiiVec3 m_vCameraStartPosition
xiiVec3 m_vCameraTargetPosition
xiiVec3 m_vCameraStartDirection
xiiVec3 m_vCameraTargetDirection
xiiVec3 m_vCameraUp
xiiTime m_LastCameraUpdate
QHBoxLayout * m_pMainLayout = nullptr
QPushButton * m_pRestartButton = nullptr
QWidget * m_pViewportWidget = nullptr
xiiObjectPickingResult m_LastPickingResult

Static Protected Attributes

static xiiUInt32 s_uiNextViewID = 0
 Copyright (c) Theophilus Eriata. All Rights Reserved.
static InteractionContext s_InteractionContext

Detailed Description

Base class for views that show engine output.

Member Function Documentation

◆ GetFallbackPickingPlane()

xiiPlane xiiQtEngineViewWidget::GetFallbackPickingPlane ( xiiVec3 vPointOnPlane = xiiVec3(0)) const
virtual

Returns a plane that can be used for picking, when nothing else is available Orthographic views would typically return their projection planes, perspective views may return the ground plane

◆ IsPickingAgainstSelectionAllowed()

virtual bool xiiQtEngineViewWidget::IsPickingAgainstSelectionAllowed ( ) const
inlinevirtual

Disabled during drag&drop operations, to prevent picking against the dragged object.

Reimplemented in xiiQtSceneViewWidget.

◆ SetEnablePicking()

void xiiQtEngineViewWidget::SetEnablePicking ( bool bEnable)

If disabled, no picking takes place in this view.

Disabled in views that do not need picking (material asset, particle asset, etc.) and when the mouse is outside a view, to prevent useless picking.

◆ SyncToEngine()

void xiiQtEngineViewWidget::SyncToEngine ( )
virtual

Sends the redraw message to the engine.

Reimplemented in xiiQtGameObjectViewWidget, and xiiQtOrbitCamViewWidget.

◆ UpdateCameraInterpolation()

void xiiQtEngineViewWidget::UpdateCameraInterpolation ( )

Called every frame to move the camera to its current target (focus on selection, etc.).

Todo
Hard coded up vector

Member Data Documentation

◆ s_FixedResolution

xiiSizeU32 xiiQtEngineViewWidget::s_FixedResolution
static

If this is set to a non-zero value, all rendering will use a fixed resolution, instead of the actual window size. This is useful for unit tests, to guarantee a specific output size, to be able to do image comparisons.


The documentation for this class was generated from the following files:
  • /home/runner/work/XII/XII/Source/Editor/EditorFramework/DocumentWindow/EngineViewWidget.moc.h
  • /home/runner/work/XII/XII/Source/Editor/EditorFramework/DocumentWindow/Implementation/EngineViewWidget.cpp