Plasma Engine  2.0
Loading...
Searching...
No Matches
TransformGizmoActions.h
1#pragma once
2
3#include <EditorFramework/EditorFrameworkDLL.h>
4#include <GuiFoundation/Action/BaseActions.h>
5#include <GuiFoundation/GuiFoundationDLL.h>
6
7enum class ActiveGizmo;
11
13class PL_EDITORFRAMEWORK_DLL plTransformGizmoActions
14{
15public:
16 static void RegisterActions();
17 static void UnregisterActions();
18
19 static void MapMenuActions(plStringView sMapping);
20 static void MapToolbarActions(plStringView sMapping);
21
22 static plActionDescriptorHandle s_hGizmoCategory;
23 static plActionDescriptorHandle s_hGizmoMenu;
24 static plActionDescriptorHandle s_hNoGizmo;
25 static plActionDescriptorHandle s_hTranslateGizmo;
26 static plActionDescriptorHandle s_hRotateGizmo;
27 static plActionDescriptorHandle s_hScaleGizmo;
28 static plActionDescriptorHandle s_hDragToPositionGizmo;
29 static plActionDescriptorHandle s_hWorldSpace;
30 static plActionDescriptorHandle s_hMoveParentOnly;
31 static plActionDescriptorHandle s_SnapSettings;
32};
33
35class PL_EDITORFRAMEWORK_DLL plGizmoAction : public plButtonAction
36{
37 PL_ADD_DYNAMIC_REFLECTION(plGizmoAction, plButtonAction);
38
39public:
40 plGizmoAction(const plActionContext& context, const char* szName, const plRTTI* pGizmoType);
42
43 virtual void Execute(const plVariant& value) override;
44
45protected:
46 void UpdateState();
47 void GameObjectEventHandler(const plGameObjectEvent& e);
48
49 plGameObjectDocument* m_pGameObjectDocument = nullptr;
50 const plRTTI* m_pGizmoType = nullptr;
51};
52
54class PL_EDITORFRAMEWORK_DLL plToggleWorldSpaceGizmo : public plGizmoAction
55{
56public:
57 plToggleWorldSpaceGizmo(const plActionContext& context, const char* szName, const plRTTI* pGizmoType);
58 virtual void Execute(const plVariant& value) override;
59};
60
62class PL_EDITORFRAMEWORK_DLL plTransformGizmoAction : public plButtonAction
63{
64 PL_ADD_DYNAMIC_REFLECTION(plTransformGizmoAction, plButtonAction);
65
66public:
67 enum class ActionType
68 {
69 GizmoToggleWorldSpace,
70 GizmoToggleMoveParentOnly,
71 GizmoSnapSettings,
72 };
73
74 plTransformGizmoAction(const plActionContext& context, const char* szName, ActionType type);
76
77 virtual void Execute(const plVariant& value) override;
78 void GameObjectEventHandler(const plGameObjectEvent& e);
79
80private:
81 void UpdateState();
82
83 plGameObjectDocument* m_pGameObjectDocument;
84 ActionType m_Type;
85};
86
88class PL_EDITORFRAMEWORK_DLL plTranslateGizmoAction : public plButtonAction
89{
90 PL_ADD_DYNAMIC_REFLECTION(plTranslateGizmoAction, plButtonAction);
91
92public:
93 static void RegisterActions();
94 static void UnregisterActions();
95
96 static void MapActions(plStringView sMapping);
97
98private:
99 static plActionDescriptorHandle s_hSnappingValueMenu;
100 static plActionDescriptorHandle s_hSnapPivotToGrid;
101 static plActionDescriptorHandle s_hSnapObjectsToGrid;
102
103public:
104 enum class ActionType
105 {
106 SnapSelectionPivotToGrid,
107 SnapEachSelectedObjectToGrid,
108 };
109
110 plTranslateGizmoAction(const plActionContext& context, const char* szName, ActionType type);
111
112 virtual void Execute(const plVariant& value) override;
113
114private:
115 const plGameObjectDocument* m_pSceneDocument;
116 ActionType m_Type;
117};
Handle for a plAction.
Definition Action.h:27
Definition BaseActions.h:159
Definition GameObjectDocument.h:95
Definition TransformGizmoActions.h:36
This class holds information about reflected types. Each instance represents one type that is known t...
Definition RTTI.h:30
plStringView represent a read-only sub-string of a larger string, as it can store a dedicated string ...
Definition StringView.h:34
Definition TransformGizmoActions.h:55
Definition TransformGizmoActions.h:63
Definition TransformGizmoActions.h:14
Definition TransformGizmoActions.h:89
plVariant is a class that can store different types of variables, which is useful in situations where...
Definition Variant.h:44
Definition Action.h:67
Definition GameObjectDocument.h:28
Definition SnapProvider.h:11