VR-Forces 4.10 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;
21 
26 {
27 private:
31  DtOrbatManager(const DtOrbatManager& orig);
33  DtOrbatManager& operator=(const DtOrbatManager& orig);
34 
35 public:
36  typedef boost::unordered_map<DtUUID, DtOrbatManagerNode*> UUIDMap;
37 
41  virtual ~DtOrbatManager();
42 
43  virtual bool init();
44 
46  virtual void closingScenario();
47 
49  virtual void setOrbatEnabled(bool);
50  virtual bool orbatEnabled() const;
51 
54  virtual DtOrbatDataList addOrUpdateObjectsInOrbat(const DtOrbatDataList&, int flags = DtIfOrbatOperation::IterateChildrenOnAdd);
55 
58  virtual DtOrbatDataList removeObjectsFromOrbat(const DtOrbatDataList&);
59 
62  virtual DtOrbatDataList removeObjectFromOrbat(const DtRwOrbatData&, bool onlyPublished = false);
63 
65  virtual void sendOrbatList(int requestId = 0);
66 
68  virtual void clearOrbat(bool send = false);
69 
71  virtual void mergeFrom(const DtOrbatManager& fromOm, bool sendNewList = false);
72 
74  virtual bool loadOrbat(const DtFilename&, bool send = false, bool clearOnLoad = true);
75  virtual bool loadOrbatFromZipFile(const DtFilename& scenarioZipFile, const std::string&, bool send = false, bool clearOnLoad = true);
76 
78  virtual bool loadOrbat(const std::string& str, bool send = false, bool clearOnLoad = true);
79 
81  virtual bool writeOrbat(const DtFilename&);
82 
84  virtual bool writeOrbat(std::string&);
85 
87  virtual DtOrbatManagerNode* addNode(const DtRwOrbatData&);
88 
89  virtual DtOrbatManagerNode* lookupNodeByUUID(const DtUUID& id) const;
90 
93  virtual DtOrbatManagerNode* lookupNodeByMarkingText(const DtString&) const;
94 
95  const UUIDMap& nodes() const { return myOrbatNodes; };
96 
98  virtual DtOrbatDataList modifyOrbatObjects(const DtOrbatDataList&);
99 
102  virtual DtOrbatDataList modifyOrbatObject(const DtRwOrbatData&);
103 
107  virtual const DtVrfObject* createOrReturnSuperiorOf(const DtUUID&, const DtVector& locationOfSuperior = DtVector::zero());
108 
110  virtual void createSubordinatesOfObject(const DtUUID&);
111 
113  virtual void tick();
114 
115  virtual void aboutToDeleteObjectManager();
116 
117  virtual void processVrfObjectAdded(const DtVrfObject*, int flags = 0);
118 
121  virtual void makeAllSimulationObjectsPartOfOrbat();
122 
123 protected:
125  virtual DtString trimNameForLength(int maxLength, const DtString&) const;
126 
128  virtual DtOrbatManagerNode* createOrbatManagerNode() const;
129 
131  virtual void processOrbatOperation(DtSimMessage* msg);
132  static void orbatOperationCallback(DtSimMessage* msg, void* usr);
133 
136  virtual DtOrbatDataList createOrbatNodes(const DtRwOrbatData&, int flags = DtIfOrbatOperation::IterateChildrenOnAdd);
137 
138  virtual bool loadOrbat(DtlInputStream*, bool send);
139 
141  virtual DtString generateMarkingText(const DtEntityType&);
142 
143  static void vrfObjectAdded(const DtVrfObject*, void* usr);
144 
145  static void vrfObjectAboutToBeRemoved(const DtVrfObject*, void* usr);
146  virtual void processVrfObjectAboutToBeRemoved(const DtVrfObject*);
147 
149  static void organizationManagerNodeAdded(const DtUUID&, void*);
150  virtual void processOrganizationManagerNodeAdded(const DtUUID&);
151  virtual void processOrganizationManagerNodeAdded(DtOrganizationManagerNode*);
152 
153  virtual void removeWatchedNode(const DtUUID&);
154 
155  static void childAddedCallback(const DtUUID& superior, const DtUUID& subordinate, void* usr);
156  virtual void processChildAdded(const DtUUID& superior, const DtUUID& subordinate);
157 
158  static void childRemovedCallback(const DtUUID& superior, const DtUUID& subordinate, void* usr);
159  virtual void processChildRemoved(const DtUUID& superior, const DtUUID& subordinate);
160 
161  static void organizationManagerNodeAboutToBeRemoved(const DtUUID&, void*);
162  virtual void processOrganizationManagerNodeAboutToBeRemoved(const DtUUID&);
163 
164  static void orbatNodeRemovedCallback(const DtUUID&, const DtUUID&, void*);
165  virtual void processOrbatNodeRemoved(const DtUUID&, const DtUUID&);
166 
168  virtual void reorderOrbatNodesExcluding(DtOrbatManagerNode*);
169 
171  virtual void setOrbatNodeOrder(DtOrbatManagerNode*, int order, bool inserting = false);
172  virtual void insertOrbatNodeInOrder(DtOrbatManagerNode*, int order);
173 
174  virtual DtOrbatManagerNode* rootNodeForForce(int);
175 
176  static void objectDataChangedCallback(const DtVrfObjectCallbackData&, void* usr);
177  virtual void processObjectDataChanged(const DtVrfObject*, int flag);
178 
180  virtual DtOrbatDataList setForceToSubordinatesOf(int force, DtOrbatManagerNode*) const;
181 
182 protected:
184 
185  typedef std::vector<DtOrbatManagerNode*> OrbatNodeList;
186  typedef std::map<DtUUID, OrbatNodeList> UnparentedOrbatNodes;
187 
190 
192 
194  std::map<std::string, int> myEntityTypeCounts;
195 
196  typedef std::map<DtUUID, DtOrganizationManagerNode*> WatchedNodes;
198 
201 
202  typedef std::map<int, DtOrbatManagerNode*> RootNodesByForce;
204 
205  DtIsOrbatEnabledCommand* myIsOrbatEnabledCommand;
206  DtSetIsOrbatEnabledCommand* mySetIsOrbatEnabledCommand;
207 };
UUID is a unique ID wrapper class.
Definition: rwUUID.h:222
const UUIDMap & nodes() const
Definition: orbatManager.h:95
std::vector< DtRwOrbatData > DtOrbatDataList
Definition: rwOrbatData.h:93
Definition: ifOrbatOperation.h:34
UnparentedOrbatNodes myUnparentedOrbatNodes
Definition: orbatManager.h:188
DtVrfObject is used to represent any type of simulated object (entities, aggregate, control objects) in a VR-Forces application.
Definition: vrfObject.h:215
Definition: organizationManagerNode.h:64
std::map< int, DtOrbatManagerNode * > RootNodesByForce
Definition: orbatManager.h:202
This class derives from the DtOrganizationManager and will handle all requests as it pertains to the ...
Definition: orbatManager.h:25
std::map< std::string, int > myEntityTypeCounts
Number of items used by entity type so unique name can be generated when adding nodes to the orbat...
Definition: orbatManager.h:194
std::map< DtUUID, OrbatNodeList > UnparentedOrbatNodes
Definition: orbatManager.h:186
boost::unordered_map< DtUUID, DtOrbatManagerNode * > UUIDMap
Definition: orbatManager.h:36
UUIDMap myModifiedNodes
Map of modified nodes to be sent off during a tick.
Definition: orbatManager.h:200
DtSetIsOrbatEnabledCommand * mySetIsOrbatEnabledCommand
Definition: orbatManager.h:206
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
Definition: rwOrbatData.h:20
DtVrfObjectManager * myObjectManager
Definition: orbatManager.h:191
File: simMsg.h.
Definition: simMessage.h:35
std::vector< DtOrbatManagerNode * > OrbatNodeList
Definition: orbatManager.h:185
bool myIsOrbatEnabled
Definition: orbatManager.h:183
Definition: vrfObject.h:93
class DtVrfObjectManager:
Definition: vrfObjectManager.h:202
UUIDMap myOrbatNodes
Definition: orbatManager.h:189
std::map< DtUUID, DtOrganizationManagerNode * > WatchedNodes
Definition: orbatManager.h:196
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
WatchedNodes myWatchedNodes
Definition: orbatManager.h:197
Contains the declaration of DtOrbatManagerNode, the class that represents a single node the hierarchy...
Definition: orbatManagerNode.h:18
DtIsOrbatEnabledCommand * myIsOrbatEnabledCommand
Definition: orbatManager.h:205
RootNodesByForce myRootNodesByForce
Definition: orbatManager.h:203

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)