VR-Forces Development_Version Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
formationEditor.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 2013 MaK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 
8 
13 #include <vrvCore/DtEntityState.h>
14 #include <vrvCore/DtStateView.h>
15 #include <matrix/3dBoundingVolume.h>
16 
17 #include <geometry/extent.h>
18 
21 class DtFormation;
22 class DtFormationTable;
23 class DtFormationEntry;
24 
25 namespace makVrf
26 {
27  class DtEntityFacadeCollection;
28 }
29 
31 {
32 public:
35  int level);
36  virtual ~DtFormationNode();
37 
38  void addChild(DtFormationNode*);
39 
40  DtFormationNode* parent() { return myParent; };
41  void setParent(DtFormationNode* p) { myParent = p; };
42 
43  void repositionInFormation(DtFormation* formation, int iFrom, int iTo);
44  void reworkAsOffsetToLeader(DtFormation* formation);
45  void reworkOffsetsToStandAlone(DtFormation* formation);
46 
47  makVrv::DtUniqueID uniqueID() const;
48  DtExtent boundingBox() const;
49  DtVector centerOfMass() const;
50  DtVector positionOffset() const;
51  DtVector getOriginPoint() const;
52  double getHeadingOffset() const;
53  DtExtent extent(const DtVector& origin) const;
54  DtVector calculateOffset(const DtFormationEntry* entry, const DtFormation* formation) const;
55  void repositionInFormation(int iFrom, int iTo);
56 
57  void removeChild(DtFormationNode*);
58 
59  Dt3dBoundingVolume boundingVolume() const;
60  DtVector offset() const { return calculateOffset(myFormationEntry, myFormation); };
61  DtVector formationEntryOffset() const;
62  std::vector<DtFormationNode*> dataAtLeaderPromotionId(int i) const;
63  DtFormationNode* dataAtPromotionId(int i) const;
64 
65  void setNewOffsetFromLeader(const DtVector&);
66 
67  void setAllSubordinatesToTheirFormations(const QString& formationName);
68 
69  void repositionToFormation();
70 
71  void setOriginAndHeading(const DtVector&, double heading);
72 
74  virtual void setupFormation(const QString& formation);
75 
76  void setFormationData(DtFormationEntry* t, DtFormation* e) { myFormation = e; myFormationEntry = t; };
77  void setFormationEntry(DtFormationEntry* t) { myFormationEntry = t; };
78  void setFormation(DtFormation* t) { myFormation = t; };
79  void setFormationForChildren(DtFormation* t);
80 
81  DtFormation* formation() { return myFormation; };
82  DtFormationEntry* formationEntry() { return myFormationEntry; };
83 
84  void updateOffsetAndHeading(const DtVector& position, double heading);
85 
86  DtObjectType objectType() const;
87 
88  std::vector<DtFormationNode*>& children() { return myChildren; };
89  const std::vector<DtFormationNode*>& children() const { return myChildren; };
90  const DtVrfSubObjectParameterEntry* parameterEntry() const { return myParameterEntry; };
91  void addChildAtPosition(DtFormationNode* fmd, int iPos);
92  int maxPromotionId() const;
93  makVrf::DtVrfObjectFacadeInterface* displayNode() { return myDisplayNode; };
94 
95  void offsetChildrenForDisplay(double x, double y);
96 
97 protected:
101  std::vector<DtFormationNode*> myChildren;
107  int myLevel;
108 };
109 
111 {
112  Q_OBJECT
113 
114 public:
117 
120 
121  virtual ~DtFormationEditor();
122 
124  virtual void setFormation(const QString&);
125 
126  virtual void init(const DtObjectType&);
127 
129  virtual void setFormationTable(DtFormationTable*);
130 
131  virtual void reworkOffsetsToStandAlone(DtFormation*);
132 
133  virtual void reworkAsOffsetToLeader(DtFormation*);
134 
136  virtual void removeFormationEntry(DtFormationEntry*);
137 
139  virtual void addObjectTypeAtPosition(DtVrfSubObjectParameterEntry* entry, int pos, bool addAtPos = true);
140 
141  virtual void replaceObjectInFormation(int iPos);
142 
143  virtual DtFormationEntry* selectedFormationEntry() const;
144 
145  virtual void repositionInFormation(DtFormation*, int iFrom, int iTo);
146  virtual void repositionInFormation(int iFrom, int iTo);
148  virtual DtExtent extent() const;
149 
151  virtual int promotionIdAt(int) const;
152 
154  virtual int numTopLevelChildren() const;
155 
156  virtual void createDisplayHierarchy();
157 
159  virtual void createSubordinateObjects(DtFormationNode* parent, const DtVrfSubObjectParameterEntry*, int level);
160 
161  virtual void collapseAllOneLevel();
162  virtual void expandAllOneLevel();
163 
165  virtual bool canExpand() const;
166  virtual bool snapToGrid() const;
167 
169  virtual DtVector snapToGrid(const DtVector& local) const;
170 
171 protected:
172  virtual void updateFacade(makVrv::DtUniqueID id, const makVrv::DtVrlinkSimulatedEntityState* state, bool propagateChanges = true);
173 
175  virtual void setupFormation();
176 
177  virtual void remove(DtFormationNode*);
178 
179  virtual void initializeFacade(makVrf::DtVrfObjectFacadeInterface*);
180 
181  virtual void slot_onStateViewUpdated(makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* s);
182  virtual void editing(makVrv::DtUniqueID);
183 
184 signals:
185  void edit();
186  void expand();
187  void collapse();
188  void setFormation();
189  void formationModified();
190 
191 public slots:
192  virtual void setSnapToGrid(bool);
193 
194 protected:
196  QString myFormation;
201 
204 
205  typedef std::map<const DtVrfSubObjectParameterEntry*, makVrv::DtUniqueID> EntryToIdMap;
207 
208  typedef std::map<const DtVrfSubObjectParameterEntry*, DtVrfSubObjectParameterList> EntryToSubordinatesMap;
212 };

Document ID: Generated on Tue Mar 8 22:13:38 EST 2016 from SVN revision 162938
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)