Plasma Engine  2.0
Loading...
Searching...
No Matches
GizmoBase.h
1#pragma once
2
3#include <EditorEngineProcessFramework/Gizmos/GizmoHandle.h>
4#include <EditorFramework/InputContexts/EditorInputContext.h>
5#include <Foundation/Logging/Log.h>
6#include <ToolsFoundation/ToolsFoundationDLL.h>
7
8class plCamera;
9
11{
12 enum class Type
13 {
14 BeginInteractions,
15 EndInteractions,
16 Interaction,
17 CancelInteractions,
18 };
19
20 const plEditorInputContext* m_pGizmo = nullptr;
21 Type m_Type;
22};
23
24class PL_EDITORFRAMEWORK_DLL plGizmo : public plEditorInputContext
25{
26 PL_ADD_DYNAMIC_REFLECTION(plGizmo, plEditorInputContext);
27
28public:
29 plGizmo();
30
31 void SetVisible(bool bVisible);
32 bool IsVisible() const { return m_bVisible; }
33
34 void SetTransformation(const plTransform& transform);
35 const plTransform& GetTransformation() const { return m_Transformation; }
36
37 void ConfigureInteraction(plGizmoHandle* pHandle, const plCamera* pCamera, const plVec3& vInteractionPivot, const plVec2I32& vViewport)
38 {
39 m_pInteractionGizmoHandle = pHandle;
40 m_pCamera = pCamera;
41 m_vInteractionPivot = vInteractionPivot;
42 m_vViewport = vViewport;
43 }
44
45 plEvent<const plGizmoEvent&> m_GizmoEvents;
46
47protected:
48 virtual void OnVisibleChanged(bool bVisible) = 0;
49 virtual void OnTransformationChanged(const plTransform& transform) = 0;
50
51 const plCamera* m_pCamera;
52 plGizmoHandle* m_pInteractionGizmoHandle;
53 plVec3 m_vInteractionPivot;
54 plVec2I32 m_vViewport;
55
56private:
57 bool m_bVisible;
58 plTransform m_Transformation;
59};
A camera class that stores the orientation and some basic camera settings.
Definition Camera.h:41
Definition EditorInputContext.h:22
Definition Event.h:177
Definition GizmoHandle.h:13
Definition GizmoBase.h:25
Definition GizmoBase.h:11