VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
aggregateSpatialModel.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2015 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
14 
15 #pragma once
16 
21 #include <vrfutil/rwUUID.h>
22 
23 #include <vlutil/vlString.h>
24 #include <vlutil/vlSmartPointers.h>
25 
26 #include <map>
27 #include <list>
28 
29 typedef DtBoost::shared_ptr<DtAggregateData> DtAggregateDataPtr;
30 typedef DtBoost::shared_ptr<const DtAggregateData> DtAggregateDataConstPtr;
31 
33 class DtExerciseClock;
34 class DtVrfObjectManager;
36 class DtVrfObject;
38 
48 {
49 public:
50 
53  const DtExerciseClock& exerciseClock);
54 
56  virtual ~DtAggregateSpatialModel();
57 
61  virtual void init();
62 
67  virtual void timedTick();
68 
72  virtual void setTickPeriodUsesRealTime(bool value);
73  virtual bool tickPeriodUsesRealTime() const;
74 
77  virtual void setMinTickPeriod(double minTickPeriod);
78 
80  virtual double minTickPeriod() const;
81 
83  virtual void setMinTickPeriodVariance(double minTickPeriodVariance);
84 
86  virtual double minTickPeriodVariance() const;
87 
91  virtual void setNextTickTime(double nextTickTime);
92 
94  virtual double nextTickTime() const;
95 
98  virtual void setTickAsFastAsPossibleWhenPaused(bool yesNo);
99  virtual bool tickAsFastAsPossibleWhenPaused() const;
100 
106  virtual DtAggregateSpatialDataConstPtr lookup(
107  const DtUUID& id) const;
108 
110  virtual void printHierarchy() const;
111 
113  virtual void clear();
114 
115 protected:
116 
122  virtual double calculateNextTickTime() const;
123 
131  virtual void tick();
132 
135  virtual void destroyTreesAndMap();
136 
139  virtual void buildTreesAndMap();
140 
143  virtual void traverseTreesAndUpdateNodes();
144 
147  virtual DtAggregateNodePtr createNode(
148  const DtOrganizationManagerNode& orgViewNode);
149 
155  virtual void updateNode(DtAggregateNodePtr node, bool isTopLevel);
156 
158  virtual bool updateNodeData(DtAggregateNodePtr node,
159  const DtAggregateSpatialData& newData);
160 
167  virtual bool computeState(DtAggregateNodeConstPtr node,
168  DtAggregateSpatialData& state);
169 
175  virtual bool computeOrientation(DtAggregateNodeConstPtr node,
176  const DtAggregateNodeList& subordinates,
177  DtDcm& geocentricOrientation, double& heading);
178 
191  virtual bool computeLocationAndBoundingGeometry(
193  const DtAggregateNodeList& subordinates,
194  const DtDcm& geocentricOrientation,
195  DtVector& geocentricLocation,
196  DtSimBoundingGeometry& boundingGeometry);
197 
203  virtual bool computeVelocity(DtAggregateNodeConstPtr node,
204  const DtAggregateNodeList& subordinates,
205  DtVector& geocentricVelocity);
206 
210  virtual void subordinatesToIncludeInComputingState(
212  DtAggregateNodeList& list);
213 
220  virtual DtOrgViewManagedObjectListConstPtr subordinatesToIncludeInComputingState(
221  DtAggregateNodeConstPtr node) const;
222 
225  virtual void processNodeAdded(const DtUUID& eid);
226 
229  virtual void processNodeRemoved(const DtUUID& eid);
230 
232  virtual void processChildAdded(const DtUUID& superior, const DtUUID& eid);
233 
235  virtual void processChildRemoved(const DtUUID& superior, const DtUUID& eid);
236 
240  virtual void registerOrgViewCallbacks();
241  void unregisterOrgViewCallbacks();
243 
247  virtual void registerAggregateNodeCallbacks(
248  DtOrganizationManagerNode& aggregateNode);
249  void unregisterAggregateNodeCallbacks(
250  DtOrganizationManagerNode& aggregateNode);
252 
253 
257  virtual bool organizationHasChanged() const;
258  virtual void setOrganizationHasChanged(bool yesNo);
260 
262  virtual void printNode(DtAggregateNodePtr node, int indentLevel = 0) const;
263 
264 public:
265 
268  static void nodeAddedCallback(const DtUUID& eid, void* userData);
269 
272  static void nodeRemovedCallback(const DtUUID& eid, void* userData);
273 
276  static void childAddedCallback(const DtUUID& superior, const DtUUID& eid, void* userData);
277 
280  static void childRemovedCallback(const DtUUID& superior, const DtUUID& eid, void* userData);
281 
282 private:
283 
286 
288  DtAggregateSpatialModel& operator=(const DtAggregateSpatialModel& orig);
289 
290 protected:
291 
292  typedef std::map<DtUUID, DtAggregateNodePtr> DtAggregateNodeMap;
293 
297 
300 
302 
307 
311 
319 };
UUID is a unique ID wrapper class.
Definition: rwUUID.h:222
DtBoost::shared_ptr< const DtAggregateData > DtAggregateDataConstPtr
Definition: aggregateNode.h:31
double myNextTickTime
Definition: aggregateSpatialModel.h:316
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
DtAggregateNodeMap myNodeMap
Map of DtAggregateNodePtr&#39;s, keyed on the DtUUID of the corresponding entity/aggregate.
Definition: aggregateSpatialModel.h:296
Class Description: DtSimBoundingGeometry describes on objects bounding volume or bounding area (or no...
Definition: simBoundingGeometry.h:57
DtVrfObjectManager & myObjectManager
Used by this class to build the trees of DtAggregateNodes.
Definition: aggregateSpatialModel.h:306
const DtExerciseClock & myExerciseClock
Definition: aggregateSpatialModel.h:301
DtBoost::shared_ptr< const DtOrgViewManagedObjectList > DtOrgViewManagedObjectListConstPtr
Typedef for a shared pointer to a const DtOrgViewManagedObjectList.
Definition: orgViewManagedObjectList.h:34
std::map< DtUUID, DtAggregateNodePtr > DtAggregateNodeMap
Definition: aggregateSpatialModel.h:292
double myMinTickPeriod
Definition: aggregateSpatialModel.h:314
DtBoost::shared_ptr< const DtAggregateSpatialData > DtAggregateSpatialDataConstPtr
Definition: aggregateSpatialData.h:24
Class DtAggregateSpatialData holds aggregate location, extent, and orientation data.
Definition: aggregateSpatialData.h:29
std::list< DtAggregateNodePtr > DtAggregateNodeList
Definition: aggregateNode.h:32
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
double myMinTickPeriodVariance
Definition: aggregateSpatialModel.h:315
bool myOrganizationHasChanged
Flag indicating whether organization hierarchy has changed since the last tick.
Definition: aggregateSpatialModel.h:310
DtAggregateNodeList myRootNodeList
List of root nodes (force level nodes)
Definition: aggregateSpatialModel.h:299
class DtVrfObjectManager:
Definition: vrfObjectManager.h:201
Functor class used to allow entity identifiers to be used as a key to a std::map. ...
Definition: aggregateSpatialModel.h:47
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
DtBoost::shared_ptr< DtAggregateNode > DtAggregateNodePtr
Definition: aggregateNode.h:25
DtBoost::shared_ptr< DtAggregateData > DtAggregateDataPtr
Definition: aggregateNode.h:30
double myLastTickSimTime
Definition: aggregateSpatialModel.h:317
DtBoost::shared_ptr< const DtAggregateNode > DtAggregateNodeConstPtr
Definition: aggregateNode.h:28
bool myTickAsFastAsPossibleWhenPaused
Definition: aggregateSpatialModel.h:318
bool myTickPeriodUsesRealTime
For variable tick rate support.
Definition: aggregateSpatialModel.h:313
Description: The Exercise Clock keeps track of current simulated time.
Definition: exerciseClock.h:44

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)