VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
organizationView.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2016 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
11 
12 #pragma once
13 
17 #include <vlutil/vlList.h>
18 #include <vlutil/vlHashlist.h>
19 #include <vl/globalObjectDesignator.h>
20 #include <vlpi/disEnums.h>
21 #include <vector>
22 #include <list>
25 #include <boost/unordered_map.hpp>
26 
27 class DtVrfObjectManager;
29 class DtVrfObject;
30 class DtEntityType;
33 class DtSimMessage;
35 
37 
43 {
44 protected:
48  DtOrganizationView& operator=(const DtOrganizationView& orig);
49 public:
50 
51  typedef boost::unordered_map<DtUUID, DtOrganizationManagerNode*> UUIDMap;
52  typedef boost::unordered_map<int, DtOrganizationManagerNode*> ForceMap;
53 
58 
60  virtual ~DtOrganizationView();
61 
62  virtual bool init();
63 
66 
67  virtual DtOrganizationManagerNode* lookupNode(const DtUUID&) const;
68 
70  virtual DtOrganizationManagerNode* lookupNodeByUUID(const DtUUID&) const;
71 
73  virtual bool removeNode(const DtUUID&);
74 
77  virtual bool isSubordinateOfTopLevel(const DtUUID&) const;
78 
80  virtual const DtUUID& superior(const DtUUID&) const;
81 
83  virtual DtSharedVrfObjectReference superiorVrfObject(const DtUUID&) const;
84 
86  virtual bool isSubordinateOf(const DtUUID& subordinate,
87  const DtUUID& superior) const;
89 
92 
94  virtual DtOrganizationManagerNode* addEntity(const DtVrfObject *vrfObject);
95 
97  virtual void removeEntity(const DtVrfObject *vrfObject);
98 
100  virtual void updateAggregate(const DtVrfObject *vrfObject);
101 
103  virtual void updateEntity(const DtVrfObject *vrfObject);
105 
111  virtual DtOrgViewManagedObjectListConstPtr getList(
112  const DtUUID& aggregate,
113  const DtVrfObjectPredicate& predicate =
115  bool reevaluateFlag = false, DtTime evaluationPeriod = 0.) const;
116 
117  virtual DtOrgViewManagedObjectListConstPtr nullList() const;
118 
121 
124  virtual DtOrganizationManagerNode* locateSuperiorNodeForGlobalId(
125  const DtGlobalObjectDesignator& globalId) const;
126 
128  virtual bool isLocal(DtOrganizationManagerNode* node) const;
129 
131  virtual void printHierarchy() const;
132 
134  virtual void printNode(DtOrganizationManagerNode* node,
135  int indentLevel = 0) const;
136 
137  virtual const DtVrfObjectManager* objectManager() const;
138 
141  virtual DtSharedVrfObjectReference topLevelObjectForForce(const DtForceType& force) const;
142 
144  virtual DtOrganizationManagerNode* topLevelNodeForForce(DtForceType force) const;
145 
147  virtual const UUIDMap& nodes() const;
148 
149  static bool isTopLevelEntity(const DtEntityType & objectType);
150 
153 
154  static bool isOrganizedAggregate(const DtVrfObject *vrfObject);
157  static bool isOrganizedEntity(const DtVrfObject *vrfObject);
158 
160 
161  static void vrfObjectAddedCallback(const DtVrfObject *vrfObject, void* usr);
162  static void vrfObjectAboutToBeRemovedCallback(const DtVrfObject *vrfObject,
163  void* usr);
164 
168  virtual void addNodeAddedCallback(
169  DtOrgViewCallbackList::DtCallbackFunctionType fcn, void* userData) const;
170  virtual void removeNodeAddedCallback(
171  DtOrgViewCallbackList::DtCallbackFunctionType fcn, void* userData) const;
173 
177  virtual void addNodeRemovedCallback(
178  DtOrgViewCallbackList::DtCallbackFunctionType fcn, void* userData) const;
179  virtual void removeNodeRemovedCallback(
180  DtOrgViewCallbackList::DtCallbackFunctionType fcn, void* userData) const;
182 
186  virtual void addNodeAboutToBeRemovedCallback(
187  DtOrgViewCallbackList::DtCallbackFunctionType fcn, void* userData) const;
188  virtual void removeNodeAboutToBeRemovedCallback(
189  DtOrgViewCallbackList::DtCallbackFunctionType fcn, void* userData) const;
191 
194  virtual void objectUUIDChanged(const DtUUID& oldUUID, const DtUUID& newUUID);
195 
196 protected:
198  virtual DtOrganizationManagerNode* createOrganizationManagerNode() const;
199 
200  virtual void processVrfObjectAdded(const DtVrfObject *vrfObject);
201 
204  virtual void processVrfObjectAboutToBeRemoved(const DtVrfObject *vrfObject);
205 
207  virtual bool shouldBeAdded(const DtVrfObject *vrfObject) const;
208 
211  virtual void findAndConnectNodeParent(DtOrganizationManagerNode* node);
212 
215  virtual void disconnectNodeParent(DtOrganizationManagerNode* node);
216 
220  virtual void findAndConnectNodeChildren(DtOrganizationManagerNode* node);
221 
223  virtual void disconnectNodeChildren(DtOrganizationManagerNode* node);
224 
228  virtual void connectNodeToTopLevel(DtOrganizationManagerNode* node,
229  bool allowCreation = true);
230 
234  virtual bool networkStateIsDifferentFromLocalState(
235  const DtOrganizationManagerNode& node) const;
236 
239  virtual void invokeNodeAddedCallbacks(const DtUUID&);
240 
243  virtual void invokeNodeRemovedCallbacks(const DtUUID&);
244 
247  virtual void invokeNodeAboutToBeRemovedCallbacks(const DtUUID&);
248 
251 
253  virtual DtSharedVrfObjectReference findObject(const DtUUID& uuid) const;
254 
255 protected:
257 
260 
263 
267 
269 };
UUID is a unique ID wrapper class.
Definition: rwUUID.h:222
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
UUIDMap myIdHashList
Hash list associating entity identifiers with nodes.
Definition: organizationView.h:262
Definition: reflectedExtAggregate.h:35
boost::unordered_map< int, DtOrganizationManagerNode * > ForceMap
Definition: organizationView.h:52
DtBoost::shared_ptr< const DtOrgViewManagedObjectList > DtOrgViewManagedObjectListConstPtr
Typedef for a shared pointer to a const DtOrgViewManagedObjectList.
Definition: orgViewManagedObjectList.h:34
This class maintains a hierarchy of the existing organized entities for a simulation based on the con...
Definition: organizationView.h:42
DtOrgViewCallbackList myNodeAddedCallbackList
Definition: organizationView.h:264
DtOrgViewCallbackList myNodeRemovedCallbackList
Definition: organizationView.h:265
*virtual const DtObjectType & objectType() const
DtOrgViewManagedObjectListManager * myManagedObjectListManager
Definition: organizationView.h:268
DtSharedVrfObjectReference class will allocate an empty DtVrfObjectReference if one is not assigned s...
Definition: vrfObjectReference.h:102
This class creates and provides DtOrgViewManagedObjectList classes.
Definition: orgViewManagedObjectListManager.h:33
Instances of DtVrfObjectPredicate are used to evaluate a condition, given a DtVrfObject as an argumen...
Definition: vrfObjectPredicate.h:21
DT_DLL_shape DtNetworkNode * findNode(DtVectorNetwork *vecNwk, unsigned int firstNode, DtPoint &p, DtSpecificationID ID)
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
File: simMsg.h.
Definition: simMessage.h:35
DtVrfObjectManager * myObjectManager
Definition: organizationView.h:256
boost::unordered_map< DtUUID, DtOrganizationManagerNode * > UUIDMap
Definition: organizationView.h:51
class DtVrfObjectManager:
Definition: vrfObjectManager.h:201
Definition: orgManagerOperations.h:18
static const DtVrfObjectPredicate & nullPredicate()
Returns an instance of a DtNullVrfObjectPredicate.
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
DtOrgViewCallbackList myNodeAboutToBeRemovedCallbackList
Definition: organizationView.h:266
ForceMap myTopLevelNodes
Hash list of top level nodes hashed by force type.
Definition: organizationView.h:259
void(* DtCallbackFunctionType)(const DtUUID &, void *)
The function signature of the callback function.
Definition: noArgumentCallbackList.h:95
DtCallbackList< const DtUUID & > DtOrgViewCallbackList
Definition: organizationView.h:34

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)