Plasma Engine  2.0
Loading...
Searching...
No Matches
NonUniformBoxGizmo.h
1#pragma once
2
3#include <EditorEngineProcessFramework/Gizmos/GizmoHandle.h>
4#include <EditorFramework/Gizmos/GizmoBase.h>
5#include <QPoint>
6#include <ToolsFoundation/ToolsFoundationDLL.h>
7
8class PL_EDITORFRAMEWORK_DLL plNonUniformBoxGizmo : public plGizmo
9{
10 PL_ADD_DYNAMIC_REFLECTION(plNonUniformBoxGizmo, plGizmo);
11
12public:
14
15 void SetSize(const plVec3& vNegSize, const plVec3& vPosSize, bool bLinkAxis = false);
16
17 const plVec3& GetNegSize() const { return m_vNegSize; }
18 const plVec3& GetPosSize() const { return m_vPosSize; }
19
20protected:
21 virtual void DoFocusLost(bool bCancel) override;
22
23 virtual plEditorInput DoMousePressEvent(QMouseEvent* e) override;
24 virtual plEditorInput DoMouseReleaseEvent(QMouseEvent* e) override;
25 virtual plEditorInput DoMouseMoveEvent(QMouseEvent* e) override;
26
27 virtual void OnSetOwner(plQtEngineDocumentWindow* pOwnerWindow, plQtEngineViewWidget* pOwnerView) override;
28 virtual void OnVisibleChanged(bool bVisible) override;
29 virtual void OnTransformationChanged(const plTransform& transform) override;
30
31private:
32 plResult GetPointOnAxis(plInt32 iScreenPosX, plInt32 iScreenPosY, plVec3& out_Result) const;
33
34 plTime m_LastInteraction;
35 plMat4 m_mInvViewProj;
36
37 plVec2I32 m_vLastMousePos;
38
39 plEngineGizmoHandle m_hOutline;
40 plEngineGizmoHandle m_Nobs[6];
41 plVec3 m_vMainAxis[6];
42
43 enum ManipulateMode
44 {
45 None = -1,
46 DragNegX,
47 DragPosX,
48 DragNegY,
49 DragPosY,
50 DragNegZ,
51 DragPosZ,
52 };
53
54 ManipulateMode m_ManipulateMode = ManipulateMode::None;
55
56 plVec3 m_vNegSize;
57 plVec3 m_vPosSize;
58 plVec3 m_vStartNegSize;
59 plVec3 m_vStartPosSize;
60 plVec3 m_vMoveAxis;
61 plVec3 m_vStartPosition;
62 plVec3 m_vInteractionPivot;
63 float m_fStartScale = 1.0f;
64 bool m_bLinkAxis = false;
65};
Definition GizmoHandle.h:90
Definition GizmoBase.h:25
Definition NonUniformBoxGizmo.h:9
Base class for all document windows that need a connection to the engine process, and might want to r...
Definition EngineDocumentWindow.moc.h:37
Base class for views that show engine output.
Definition EngineViewWidget.moc.h:34
Default enum for returning failure or success, instead of using a bool.
Definition Types.h:54
The time class encapsulates a double value storing the time in seconds.
Definition Time.h:12