Plasma Engine  2.0
Loading...
Searching...
No Matches
TreeCommands.h
1#pragma once
2
3#include <ToolsFoundation/Command/Command.h>
4#include <ToolsFoundation/Document/Document.h>
5#include <ToolsFoundation/ToolsFoundationDLL.h>
6
10
11class PL_TOOLSFOUNDATION_DLL plAddObjectCommand : public plCommand
12{
13 PL_ADD_DYNAMIC_REFLECTION(plAddObjectCommand, plCommand);
14
15public:
17
18public: // Properties
19 void SetType(plStringView sType);
20 plStringView GetType() const;
21
22 const plRTTI* m_pType = nullptr;
23 plUuid m_Parent;
24 plString m_sParentProperty;
25 plVariant m_Index;
27
28private:
29 virtual bool HasReturnValues() const override { return true; }
30 virtual plStatus DoInternal(bool bRedo) override;
31 virtual plStatus UndoInternal(bool bFireEvents) override;
32 virtual void CleanupInternal(CommandState state) override;
33
34private:
35 plDocumentObject* m_pObject = nullptr;
36};
37
41
42
43class PL_TOOLSFOUNDATION_DLL plPasteObjectsCommand : public plCommand
44{
45 PL_ADD_DYNAMIC_REFLECTION(plPasteObjectsCommand, plCommand);
46
47public:
49
50public: // Properties
51 plUuid m_Parent;
52 plString m_sGraphTextFormat;
53 plString m_sMimeType;
54 bool m_bAllowPickedPosition = true;
55
56private:
57 virtual plStatus DoInternal(bool bRedo) override;
58 virtual plStatus UndoInternal(bool bFireEvents) override;
59 virtual void CleanupInternal(CommandState state) override;
60
61private:
62 struct PastedObject
63 {
64 plDocumentObject* m_pObject;
65 plDocumentObject* m_pParent;
66 plString m_sParentProperty;
67 plVariant m_Index;
68 };
69
70 plHybridArray<PastedObject, 4> m_PastedObjects;
71};
72
76
77class PL_TOOLSFOUNDATION_DLL plInstantiatePrefabCommand : public plCommand
78{
79 PL_ADD_DYNAMIC_REFLECTION(plInstantiatePrefabCommand, plCommand);
80
81public:
83
84public: // Properties
85 plUuid m_Parent;
86 plInt32 m_Index = -1;
87 plUuid m_CreateFromPrefab;
88 plUuid m_RemapGuid;
89 plString m_sBasePrefabGraph;
90 plString m_sObjectGraph;
91 plUuid m_CreatedRootObject;
92 bool m_bAllowPickedPosition;
93
94private:
95 virtual bool HasReturnValues() const override { return true; }
96 virtual plStatus DoInternal(bool bRedo) override;
97 virtual plStatus UndoInternal(bool bFireEvents) override;
98 virtual void CleanupInternal(CommandState state) override;
99
100private:
101 struct PastedObject
102 {
103 plDocumentObject* m_pObject;
104 plDocumentObject* m_pParent;
105 plString m_sParentProperty;
106 plVariant m_Index;
107 };
108
109 // at the moment this array always only holds a single item, the group node for the prefab
110 plHybridArray<PastedObject, 4> m_PastedObjects;
111};
112
116
117class PL_TOOLSFOUNDATION_DLL plUnlinkPrefabCommand : public plCommand
118{
119 PL_ADD_DYNAMIC_REFLECTION(plUnlinkPrefabCommand, plCommand);
120
121public:
122 plUnlinkPrefabCommand() = default;
123
124 plUuid m_Object;
125
126private:
127 virtual bool HasReturnValues() const override { return false; }
128 virtual plStatus DoInternal(bool bRedo) override;
129 virtual plStatus UndoInternal(bool bFireEvents) override;
130 virtual void CleanupInternal(CommandState state) override {}
131
132private:
133 plUuid m_OldCreateFromPrefab;
134 plUuid m_OldRemapGuid;
135 plString m_sOldGraphTextFormat;
136};
137
141
142class PL_TOOLSFOUNDATION_DLL plRemoveObjectCommand : public plCommand
143{
144 PL_ADD_DYNAMIC_REFLECTION(plRemoveObjectCommand, plCommand);
145
146public:
148
149public: // Properties
150 plUuid m_Object;
151
152private:
153 virtual plStatus DoInternal(bool bRedo) override;
154 virtual plStatus UndoInternal(bool bFireEvents) override;
155 virtual void CleanupInternal(CommandState state) override;
156
157private:
158 plDocumentObject* m_pParent = nullptr;
159 plString m_sParentProperty;
160 plVariant m_Index;
161 plDocumentObject* m_pObject = nullptr;
162};
163
167
168class PL_TOOLSFOUNDATION_DLL plMoveObjectCommand : public plCommand
169{
170 PL_ADD_DYNAMIC_REFLECTION(plMoveObjectCommand, plCommand);
171
172public:
174
175public: // Properties
176 plUuid m_Object;
177 plUuid m_NewParent;
178 plString m_sParentProperty;
179 plVariant m_Index;
180
181private:
182 virtual plStatus DoInternal(bool bRedo) override;
183 virtual plStatus UndoInternal(bool bFireEvents) override;
184 virtual void CleanupInternal(CommandState state) override {}
185
186private:
187 plDocumentObject* m_pObject;
188 plDocumentObject* m_pOldParent;
189 plDocumentObject* m_pNewParent;
190 plString m_sOldParentProperty;
191 plVariant m_OldIndex;
192};
193
197
198class PL_TOOLSFOUNDATION_DLL plSetObjectPropertyCommand : public plCommand
199{
200 PL_ADD_DYNAMIC_REFLECTION(plSetObjectPropertyCommand, plCommand);
201
202public:
204
205public: // Properties
206 plUuid m_Object;
207 plVariant m_NewValue;
208 plVariant m_Index;
209 plString m_sProperty;
210
211private:
212 virtual plStatus DoInternal(bool bRedo) override;
213 virtual plStatus UndoInternal(bool bFireEvents) override;
214 virtual void CleanupInternal(CommandState state) override {}
215
216private:
217 plDocumentObject* m_pObject;
218 plVariant m_OldValue;
219};
220
224
225class PL_TOOLSFOUNDATION_DLL plResizeAndSetObjectPropertyCommand : public plCommand
226{
227 PL_ADD_DYNAMIC_REFLECTION(plResizeAndSetObjectPropertyCommand, plCommand);
228
229public:
231
232public: // Properties
233 plUuid m_Object;
234 plVariant m_NewValue;
235 plVariant m_Index;
236 plString m_sProperty;
237
238private:
239 virtual plStatus DoInternal(bool bRedo) override;
240 virtual plStatus UndoInternal(bool bFireEvents) override { return plStatus(PL_SUCCESS); }
241 virtual void CleanupInternal(CommandState state) override {}
242
243 plDocumentObject* m_pObject;
244};
245
249
250class PL_TOOLSFOUNDATION_DLL plInsertObjectPropertyCommand : public plCommand
251{
252 PL_ADD_DYNAMIC_REFLECTION(plInsertObjectPropertyCommand, plCommand);
253
254public:
256
257public: // Properties
258 plUuid m_Object;
259 plVariant m_NewValue;
260 plVariant m_Index;
261 plString m_sProperty;
262
263private:
264 virtual plStatus DoInternal(bool bRedo) override;
265 virtual plStatus UndoInternal(bool bFireEvents) override;
266 virtual void CleanupInternal(CommandState state) override {}
267
268private:
269 plDocumentObject* m_pObject;
270};
271
275
276class PL_TOOLSFOUNDATION_DLL plRemoveObjectPropertyCommand : public plCommand
277{
278 PL_ADD_DYNAMIC_REFLECTION(plRemoveObjectPropertyCommand, plCommand);
279
280public:
282
283public: // Properties
284 plUuid m_Object;
285 plVariant m_Index;
286 plString m_sProperty;
287
288private:
289 virtual plStatus DoInternal(bool bRedo) override;
290 virtual plStatus UndoInternal(bool bFireEvents) override;
291 virtual void CleanupInternal(CommandState state) override {}
292
293private:
294 plDocumentObject* m_pObject;
295 plVariant m_OldValue;
296};
297
301
302class PL_TOOLSFOUNDATION_DLL plMoveObjectPropertyCommand : public plCommand
303{
304 PL_ADD_DYNAMIC_REFLECTION(plMoveObjectPropertyCommand, plCommand);
305
306public:
308
309public: // Properties
310 plUuid m_Object;
311 plVariant m_OldIndex;
312 plVariant m_NewIndex;
313 plString m_sProperty;
314
315private:
316 virtual plStatus DoInternal(bool bRedo) override;
317 virtual plStatus UndoInternal(bool bFireEvents) override;
318 virtual void CleanupInternal(CommandState state) override {}
319
320private:
321 plDocumentObject* m_pObject;
322};
Definition TreeCommands.h:12
plUuid m_NewObjectGuid
This is optional. If not filled out, a new guid is assigned automatically.
Definition TreeCommands.h:26
Interface for a command.
Definition Command.h:15
Definition DocumentObjectBase.h:11
A hybrid array uses in-place storage to handle the first few elements without any allocation....
Definition HybridArray.h:12
Definition TreeCommands.h:251
Definition TreeCommands.h:78
Definition TreeCommands.h:169
Definition TreeCommands.h:303
Definition TreeCommands.h:44
This class holds information about reflected types. Each instance represents one type that is known t...
Definition RTTI.h:30
Definition TreeCommands.h:143
Definition TreeCommands.h:277
Definition TreeCommands.h:226
Definition TreeCommands.h:199
plStringView represent a read-only sub-string of a larger string, as it can store a dedicated string ...
Definition StringView.h:34
This data type is the abstraction for 128-bit Uuid (also known as GUID) instances.
Definition Uuid.h:11
plVariant is a class that can store different types of variables, which is useful in situations where...
Definition Variant.h:44
An plResult with an additional message for the reason of failure.
Definition Status.h:12