Plasma Engine  2.0
Loading...
Searching...
No Matches
plQtEngineViewWidget Class Reference

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

#include <EngineViewWidget.moc.h>

Inheritance diagram for plQtEngineViewWidget:

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

 plQtEngineViewWidget (QWidget *pParent, plQtEngineDocumentWindow *pDocumentWindow, plEngineViewConfig *pViewConfig)
 
plUInt32 GetViewID () const
 Returns the ID of this view.
 
plQtEngineDocumentWindowGetDocumentWindow () const
 
virtual void SyncToEngine ()
 Sends the redraw message to the engine.
 
void GetCameraMatrices (plMat4 &out_mViewMatrix, plMat4 &out_mProjectionMatrix) const
 
void UpdateCameraInterpolation ()
 Called every frame to move the camera to its current target (focus on selection, etc.)
 
void InterpolateCameraTo (const plVec3 &vPosition, const plVec3 &vDirection, float fFovOrDim, const plVec3 *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 plObjectPickingResultPickObject (plUInt16 uiScreenPosX, plUInt16 uiScreenPosY) const
 Starts a picking operation for the given pixel position in this view. Returns the most recent picking information in the meantime.
 
plResult PickPlane (plUInt16 uiScreenPosX, plUInt16 uiScreenPosY, const plPlane &plane, plVec3 &out_vPosition) const
 Similar to PickObject, but computes the intersection with the given plane instead.
 
void HandleViewMessage (const plEditorEngineViewMsg *pMsg)
 Processes incoming messages from the engine that are meant for this particular view. Mostly picking results.
 
virtual plPlane GetFallbackPickingPlane (plVec3 vPointOnPlane=plVec3(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 (const char *szOutputPath) 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

plHybridArray< plEditorInputContext *, 8 > m_InputContexts
 Add input contexts in the order in which they are supposed to be processed.
 
plEngineViewConfigm_pViewConfig
 

Static Public Attributes

static plSizeU32 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 plEditorEngineProcessConnection::Event &e)
 
void ShowRestartButton (bool bShow)
 
virtual void OnOpenContextMenu (QPoint globalPos)
 
virtual void HandleMarqueePickingResult (const plViewMarqueePickingResultMsgToEditor *pMsg)
 

Protected Attributes

bool m_bUpdatePickingData
 
bool m_bPickTransparent = true
 
bool m_bInDragAndDropOperation
 
plUInt32 m_uiViewID
 
plQtEngineDocumentWindowm_pDocumentWindow
 
float m_fCameraLerp
 
float m_fCameraStartFovOrDim
 
float m_fCameraTargetFovOrDim
 
plVec3 m_vCameraStartPosition
 
plVec3 m_vCameraTargetPosition
 
plVec3 m_vCameraStartDirection
 
plVec3 m_vCameraTargetDirection
 
plVec3 m_vCameraUp
 
plTime m_LastCameraUpdate
 
QHBoxLayout * m_pRestartButtonLayout
 
QPushButton * m_pRestartButton
 
plObjectPickingResult m_LastPickingResult
 

Static Protected Attributes

static plUInt32 s_uiNextViewID = 0
 
static InteractionContext s_InteractionContext
 

Detailed Description

Base class for views that show engine output.

Member Function Documentation

◆ IsPickingAgainstSelectionAllowed()

virtual bool plQtEngineViewWidget::IsPickingAgainstSelectionAllowed ( ) const
inlinevirtual

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

Reimplemented in plQtSceneViewWidget.

◆ SetEnablePicking()

void plQtEngineViewWidget::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 plQtEngineViewWidget::SyncToEngine ( )
virtual

Sends the redraw message to the engine.

Reimplemented in plQtGameObjectViewWidget, and plQtOrbitCamViewWidget.

◆ UpdateCameraInterpolation()

void plQtEngineViewWidget::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

plSizeU32 plQtEngineViewWidget::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: