VR-Forces 4.0.4 Class Documentation
include/vrfobjcore/aggregateSpatialModel.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2006 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /*******************************************************************************
00006 ** $RCSfile: aggregateSpatialModel.h,v $ $Revision: 1.7 $ $State: Exp $
00007 *******************************************************************************/
00008 
00011 
00017 
00018 #ifndef DtAggregateSpatialModel_H_
00019 #define DtAggregateSpatialModel_H_
00020 
00021 #include "vrfobjcore/vrfobjcoreDefines.h"
00022 #include "vrfobjcore/aggregateSpatialData.h"
00023 #include "vrfobjcore/aggregateNode.h"
00024 #include "vrfobjcore/orgViewManagedObjList.h"
00025 
00026 #include <vlutil/vlString.h>
00027 #include <vlutil/vlSmartPointers.h>
00028 
00029 #include <map>
00030 #include <list>
00031 
00032 typedef DtBoost::shared_ptr<DtAggregateData> DtAggregateDataPtr;
00033 typedef DtBoost::shared_ptr<const DtAggregateData> DtAggregateDataConstPtr;
00034 
00035 class DtAggregateSpatialData;
00036 class DtExerciseClock;
00037 class DtVrfObjectManager;
00038 class DtOrganizationManagerNode;
00039 class DtVrfObject;
00040 class DtSimBoundingGeometry;
00041 
00050 class DT_DLL_vrfobjcore DtAggregateSpatialModel
00051 {
00052 public:
00053 
00055    DtAggregateSpatialModel(DtVrfObjectManager& objectManager, 
00056       const DtExerciseClock& exerciseClock);
00057 
00059    virtual ~DtAggregateSpatialModel();
00060 
00064    virtual void init();
00065 
00070    virtual void timedTick();
00071 
00075    virtual void setTickPeriodUsesRealTime(bool value);
00076    virtual bool tickPeriodUsesRealTime() const;
00077 
00080    virtual void setMinTickPeriod(double minTickPeriod);
00081 
00083    virtual double minTickPeriod() const;
00084 
00086    virtual void setMinTickPeriodVariance(double minTickPeriodVariance);
00087 
00089    virtual double minTickPeriodVariance() const;
00090 
00094    virtual void setNextTickTime(double nextTickTime);
00095 
00097    virtual double nextTickTime() const;
00098 
00101    virtual void setTickAsFastAsPossibleWhenPaused(bool yesNo);
00102    virtual bool tickAsFastAsPossibleWhenPaused() const;
00103 
00109    virtual  DtAggregateSpatialDataConstPtr lookup(
00110       const DtEntityIdentifier& id) const;
00111 
00113    virtual void printHierarchy() const;
00114 
00115 protected:
00116 
00122    virtual double calculateNextTickTime() const;
00123 
00131    virtual void tick();
00132 
00135    virtual void destroyTreesAndMap();
00136 
00139    virtual void buildTreesAndMap();
00140 
00143    virtual void traverseTreesAndUpdateNodes();
00144 
00147    virtual DtAggregateNodePtr createNode(
00148       const DtOrganizationManagerNode& orgViewNode);
00149 
00155    virtual void updateNode(DtAggregateNodePtr node);
00156 
00158    virtual bool updateNodeData(DtAggregateNodePtr node, 
00159       const DtAggregateSpatialData& newData);
00160 
00167    virtual bool computeState(DtAggregateNodeConstPtr node, 
00168       DtAggregateSpatialData& state);
00169 
00175    virtual bool computeOrientation(DtAggregateNodeConstPtr node, 
00176       DtAggregateNodeList subordinates,
00177       DtDcm& geocentricOrientation, double& heading);
00178 
00191    virtual bool computeLocationAndBoundingGeometry(
00192       DtAggregateNodeConstPtr node, 
00193       DtAggregateNodeList subordinates,
00194       const DtDcm& geocentricOrientation,
00195       DtVector& geocentricLocation, 
00196       DtSimBoundingGeometry& boundingGeometry);
00197 
00203    virtual bool computeVelocity(DtAggregateNodeConstPtr node, 
00204       DtAggregateNodeList subordinates,
00205       DtVector& geocentricVelocity);
00206 
00210    virtual void subordinatesToIncludeInComputingState(
00211       DtAggregateNodeConstPtr node, 
00212       DtAggregateNodeList& list);
00213 
00220    virtual DtOrgViewManagedObjectListConstPtr subordinatesToIncludeInComputingState(
00221       DtAggregateNodeConstPtr node) const;
00222 
00225    virtual void processNodeAdded(DtEntityIdentifier eid);
00226 
00229    virtual void processNodeRemoved(DtEntityIdentifier eid);
00230 
00232    virtual void processChildAdded(DtEntityIdentifier eid);
00233 
00235    virtual void processChildRemoved(DtEntityIdentifier eid);
00236 
00240    virtual void registerOrgViewCallbacks();
00241    void unregisterOrgViewCallbacks();
00243 
00247    virtual void registerAggregateNodeCallbacks(
00248       DtOrganizationManagerNode& aggregateNode);
00249    void unregisterAggregateNodeCallbacks(
00250       DtOrganizationManagerNode& aggregateNode);
00252 
00253 
00257    virtual bool organizationHasChanged() const;
00258    virtual void setOrganizationHasChanged(bool yesNo);
00260 
00262    virtual void printNode(DtAggregateNodePtr node, int indentLevel = 0) const;
00263 
00264 public:
00265 
00268    static void nodeAddedCallback(DtEntityIdentifier eid, void* userData);
00269 
00272    static void nodeRemovedCallback(DtEntityIdentifier eid, void* userData);
00273 
00276    static void childAddedCallback(DtEntityIdentifier eid, void* userData);
00277 
00280    static void childRemovedCallback(DtEntityIdentifier eid, void* userData);
00281 
00282 private:
00283 
00285    DtAggregateSpatialModel(const DtAggregateSpatialModel& orig);
00286 
00288    DtAggregateSpatialModel& operator=(const DtAggregateSpatialModel& orig);
00289 
00290 protected:
00291 
00292    typedef std::map<DtEntityIdentifier, DtAggregateNodePtr> DtAggregateNodeMap;
00293 
00296    DtAggregateNodeMap myNodeMap;
00297    
00299    DtAggregateNodeList myRootNodeList;
00300 
00301    const DtExerciseClock& myExerciseClock;
00302 
00306    DtVrfObjectManager& myObjectManager;
00307    
00310    bool myOrganizationHasChanged;
00311 
00313    bool myTickPeriodUsesRealTime;
00314    double myMinTickPeriod;
00315    double myMinTickPeriodVariance;
00316    double myNextTickTime;
00317    double myLastTickSimTime;
00318    bool myTickAsFastAsPossibleWhenPaused;
00319 };
00320 
00321 #endif

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)