VR-Forces 4.6.1 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
orbatManager.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2017 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
9 
11 #include <vector>
14 
15 class DtSimMessage;
16 class DtOrbatManagerNode;
17 class DtlInputStream;
18 class DtIsOrbatEnabledCommand;
19 class DtSetIsOrbatEnabledCommand;
20 
25 {
26 private:
30  DtOrbatManager(const DtOrbatManager& orig);
32  DtOrbatManager& operator=(const DtOrbatManager& orig);
33 
34 public:
35  typedef boost::unordered_map<DtUUID, DtOrbatManagerNode*> UUIDMap;
36 
40  virtual ~DtOrbatManager();
41 
42  virtual bool init();
43 
45  virtual void closingScenario();
46 
48  virtual void setOrbatEnabled(bool);
49  virtual bool orbatEnabled() const;
50 
53  virtual DtOrbatDataList addOrUpdateObjectsInOrbat(const DtOrbatDataList&, int flags = DtIfOrbatOperation::IterateChildrenOnAdd);
54 
57  virtual DtOrbatDataList removeObjectsFromOrbat(const DtOrbatDataList&);
58 
61  virtual DtOrbatDataList removeObjectFromOrbat(const DtRwOrbatData&, bool onlyPublished = false);
62 
64  virtual void sendOrbatList(int requestId = 0);
65 
67  virtual void clearOrbat(bool send = false);
68 
70  virtual void mergeFrom(const DtOrbatManager& fromOm, bool sendNewList = false);
71 
73  virtual bool loadOrbat(const DtFilename&, bool send = false, bool clearOnLoad = true);
74  virtual bool loadOrbatFromZipFile(const DtFilename& scenarioZipFile, const std::string&, bool send = false, bool clearOnLoad = true);
75 
77  virtual bool loadOrbat(const std::string& str, bool send = false, bool clearOnLoad = true);
78 
80  virtual bool writeOrbat(const DtFilename&);
81 
83  virtual bool writeOrbat(std::string&);
84 
86  virtual DtOrbatManagerNode* addNode(const DtRwOrbatData&);
87 
88  virtual DtOrbatManagerNode* lookupNodeByUUID(const DtUUID& id) const;
89 
92  virtual DtOrbatManagerNode* lookupNodeByMarkingText(const DtString&) const;
93 
94  const UUIDMap& nodes() const { return myOrbatNodes; };
95 
97  virtual DtOrbatDataList modifyOrbatObjects(const DtOrbatDataList&);
98 
101  virtual DtOrbatDataList modifyOrbatObject(const DtRwOrbatData&);
102 
106  virtual DtVrfObject* createOrReturnSuperiorOf(const DtUUID&, const DtVector& locationOfSuperior = DtVector::zero());
107 
109  virtual void createSubordinatesOfObject(const DtUUID&);
110 
112  virtual void tick();
113 
114  virtual void aboutToDeleteObjectManager();
115 
116  virtual void processVrfObjectAdded(DtVrfObject*, int flags = 0);
117 
120  virtual void makeAllSimulationObjectsPartOfOrbat();
121 
122 protected:
124  virtual DtString trimNameForLength(int maxLength, const DtString&) const;
125 
127  virtual DtOrbatManagerNode* createOrbatManagerNode() const;
128 
130  virtual void processOrbatOperation(DtSimMessage* msg);
131  static void orbatOperationCallback(DtSimMessage* msg, void* usr);
132 
135  virtual DtOrbatDataList createOrbatNodes(const DtRwOrbatData&, int flags = DtIfOrbatOperation::IterateChildrenOnAdd);
136 
137  virtual bool loadOrbat(DtlInputStream*, bool send);
138 
140  virtual DtString generateMarkingText(const DtEntityType&);
141 
142  static void vrfObjectAdded(DtVrfObject*, void* usr);
143 
144  static void vrfObjectAboutToBeRemoved(DtVrfObject*, void* usr);
145  virtual void processVrfObjectAboutToBeRemoved(DtVrfObject*);
146 
148  static void organizationManagerNodeAdded(const DtUUID&, void*);
149  virtual void processOrganizationManagerNodeAdded(const DtUUID&);
150  virtual void processOrganizationManagerNodeAdded(DtOrganizationManagerNode*);
151 
152  virtual void removeWatchedNode(const DtUUID&);
153 
154  static void childAddedCallback(const DtUUID& superior, const DtUUID& subordinate, void* usr);
155  virtual void processChildAdded(const DtUUID& superior, const DtUUID& subordinate);
156 
157  static void childRemovedCallback(const DtUUID& superior, const DtUUID& subordinate, void* usr);
158  virtual void processChildRemoved(const DtUUID& superior, const DtUUID& subordinate);
159 
160  static void organizationManagerNodeAboutToBeRemoved(const DtUUID&, void*);
161  virtual void processOrganizationManagerNodeAboutToBeRemoved(const DtUUID&);
162 
163  static void orbatNodeRemovedCallback(const DtUUID&, const DtUUID&, void*);
164  virtual void processOrbatNodeRemoved(const DtUUID&, const DtUUID&);
165 
167  virtual void reorderOrbatNodesExcluding(DtOrbatManagerNode*);
168 
170  virtual void setOrbatNodeOrder(DtOrbatManagerNode*, int order, bool inserting = false);
171  virtual void insertOrbatNodeInOrder(DtOrbatManagerNode*, int order);
172 
173  virtual DtOrbatManagerNode* rootNodeForForce(int);
174 
175  static void objectDataChangedCallback(DtVrfObject*, int flag, void* usr);
176  virtual void processObjectDataChanged(DtVrfObject*, int flag);
177 
179  virtual DtOrbatDataList setForceToSubordinatesOf(int force, DtOrbatManagerNode*) const;
180 
181 protected:
183 
184  typedef std::vector<DtOrbatManagerNode*> OrbatNodeList;
185  typedef std::map<DtUUID, OrbatNodeList> UnparentedOrbatNodes;
186 
189 
191 
193  std::map<std::string, int> myEntityTypeCounts;
194 
195  typedef std::map<DtUUID, DtOrganizationManagerNode*> WatchedNodes;
197 
200 
201  typedef std::map<int, DtOrbatManagerNode*> RootNodesByForce;
203 
204  DtIsOrbatEnabledCommand* myIsOrbatEnabledCommand;
205  DtSetIsOrbatEnabledCommand* mySetIsOrbatEnabledCommand;
206 };

Document ID: Generated on Wed Jul 25 16:57:45 EDT 2018 from SVN revision 190790
Copyright © 2005-2018 VT MÄK. All Rights Reserved (www.mak.com)