VR-Forces 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)
16 
17 #include <matrix/3dBoundingVolume.h>
18 
19 #include <geometry/extent.h>
20 #endif
21 
24 class DtFormation;
25 class DtFormationTable;
26 class DtFormationEntry;
27 
28 namespace makVrf
29 {
30  class DtEntityFacadeCollection;
31 }
32 
34 {
35 public:
38  int level);
39  virtual ~DtFormationNode();
40 
41  void addChild(DtFormationNode*);
42 
43  DtFormationNode* parent() { return myParent; };
44  void setParent(DtFormationNode* p) { myParent = p; };
45 
46  void repositionInFormation(DtFormation* formation, int iFrom, int iTo);
47  void reworkAsOffsetToLeader(DtFormation* formation);
48  void reworkOffsetsToStandAlone(DtFormation* formation);
49 
50  makVrv::DtUniqueID uniqueID() const;
51  DtExtent boundingBox() const;
52  DtVector centerOfMass() const;
53  DtVector positionOffset() const;
54  DtVector getOriginPoint() const;
55  double getHeadingOffset() const;
56  DtExtent extent(const DtVector& origin) const;
57  DtVector calculateOffset(const DtFormationEntry* entry, const DtFormation* formation) const;
58  void repositionInFormation(int iFrom, int iTo);
59 
60  void removeChild(DtFormationNode*);
61 
62  Dt3dBoundingVolume boundingVolume() const;
63  DtVector offset() const { return calculateOffset(myFormationEntry, myFormation); };
64  DtVector formationEntryOffset() const;
65  std::vector<DtFormationNode*> dataAtLeaderPromotionId(int i) const;
66  DtFormationNode* dataAtPromotionId(int i) const;
67 
68  void setNewOffsetFromLeader(const DtVector&);
69 
70  void setAllSubordinatesToTheirFormations(const QString& formationName);
71 
72  void repositionToFormation();
73 
74  void setOriginAndHeading(const DtVector&, double heading);
75 
77  virtual void setupFormation(const QString& formation);
78 
79  void setFormationData(DtFormationEntry* t, DtFormation* e) { myFormation = e; myFormationEntry = t; };
80  void setFormationEntry(DtFormationEntry* t) { myFormationEntry = t; };
81  void setFormation(DtFormation* t) { myFormation = t; };
82  void setFormationForChildren(DtFormation* t);
83 
84  DtFormation* formation() { return myFormation; };
85  DtFormationEntry* formationEntry() { return myFormationEntry; };
86 
87  void updateOffsetAndHeading(const DtVector& position, double heading);
88 
89  DtEntityType objectType() const;
90 
91  std::vector<DtFormationNode*>& children() { return myChildren; };
92  const std::vector<DtFormationNode*>& children() const { return myChildren; };
93  const DtVrfSubObjectParameterEntry* parameterEntry() const { return myParameterEntry; };
94  void addChildAtPosition(DtFormationNode* fmd, int iPos);
95  int maxPromotionId() const;
96  makVrf::DtVrfObjectFacadeInterface* displayNode() { return myDisplayNode; };
97 
98  void offsetChildrenForDisplay(double x, double y);
99 
100 protected:
104  std::vector<DtFormationNode*> myChildren;
109  mutable DtVector myOrigin;
110  int myLevel;
111 };
112 
114 {
115  Q_OBJECT
116 
117 public:
119  DtFormationEditor(makVrv::DtDe&, QWidget* p);
120 
123 
124  virtual ~DtFormationEditor() override;
125 
127  virtual void setFormation(const QString&);
128 
129  virtual void init(const DtEntityType&);
130 
132  virtual void setFormationTable(DtFormationTable*);
133 
134  virtual void reworkOffsetsToStandAlone(DtFormation*);
135 
136  virtual void reworkAsOffsetToLeader(DtFormation*);
137 
139  virtual void removeFormationEntry(DtFormationEntry*);
140 
142  virtual void addObjectTypeAtPosition(DtVrfSubObjectParameterEntry* entry, int pos, bool addAtPos = true);
143 
144  virtual void replaceObjectInFormation(int iPos);
145 
146  virtual DtFormationEntry* selectedFormationEntry() const;
147  virtual DtFormationNode* selectedFormationNode() const;
148 
149  virtual void repositionInFormation(DtFormation*, int iFrom, int iTo);
150  virtual void repositionInFormation(int iFrom, int iTo);
152  virtual DtExtent extent() const;
153 
155  virtual int promotionIdAt(int) const;
156 
158  virtual int numTopLevelChildren() const;
159 
160  virtual void createDisplayHierarchy();
161 
163  virtual void createSubordinateObjects(DtFormationNode* parent, const DtVrfSubObjectParameterEntry*, int level);
164 
165  virtual void collapseAllOneLevel();
166  virtual void expandAllOneLevel();
167 
169  virtual bool canExpand() const;
170  virtual bool snapToGrid() const;
171 
173  virtual DtVector snapToGrid(const DtVector& local) const;
174 
175 protected:
176  virtual void updateFacade(makVrv::DtUniqueID id, makVrf::DtSimObjectReference state, bool propagateChanges = true);
177 
179  virtual void setupFormation();
180 
181  virtual void remove(DtFormationNode*);
182 
183  virtual void initializeFacade(makVrf::DtVrfObjectFacadeInterface*);
184 
185  virtual void slot_onStateViewUpdated(makVrf::DtSimObjectReference);
186  virtual void editing(makVrv::DtUniqueID);
187  virtual void slot_objectAdded(makVrf::DtSimObjectReference);
188 
189 signals:
190  void edit();
191  void expand();
192  void collapse();
193  void setFormation();
194  void formationModified();
195 
196 public slots:
197  virtual void setSnapToGrid(bool);
198 
199 protected:
201  QString myFormation;
203  DtEntityType myObjectType;
206 
209 
210  typedef std::map<const DtVrfSubObjectParameterEntry*, makVrv::DtUniqueID> EntryToIdMap;
212 
213  typedef std::map<const DtVrfSubObjectParameterEntry*, DtVrfSubObjectParameterList> EntryToSubordinatesMap;
217 };
DtFormationEntry; readable/writeable entry in a DtFormation.
Definition: formationEntry.h:28
const DtVrfSubObjectParameterEntry * myParameterEntry
Definition: formationEditor.h:103
int myLevel
Definition: formationEditor.h:110
Definition: formationEditor.h:33
makVrv::DtDe & myDe
Definition: formationEditor.h:105
makVrf::DtEntityFacadeCollection * myRootDisplayNode
Definition: formationEditor.h:204
Definition: formationEditor.h:113
DtFormationEntry * formationEntry()
Definition: formationEditor.h:85
bool mySnapToGrid
Definition: formationEditor.h:208
DtFormationNode * parent()
Definition: formationEditor.h:43
DtEntityType myObjectType
Definition: formationEditor.h:203
DtFormation * myFormation
Definition: formationEditor.h:108
DtFormationNode * myRootNode
Definition: formationEditor.h:207
voidpf uLong int origin
Definition: ioapi.h:42
std::vector< DtFormationNode * > myChildren
Definition: formationEditor.h:104
makVrv::DtDe & myDisplayDe
Definition: formationEditor.h:106
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:63
DtVrfSubObjectParameterList is a readable/writable list of DtVrfSubObjectParameterEntrys.
Definition: vrfSubObjectParameterList.h:21
EntryToSubordinatesMap myEntryToSubordinatesMap
Definition: formationEditor.h:214
void setFormationData(DtFormationEntry *t, DtFormation *e)
Definition: formationEditor.h:79
const DtVrfSubObjectParameterEntry * parameterEntry() const
Definition: formationEditor.h:93
DtFormation * formation()
Definition: formationEditor.h:84
makVrf::DtVrfObjectFacadeInterface * displayNode()
Definition: formationEditor.h:96
DtVrfSubObjectParameterEntry.
Definition: vrfSubObjectParameterEntry.h:27
const std::vector< DtFormationNode * > & children() const
Definition: formationEditor.h:92
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:80
DtFormationEntry * myFormationEntry
Definition: formationEditor.h:107
void setParent(DtFormationNode *p)
Definition: formationEditor.h:44
Contains makVrv::DtVirtualBaseClass class.
makVrv::DtUniqueID myEditing
Definition: formationEditor.h:215
DtFormationTable * myFormationTable
Definition: formationEditor.h:200
Definition: vrfObjectFacadeInterface.h:53
std::vector< DtFormationNode * > & children()
Definition: formationEditor.h:91
makVrv::DtSignalConnectionManager myConnections
Definition: formationEditor.h:216
DtFormationTable.
Definition: formationTable.h:23
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
This class can be a base class for any editor that wants to use the Vantage display.
Definition: editingWindow.h:45
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
std::map< const DtVrfSubObjectParameterEntry *, DtVrfSubObjectParameterList > EntryToSubordinatesMap
Definition: formationEditor.h:213
bool myUpdating
Definition: formationEditor.h:205
EntryToIdMap myEntryToIdMap
Definition: formationEditor.h:211
makVrf::DtVrfObjectFacadeInterface * myDisplayNode
Definition: formationEditor.h:102
Will create entity facades for each realized model set and manage them all.
Definition: entityFacadeCollection.h:67
DtVrfSubObjectParameterList mySubordinateList
Definition: formationEditor.h:202
void setFormation(DtFormation *t)
Definition: formationEditor.h:81
Base class to provide boost signal/slot management.
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:101
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:76
std::map< const DtVrfSubObjectParameterEntry *, makVrv::DtUniqueID > EntryToIdMap
Definition: formationEditor.h:210
DtVector myOrigin
Definition: formationEditor.h:109
#define DT_DLL_simulationObjectEditorimpl
This file is used to determine how to build.
Definition: simulationObjectEditorImplDefines.h:33
QString myFormation
Definition: formationEditor.h:201

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)