VR-Forces 5.0.1 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties 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 
9 #if !defined(Q_MOC_RUN)
14 #include <vrvCore/DtEntityState.h>
15 #include <vrvCore/DtStateView.h>
16 #include <matrix/3dBoundingVolume.h>
17 
18 #include <geometry/extent.h>
19 #endif
20 
23 class DtFormation;
24 class DtFormationTable;
25 class DtFormationEntry;
26 
27 namespace makVrf
28 {
29  class DtEntityFacadeCollection;
30 }
31 
33 {
34 public:
37  int level);
38  virtual ~DtFormationNode();
39 
40  void addChild(DtFormationNode*);
41 
42  DtFormationNode* parent() { return myParent; };
43  void setParent(DtFormationNode* p) { myParent = p; };
44 
45  void repositionInFormation(DtFormation* formation, int iFrom, int iTo);
46  void reworkAsOffsetToLeader(DtFormation* formation);
47  void reworkOffsetsToStandAlone(DtFormation* formation);
48 
49  makVrv::DtUniqueID uniqueID() const;
50  DtExtent boundingBox() const;
51  DtVector centerOfMass() const;
52  DtVector positionOffset() const;
53  DtVector getOriginPoint() const;
54  double getHeadingOffset() const;
55  DtExtent extent(const DtVector& origin) const;
56  DtVector calculateOffset(const DtFormationEntry* entry, const DtFormation* formation) const;
57  void repositionInFormation(int iFrom, int iTo);
58 
59  void removeChild(DtFormationNode*);
60 
61  Dt3dBoundingVolume boundingVolume() const;
62  DtVector offset() const { return calculateOffset(myFormationEntry, myFormation); };
63  DtVector formationEntryOffset() const;
64  std::vector<DtFormationNode*> dataAtLeaderPromotionId(int i) const;
65  DtFormationNode* dataAtPromotionId(int i) const;
66 
67  void setNewOffsetFromLeader(const DtVector&);
68 
69  void setAllSubordinatesToTheirFormations(const QString& formationName);
70 
71  void repositionToFormation();
72 
73  void setOriginAndHeading(const DtVector&, double heading);
74 
76  virtual void setupFormation(const QString& formation);
77 
78  void setFormationData(DtFormationEntry* t, DtFormation* e) { myFormation = e; myFormationEntry = t; };
79  void setFormationEntry(DtFormationEntry* t) { myFormationEntry = t; };
80  void setFormation(DtFormation* t) { myFormation = t; };
81  void setFormationForChildren(DtFormation* t);
82 
83  DtFormation* formation() { return myFormation; };
84  DtFormationEntry* formationEntry() { return myFormationEntry; };
85 
86  void updateOffsetAndHeading(const DtVector& position, double heading);
87 
88  DtObjectType objectType() const;
89 
90  std::vector<DtFormationNode*>& children() { return myChildren; };
91  const std::vector<DtFormationNode*>& children() const { return myChildren; };
92  const DtVrfSubObjectParameterEntry* parameterEntry() const { return myParameterEntry; };
93  void addChildAtPosition(DtFormationNode* fmd, int iPos);
94  int maxPromotionId() const;
95  makVrf::DtVrfObjectFacadeInterface* displayNode() { return myDisplayNode; };
96 
97  void offsetChildrenForDisplay(double x, double y);
98 
99 protected:
103  std::vector<DtFormationNode*> myChildren;
109  int myLevel;
110 };
111 
113 {
114  Q_OBJECT
115 
116 public:
118  DtFormationEditor(makVrv::DtDe&, QWidget* p);
119 
122 
123  virtual ~DtFormationEditor();
124 
126  virtual void setFormation(const QString&);
127 
128  virtual void init(const DtObjectType&);
129 
131  virtual void setFormationTable(DtFormationTable*);
132 
133  virtual void reworkOffsetsToStandAlone(DtFormation*);
134 
135  virtual void reworkAsOffsetToLeader(DtFormation*);
136 
138  virtual void removeFormationEntry(DtFormationEntry*);
139 
141  virtual void addObjectTypeAtPosition(DtVrfSubObjectParameterEntry* entry, int pos, bool addAtPos = true);
142 
143  virtual void replaceObjectInFormation(int iPos);
144 
145  virtual DtFormationEntry* selectedFormationEntry() const;
146  virtual DtFormationNode* selectedFormationNode() const;
147 
148  virtual void repositionInFormation(DtFormation*, int iFrom, int iTo);
149  virtual void repositionInFormation(int iFrom, int iTo);
151  virtual DtExtent extent() const;
152 
154  virtual int promotionIdAt(int) const;
155 
157  virtual int numTopLevelChildren() const;
158 
159  virtual void createDisplayHierarchy();
160 
162  virtual void createSubordinateObjects(DtFormationNode* parent, const DtVrfSubObjectParameterEntry*, int level);
163 
164  virtual void collapseAllOneLevel();
165  virtual void expandAllOneLevel();
166 
168  virtual bool canExpand() const;
169  virtual bool snapToGrid() const;
170 
172  virtual DtVector snapToGrid(const DtVector& local) const;
173 
174 protected:
175  virtual void updateFacade(makVrv::DtUniqueID id, const makVrv::DtVrlinkSimulatedEntityState* state, bool propagateChanges = true);
176 
178  virtual void setupFormation();
179 
180  virtual void remove(DtFormationNode*);
181 
182  virtual void initializeFacade(makVrf::DtVrfObjectFacadeInterface*);
183 
184  virtual void slot_onStateViewUpdated(makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* s);
185  virtual void editing(makVrv::DtUniqueID);
186 
187 signals:
188  void edit();
189  void expand();
190  void collapse();
191  void setFormation();
192  void formationModified();
193 
194 public slots:
195  virtual void setSnapToGrid(bool);
196 
197 protected:
199  QString myFormation;
204 
207 
208  typedef std::map<const DtVrfSubObjectParameterEntry*, makVrv::DtUniqueID> EntryToIdMap;
210 
211  typedef std::map<const DtVrfSubObjectParameterEntry*, DtVrfSubObjectParameterList> EntryToSubordinatesMap;
215 };
DtFormationEntry; readable/writeable entry in a DtFormation.
Definition: formationEntry.h:28
const DtVrfSubObjectParameterEntry * myParameterEntry
Definition: formationEditor.h:102
int myLevel
Definition: formationEditor.h:109
Definition: formationEditor.h:32
makVrv::DtDe & myDe
Definition: formationEditor.h:104
makVrf::DtEntityFacadeCollection * myRootDisplayNode
Definition: formationEditor.h:202
Definition: formationEditor.h:112
DtFormationEntry * formationEntry()
Definition: formationEditor.h:84
bool mySnapToGrid
Definition: formationEditor.h:206
DtFormationNode * parent()
Definition: formationEditor.h:42
DtObjectType myObjectType
Definition: formationEditor.h:201
DtFormation * myFormation
Definition: formationEditor.h:107
DtFormationNode * myRootNode
Definition: formationEditor.h:205
voidpf uLong int origin
Definition: ioapi.h:42
std::vector< DtFormationNode * > myChildren
Definition: formationEditor.h:103
makVrv::DtDe & myDisplayDe
Definition: formationEditor.h:105
DT_DLL_VRVCORE DtTaitBryan level(const DtCoordinateSystem &cs, const DtVector &localOrigin, double topoHeading)
Returns a level orientation with the topographic heading.
DtVector offset() const
Definition: formationEditor.h:62
DtVrfSubObjectParameterList is a readable/writable list of DtVrfSubObjectParameterEntrys.
Definition: vrfSubObjectParameterList.h:21
EntryToSubordinatesMap myEntryToSubordinatesMap
Definition: formationEditor.h:212
void setFormationData(DtFormationEntry *t, DtFormation *e)
Definition: formationEditor.h:78
Contains makVrv::DtStateView class.
const DtVrfSubObjectParameterEntry * parameterEntry() const
Definition: formationEditor.h:92
DtFormation * formation()
Definition: formationEditor.h:83
makVrf::DtVrfObjectFacadeInterface * displayNode()
Definition: formationEditor.h:95
DtVrfSubObjectParameterEntry.
Definition: vrfSubObjectParameterEntry.h:27
const std::vector< DtFormationNode * > & children() const
Definition: formationEditor.h:91
Instances of DtFormation are a list of DtFormationEntry objects which make up an aggregate formation...
Definition: formation.h:22
The DtExtent represents an axis-aligned 3d bounding box.
Definition: extent.h:43
void setFormationEntry(DtFormationEntry *t)
Definition: formationEditor.h:79
DtFormationEntry * myFormationEntry
Definition: formationEditor.h:106
Definition: objectType.h:27
void setParent(DtFormationNode *p)
Definition: formationEditor.h:43
Contains makVrv::DtVirtualBaseClass class.
makVrv::DtUniqueID myEditing
Definition: formationEditor.h:213
DtFormationTable * myFormationTable
Definition: formationEditor.h:198
Definition: vrfObjectFacadeInterface.h:53
std::vector< DtFormationNode * > & children()
Definition: formationEditor.h:90
DtFormationTable.
Definition: formationTable.h:23
int myTimeToUpdate
Definition: formationEditor.h:214
This class can be a base class for any editor that wants to use the Vantage display.
Definition: editingWindow.h:45
Contains makVrv::DtVrlinkSimulatedEntityState class.
std::map< const DtVrfSubObjectParameterEntry *, DtVrfSubObjectParameterList > EntryToSubordinatesMap
Definition: formationEditor.h:211
bool myUpdating
Definition: formationEditor.h:203
EntryToIdMap myEntryToIdMap
Definition: formationEditor.h:209
makVrf::DtVrfObjectFacadeInterface * myDisplayNode
Definition: formationEditor.h:101
Will create entity facades for each realized model set and manage them all.
Definition: entityFacadeCollection.h:67
DtVrfSubObjectParameterList mySubordinateList
Definition: formationEditor.h:200
void setFormation(DtFormation *t)
Definition: formationEditor.h:80
Contains the declaration of the DtExtent class.
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
DtFormationNode * myParent
Definition: formationEditor.h:100
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:70
std::map< const DtVrfSubObjectParameterEntry *, makVrv::DtUniqueID > EntryToIdMap
Definition: formationEditor.h:208
DtVector myOrigin
Definition: formationEditor.h:108
#define DT_DLL_simulationObjectEditorimpl
This file is used to determine how to build.
Definition: simulationObjectEditorImplDefines.h:33
QString myFormation
Definition: formationEditor.h:199

Document ID: Generated on Mon Jun 20 00:38:30 EDT 2022 from SVN revision 244029
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)