DDraceNetwork Documentation
Loading...
Searching...
No Matches
editor_trackers.h
Go to the documentation of this file.
1#ifndef GAME_EDITOR_EDITOR_TRACKERS_H
2#define GAME_EDITOR_EDITOR_TRACKERS_H
3
6#include <game/mapitems.h>
7
8#include <map>
9#include <memory>
10#include <vector>
11
12class CEditor;
13class CLayerTiles;
14class CLayerGroup;
15class CLayerSounds;
16class CSoundSource;
17
19{
20public:
23
24 bool QuadPointChanged(const std::vector<CPoint> &vCurrentPoints, int QuadIndex);
25
26 void BeginQuadTrack(const std::shared_ptr<CLayerQuads> &pLayer, const std::vector<int> &vSelectedQuads, int GroupIndex = -1, int LayerIndex = -1);
27 void EndQuadTrack();
28
29 void BeginQuadPropTrack(const std::shared_ptr<CLayerQuads> &pLayer, const std::vector<int> &vSelectedQuads, EQuadProp Prop, int GroupIndex = -1, int LayerIndex = -1);
31
32 void BeginQuadPointPropTrack(const std::shared_ptr<CLayerQuads> &pLayer, const std::vector<int> &vSelectedQuads, int SelectedQuadPoints, int GroupIndex = -1, int LayerIndex = -1);
36
38
39private:
40 std::vector<int> m_vSelectedQuads;
42 std::map<int, std::vector<CPoint>> m_InitalPoints;
43
44 bool m_Tracking = false;
45 std::shared_ptr<CLayerQuads> m_pLayer;
46
48 std::vector<EQuadPointProp> m_vTrackedProps;
49 std::map<int, int> m_PreviousValues;
50 std::map<int, std::vector<std::map<EQuadPointProp, int>>> m_PreviousValuesPoint;
53};
54
66
68{
69 OP_NONE = 0,
70 OP_MOVE,
72};
73
75{
76public:
78
80 void Stop(bool Switch = true);
82
84
85private:
87
89 {
90 bool m_Used;
92 std::map<int, int> m_Values;
93 };
94
95 std::map<int, SPointData> m_SavedValues;
96
98 void HandlePointDragEnd(bool Switch);
99};
100
129
131{
134};
135
136template<typename T, typename E>
138{
139public:
143
163
164 void End(E Prop, EEditState State, int GroupIndex = -1, int LayerIndex = -1)
165 {
166 if(!m_Tracking || Prop == static_cast<E>(-1))
167 return;
168
171
172 if(State == EEditState::END || State == EEditState::ONE_GO)
173 {
174 m_Tracking = false;
175 int Value = PropToValue(Prop);
176 if(EndChecker(Prop, Value))
177 OnEnd(Prop, Value);
178 }
179 }
180
181protected:
182 virtual void OnStart(E Prop) {}
183 virtual void OnEnd(E Prop, int Value) {}
184 virtual int PropToValue(E Prop) { return 0; }
185 virtual bool EndChecker(E Prop, int Value)
186 {
187 return Value != m_OriginalValue;
188 }
189
197};
198
199class CLayerPropTracker : public CPropTracker<CLayer, ELayerProp>
200{
201public:
204
205protected:
206 void OnEnd(ELayerProp Prop, int Value) override;
207 int PropToValue(ELayerProp Prop) override;
208};
209
210class CLayerTilesPropTracker : public CPropTracker<CLayerTiles, ETilesProp>
211{
212public:
215
216protected:
217 void OnStart(ETilesProp Prop) override;
218 void OnEnd(ETilesProp Prop, int Value) override;
219 bool EndChecker(ETilesProp Prop, int Value) override;
220
221 int PropToValue(ETilesProp Prop) override;
222
223private:
224 std::map<int, std::shared_ptr<CLayer>> m_SavedLayers;
225};
226
227class CLayerTilesCommonPropTracker : public CPropTracker<CLayerTiles, ETilesCommonProp>
228{
229public:
232
233protected:
234 void OnStart(ETilesCommonProp Prop) override;
235 void OnEnd(ETilesCommonProp Prop, int Value) override;
236 bool EndChecker(ETilesCommonProp Prop, int Value) override;
237
238 int PropToValue(ETilesCommonProp Prop) override;
239
240private:
241 std::map<std::shared_ptr<CLayerTiles>, std::map<int, std::shared_ptr<CLayer>>> m_SavedLayers;
242
243public:
244 std::vector<std::shared_ptr<CLayerTiles>> m_vpLayers;
245 std::vector<int> m_vLayerIndices;
246};
247
248class CLayerGroupPropTracker : public CPropTracker<CLayerGroup, EGroupProp>
249{
250public:
253
254protected:
255 void OnEnd(EGroupProp Prop, int Value) override;
256 int PropToValue(EGroupProp Prop) override;
257};
258
259class CLayerQuadsPropTracker : public CPropTracker<CLayerQuads, ELayerQuadsProp>
260{
261public:
264
265protected:
266 void OnEnd(ELayerQuadsProp Prop, int Value) override;
267 int PropToValue(ELayerQuadsProp Prop) override;
268};
269
270class CLayerSoundsPropTracker : public CPropTracker<CLayerSounds, ELayerSoundsProp>
271{
272public:
275
276protected:
277 void OnEnd(ELayerSoundsProp Prop, int Value) override;
278 int PropToValue(ELayerSoundsProp Prop) override;
279};
280
281class CSoundSourcePropTracker : public CPropTracker<CSoundSource, ESoundProp>
282{
283public:
286
287protected:
288 void OnEnd(ESoundProp Prop, int Value) override;
289 int PropToValue(ESoundProp Prop) override;
290};
291
292class CSoundSourceRectShapePropTracker : public CPropTracker<CSoundSource, ERectangleShapeProp>
293{
294public:
297
298protected:
299 void OnEnd(ERectangleShapeProp Prop, int Value) override;
301};
302
303class CSoundSourceCircleShapePropTracker : public CPropTracker<CSoundSource, ECircleShapeProp>
304{
305public:
308
309protected:
310 void OnEnd(ECircleShapeProp Prop, int Value) override;
311 int PropToValue(ECircleShapeProp Prop) override;
312};
313
314#endif
Definition editor.h:111
Definition editor_trackers.h:75
CEditor * m_pEditor
Definition editor_trackers.h:83
void Stop(bool Switch=true)
Definition editor_trackers.cpp:311
void HandlePointDragStart()
Definition editor_trackers.cpp:324
std::map< int, SPointData > m_SavedValues
Definition editor_trackers.h:95
void HandlePointDragEnd(bool Switch)
Definition editor_trackers.cpp:342
void Reset()
Definition editor_trackers.h:81
void Begin(EEnvelopeEditorOp Operation)
Definition editor_trackers.cpp:293
EEnvelopeEditorOp m_TrackedOp
Definition editor_trackers.h:86
Definition mapitems.h:225
Definition editor_trackers.h:249
int PropToValue(EGroupProp Prop) override
Definition editor_trackers.cpp:586
void OnEnd(EGroupProp Prop, int Value) override
Definition editor_trackers.cpp:581
CLayerGroupPropTracker(CEditor *pEditor)
Definition editor_trackers.h:251
Definition layer_group.h:10
Definition editor_trackers.h:200
void OnEnd(ELayerProp Prop, int Value) override
Definition editor_trackers.cpp:438
CLayerPropTracker(CEditor *pEditor)
Definition editor_trackers.h:202
int PropToValue(ELayerProp Prop) override
Definition editor_trackers.cpp:450
Definition editor_trackers.h:260
CLayerQuadsPropTracker(CEditor *pEditor)
Definition editor_trackers.h:262
int PropToValue(ELayerQuadsProp Prop) override
Definition editor_trackers.cpp:612
void OnEnd(ELayerQuadsProp Prop, int Value) override
Definition editor_trackers.cpp:606
Definition layer_quads.h:7
Definition editor_trackers.h:271
CLayerSoundsPropTracker(CEditor *pEditor)
Definition editor_trackers.h:273
void OnEnd(ELayerSoundsProp Prop, int Value) override
Definition editor_trackers.cpp:621
int PropToValue(ELayerSoundsProp Prop) override
Definition editor_trackers.cpp:627
Definition layer_sounds.h:7
Definition editor_trackers.h:228
std::vector< int > m_vLayerIndices
Definition editor_trackers.h:245
std::vector< std::shared_ptr< CLayerTiles > > m_vpLayers
Definition editor_trackers.h:244
void OnStart(ETilesCommonProp Prop) override
Definition editor_trackers.cpp:525
std::map< std::shared_ptr< CLayerTiles >, std::map< int, std::shared_ptr< CLayer > > > m_SavedLayers
Definition editor_trackers.h:241
void OnEnd(ETilesCommonProp Prop, int Value) override
Definition editor_trackers.cpp:536
int PropToValue(ETilesCommonProp Prop) override
Definition editor_trackers.cpp:572
bool EndChecker(ETilesCommonProp Prop, int Value) override
Definition editor_trackers.cpp:567
CLayerTilesCommonPropTracker(CEditor *pEditor)
Definition editor_trackers.h:230
Definition editor_trackers.h:211
CLayerTilesPropTracker(CEditor *pEditor)
Definition editor_trackers.h:213
bool EndChecker(ETilesProp Prop, int Value) override
Definition editor_trackers.cpp:463
void OnEnd(ETilesProp Prop, int Value) override
Definition editor_trackers.cpp:495
std::map< int, std::shared_ptr< CLayer > > m_SavedLayers
Definition editor_trackers.h:224
int PropToValue(ETilesProp Prop) override
Definition editor_trackers.cpp:505
void OnStart(ETilesProp Prop) override
Definition editor_trackers.cpp:468
Definition layer_tiles.h:39
Definition layer.h:16
Definition editor_trackers.h:138
virtual void OnEnd(E Prop, int Value)
Definition editor_trackers.h:183
virtual int PropToValue(E Prop)
Definition editor_trackers.h:184
void Begin(T *pObject, E Prop, EEditState State, int GroupIndex=-1, int LayerIndex=-1)
Definition editor_trackers.h:144
int m_OriginalLayerIndex
Definition editor_trackers.h:192
T * m_pObject
Definition editor_trackers.h:191
CPropTracker(CEditor *pEditor)
Definition editor_trackers.h:140
int m_CurrentGroupIndex
Definition editor_trackers.h:195
void End(E Prop, EEditState State, int GroupIndex=-1, int LayerIndex=-1)
Definition editor_trackers.h:164
virtual void OnStart(E Prop)
Definition editor_trackers.h:182
int m_OriginalValue
Definition editor_trackers.h:190
int m_OriginalGroupIndex
Definition editor_trackers.h:193
virtual bool EndChecker(E Prop, int Value)
Definition editor_trackers.h:185
bool m_Tracking
Definition editor_trackers.h:196
CEditor * m_pEditor
Definition editor_trackers.h:142
int m_CurrentLayerIndex
Definition editor_trackers.h:194
Definition editor_trackers.h:19
std::vector< int > m_vSelectedQuads
Definition editor_trackers.h:40
std::shared_ptr< CLayerQuads > m_pLayer
Definition editor_trackers.h:45
int m_SelectedQuadPoints
Definition editor_trackers.h:41
void EndQuadPointPropTrackAll()
Definition editor_trackers.cpp:243
~CQuadEditTracker()
Definition editor_trackers.cpp:12
void EndQuadTrack()
Definition editor_trackers.cpp:46
void AddQuadPointPropTrack(EQuadPointProp Prop)
Definition editor_trackers.cpp:148
EQuadProp m_TrackedProp
Definition editor_trackers.h:47
CEditor * m_pEditor
Definition editor_trackers.h:37
CQuadEditTracker()
Definition editor_trackers.cpp:9
bool QuadPointChanged(const std::vector< CPoint > &vCurrentPoints, int QuadIndex)
Definition editor_trackers.cpp:18
bool m_Tracking
Definition editor_trackers.h:44
int m_GroupIndex
Definition editor_trackers.h:52
void BeginQuadTrack(const std::shared_ptr< CLayerQuads > &pLayer, const std::vector< int > &vSelectedQuads, int GroupIndex=-1, int LayerIndex=-1)
Definition editor_trackers.cpp:28
int m_LayerIndex
Definition editor_trackers.h:51
std::map< int, std::vector< std::map< EQuadPointProp, int > > > m_PreviousValuesPoint
Definition editor_trackers.h:50
void BeginQuadPointPropTrack(const std::shared_ptr< CLayerQuads > &pLayer, const std::vector< int > &vSelectedQuads, int SelectedQuadPoints, int GroupIndex=-1, int LayerIndex=-1)
Definition editor_trackers.cpp:130
void EndQuadPropTrack(EQuadProp Prop)
Definition editor_trackers.cpp:92
std::map< int, int > m_PreviousValues
Definition editor_trackers.h:49
std::vector< EQuadPointProp > m_vTrackedProps
Definition editor_trackers.h:48
void BeginQuadPropTrack(const std::shared_ptr< CLayerQuads > &pLayer, const std::vector< int > &vSelectedQuads, EQuadProp Prop, int GroupIndex=-1, int LayerIndex=-1)
Definition editor_trackers.cpp:66
void EndQuadPointPropTrack(EQuadPointProp Prop)
Definition editor_trackers.cpp:193
std::map< int, std::vector< CPoint > > m_InitalPoints
Definition editor_trackers.h:42
Definition editor_trackers.h:304
CSoundSourceCircleShapePropTracker(CEditor *pEditor)
Definition editor_trackers.h:306
void OnEnd(ECircleShapeProp Prop, int Value) override
Definition editor_trackers.cpp:676
int PropToValue(ECircleShapeProp Prop) override
Definition editor_trackers.cpp:681
Definition editor_trackers.h:102
ESoundSourceOp m_TrackedOp
Definition editor_trackers.h:112
int m_LayerIndex
Definition editor_trackers.h:113
CEditor * m_pEditor
Definition editor_trackers.h:110
EState
Definition editor_trackers.h:122
@ STATE_BEGIN
Definition editor_trackers.h:123
@ STATE_EDITING
Definition editor_trackers.h:124
@ STATE_END
Definition editor_trackers.h:125
SData m_Data
Definition editor_trackers.h:119
CSoundSource * m_pSource
Definition editor_trackers.h:111
void HandlePointMove(EState State)
Definition editor_trackers.cpp:411
void End()
Definition editor_trackers.cpp:400
void Begin(CSoundSource *pSource, ESoundSourceOp Operation, int LayerIndex)
Definition editor_trackers.cpp:387
Definition editor_trackers.h:282
CSoundSourcePropTracker(CEditor *pEditor)
Definition editor_trackers.h:284
void OnEnd(ESoundProp Prop, int Value) override
Definition editor_trackers.cpp:636
int PropToValue(ESoundProp Prop) override
Definition editor_trackers.cpp:641
Definition editor_trackers.h:293
void OnEnd(ERectangleShapeProp Prop, int Value) override
Definition editor_trackers.cpp:661
int PropToValue(ERectangleShapeProp Prop) override
Definition editor_trackers.cpp:666
CSoundSourceRectShapePropTracker(CEditor *pEditor)
Definition editor_trackers.h:295
Definition mapitems.h:554
Definition vmath.h:15
ETilesCommonProp
Definition mapitems.h:87
ELayerQuadsProp
Definition mapitems.h:114
EQuadProp
Definition mapitems.h:5
EQuadPointProp
Definition mapitems.h:18
ETilesProp
Definition mapitems.h:69
ERectangleShapeProp
Definition mapitems.h:45
ECircleShapeProp
Definition mapitems.h:53
ELayerSoundsProp
Definition mapitems.h:121
ELayerProp
Definition mapitems.h:60
EGroupProp
Definition mapitems.h:98
ESoundProp
Definition mapitems.h:29
EEnvelopeEditorOp
Definition editor_trackers.h:56
ESoundSourceOp
Definition editor_trackers.h:68
#define E(buf, str)
Definition editor_trackers.h:89
bool m_Used
Definition editor_trackers.h:90
std::map< int, int > m_Values
Definition editor_trackers.h:92
CFixedTime m_Time
Definition editor_trackers.h:91
Definition editor_trackers.h:116
CPoint m_OriginalPoint
Definition editor_trackers.h:117
Definition editor_trackers.h:131
static int GetDefaultLayerIndex(CEditor *pEditor)
Definition editor_trackers.cpp:431
static int GetDefaultGroupIndex(CEditor *pEditor)
Definition editor_trackers.cpp:426
EEditState
Definition ui.h:22