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.
 
xiiQtEngineDocumentWindowGetDocumentWindow () 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)
 If disabled, no picking takes place in this view.
 
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 xiiObjectPickingResultPickObject (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
 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.
 
void TakeScreenshot (xiiStringView sOutputPath) const
 

Static Public Member Functions

static const InteractionContextGetInteractionContext ()
 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.
 
xiiEngineViewConfigm_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
 
xiiQtEngineDocumentWindowm_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
 
static InteractionContext s_InteractionContext
 

Detailed Description

Base class for views that show engine output.

Member Function Documentation

◆ 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: