VR-Forces 4.2 Class Documentation
formationEditor.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 2013 MaK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 
8 
11 #include <vrfutil/subObjList.h>
12 #include <vrvUtil/DtVirtualBaseClass.h>
13 #include <vrvCore/DtEntityState.h>
14 #include <vrvCore/DtStateView.h>
15 #include <matrix/3dBoundingVolume.h>
16 
17 #include <geometry/tdbextent.h>
18 
21 class DtFormation;
22 class DtFormationTable;
23 class DtFormationEntry;
24 
25 namespace makVrf
26 {
27  class DtEntityFacadeCollection;
28 }
29 
31 {
32 public:
33  DtFormationNode(makVrv::DtDe&, makVrv::DtDe& displayDe);
34  DtFormationNode(makVrv::DtDe&, makVrv::DtDe& displayDe, makVrf::DtVrfObjectFacadeInterface*, const DtVrfSubObjectParameterEntry*);
35  virtual ~DtFormationNode();
36 
37  void addChild(DtFormationNode*);
38 
39  DtFormationNode* parent() { return myParent; };
40  void setParent(DtFormationNode* p) { myParent = p; };
41 
42  void repositionInFormation(DtFormation* formation, int iFrom, int iTo);
43  void reworkAsOffsetToLeader(DtFormation* formation);
44  void reworkOffsetsToStandAlone(DtFormation* formation);
45 
46  makVrv::DtUniqueID uniqueID() const;
47  DtExtent boundingBox() const;
48  DtVector centerOfMass() const;
49  DtVector positionOffset() const;
50  DtVector getOriginPoint() const;
51  double getHeadingOffset() const;
52  DtExtent extent(const DtVector& origin) const;
53  DtVector calculateOffset(const DtFormationEntry* entry, const DtFormation* formation) const;
54  void repositionInFormation(int iFrom, int iTo);
55 
56  void removeChild(DtFormationNode*);
57 
58  Dt3dBoundingVolume boundingVolume() const;
59  DtVector offset() const { return calculateOffset(myFormationEntry, myFormation); };
60  DtVector formationEntryOffset() const;
61  std::vector<DtFormationNode*> dataAtLeaderPromotionId(int i) const;
62  DtFormationNode* dataAtPromotionId(int i) const;
63 
64  void setNewOffsetFromLeader(const DtVector&);
65 
66  void setAllSubordinatesToTheirFormations(const QString& formationName);
67 
68  void repositionToFormation();
69 
70  void setOriginAndHeading(const DtVector&, double heading);
71 
73  virtual void setupFormation(const QString& formation);
74 
75  void setFormationData(DtFormationEntry* t, DtFormation* e) { myFormation = e; myFormationEntry = t; };
76  void setFormationEntry(DtFormationEntry* t) { myFormationEntry = t; };
77  void setFormation(DtFormation* t) { myFormation = t; };
78  void setFormationForChildren(DtFormation* t);
79 
80  DtFormation* formation() { return myFormation; };
81  DtFormationEntry* formationEntry() { return myFormationEntry; };
82 
83  void updateOffsetAndHeading(const DtVector& position, double heading);
84 
85  DtObjectType objectType() const;
86 
87  void dirtyOrigin() { myRecalcOrigin = true; };
88 
89  std::vector<DtFormationNode*>& children() { return myChildren; };
90  const std::vector<DtFormationNode*>& children() const { return myChildren; };
91  const DtVrfSubObjectParameterEntry* parameterEntry() const { return myParameterEntry; };
92  void addChildAtPosition(DtFormationNode* fmd, int iPos);
93  int maxPromotionId() const;
94  makVrf::DtVrfObjectFacadeInterface* displayNode() { return myDisplayNode; };
95 
96 protected:
97  DtFormationNode* myParent;
100  std::vector<DtFormationNode*> myChildren;
101  makVrv::DtDe& myDe;
102  makVrv::DtDe& myDisplayDe;
106  mutable bool myRecalcOrigin;
107 };
108 
110 {
111  Q_OBJECT
112 
113 public:
115  DtFormationEditor(makVrv::DtDe&, QWidget* p);
116 
118  DtFormationEditor(makVrv::DtDe&);
119 
120  virtual ~DtFormationEditor();
121 
123  virtual void setFormation(const QString&);
124 
125  virtual void init(const DtObjectType&);
126 
128  virtual void setFormationTable(DtFormationTable*);
129 
130  virtual void reworkOffsetsToStandAlone(DtFormation*);
131 
132  virtual void reworkAsOffsetToLeader(DtFormation*);
133 
135  virtual void removeFormationEntry(DtFormationEntry*);
136 
138  virtual void addObjectTypeAtPosition(DtVrfSubObjectParameterEntry* entry, int pos, bool addAtPos = true);
139 
140  virtual void replaceObjectInFormation(int iPos);
141 
142  virtual DtFormationEntry* selectedFormationEntry() const;
143 
144  virtual void repositionInFormation(DtFormation*, int iFrom, int iTo);
145  virtual void repositionInFormation(int iFrom, int iTo);
147  virtual DtExtent extent() const;
148 
150  virtual int promotionIdAt(int) const;
151 
153  virtual int numTopLevelChildren() const;
154 
155  virtual void createDisplayHierarchy();
156 
158  virtual void createSubordinateObjects(DtFormationNode* parent, const DtVrfSubObjectParameterEntry*, int level);
159 
160  virtual void collapseAllOneLevel();
161  virtual void expandAllOneLevel();
162 
164  virtual bool canExpand() const;
165  virtual bool snapToGrid() const;
166 
168  virtual DtVector snapToGrid(const DtVector& local) const;
169 
170 protected:
171  virtual void updateFacade(makVrv::DtUniqueID id, const makVrv::DtVrlinkSimulatedEntityState* state, bool propagateChanges = true);
172 
174  virtual void setupFormation();
175 
176  virtual void remove(DtFormationNode*);
177 
178  virtual void initializeFacade(makVrf::DtVrfObjectFacadeInterface*);
179 
180  virtual void slot_onStateViewUpdated(makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* s);
181 
182 signals:
183  void edit();
184  void expand();
185  void collapse();
186  void setFormation();
187  void formationModified();
188 
189 public slots:
190  virtual void setSnapToGrid(bool);
191 
192 protected:
194  QString myFormation;
196  DtObjectType myObjectType;
199 
202 
203  typedef std::map<const DtVrfSubObjectParameterEntry*, makVrv::DtUniqueID> EntryToIdMap;
205 
206  typedef std::map<const DtVrfSubObjectParameterEntry*, DtVrfSubObjectParameterList> EntryToSubordinatesMap;
208 };

Document ID: Generated on Sun Nov 24 19:49:21 EST 2013 from SVN revision 133924
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)