![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 1999 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: simMgr.h,v $ $Revision: 1.87 $ $State: Exp $ 00007 *******************************************************************************/ 00008 #ifndef simMgr_H_ 00009 #define simMgr_H_ 00010 00011 00015 00018 00019 00020 #include "vrfutil/callbackList.h" 00021 #include <vl/hostStructs.h> 00022 #include <vlutil/vlMachineTypes.h> 00023 #include <vrfmsgs/msgExec.h> 00024 00027 class DtExerciseConn; 00028 class DtPhysicalWorld; 00029 class DtCommModelManager; 00030 class DtReflectedExtEntityList; 00031 class DtThreadSocket; 00032 class DtThreadMessageList; 00033 class DtFrameRateMonitor; 00034 class DtResourceMonitor; 00035 00038 class DtEntityType; 00039 class DtVector; 00040 class DtEchelonRoleName; 00041 class DtString; 00042 class DtList; 00043 class DtSimInterfaceMessage; 00044 class DtEntityType; 00045 class DtSimInterfaceContent; 00046 00050 class DtScheduler; 00051 class DtExerciseClock; 00052 class DtVrfObjectManager; 00053 class DtAggregateSpatialModel; 00054 class DtDetonationManager; 00055 class DtFireManager; 00056 class DtGlobalPlanManager; 00057 class DtInterfaceMessageExecutive; 00058 class DtJoyDeviceManager; 00059 class DtVrfMessageInterface; 00060 class DtStealthRemoteController; 00061 class DtHostilityManager; 00062 class DtScenarioExtrasMgr; 00063 class DtVrfSimSettingsManager; 00064 00066 typedef void (*DtSimTickFunction)(void* userData); 00067 00075 #include "vrfcore/vrfcoreDefines.h" 00076 class DT_DLL_vrfcore DtSimManager 00077 { 00078 public: 00079 00081 DtSimManager(DtExerciseConn* connection); 00082 00084 virtual ~DtSimManager(); 00085 00086 private: 00087 00090 DtSimManager(const DtSimManager& orig); 00091 00094 DtSimManager& operator=(const DtSimManager& orig); 00095 00096 public: 00097 00102 virtual bool init(); 00103 00113 virtual bool createExerciseClock(); 00114 00115 virtual bool createScheduler(); 00116 virtual bool createMessageInterface(); 00117 virtual bool createFrameRateMonitor(); 00119 virtual bool createVrfSimSettingsManager(); 00120 00123 virtual void tick(); 00124 00125 00131 virtual void setTargetFrameRate(int rate); 00132 virtual int targetFrameRate() const; 00134 00137 virtual void sleep() const; 00138 00139 virtual bool deliverMessage(const DtSimInterfaceMessage& msg); 00140 virtual bool receiveMessage(const DtSimInterfaceMessage& msg); 00141 00142 virtual bool createAndDeliverMessage( 00143 const DtSimulationAddress& recipient, 00144 const DtSimInterfaceContent & content, 00145 bool overrideTimestampOrder = true); 00146 00147 #if XXX 00148 00149 virtual bool createAndDeliverMessage(const DtSimulationAddress& sender, 00150 const DtSimulationAddress& recipient, 00151 const DtSimInterfaceContent & content); 00152 #endif 00153 00161 00162 virtual void addTickEntry(DtSimTickFunction tickFunction, void* userData); 00163 virtual void removeTickEntry(DtSimTickFunction tickFunction, void* userData); 00165 00169 virtual DtExerciseConn* exerciseConn(); 00170 00173 virtual DtExerciseClock* exerciseClock(); 00174 00179 virtual DtFrameRateMonitor* frameRateMonitor(); 00180 00182 virtual DtScheduler* scheduler(); 00183 00186 00187 virtual void setPhysicalWorld(DtPhysicalWorld* newPhysicalWorld); 00188 virtual DtPhysicalWorld* physicalWorld(); 00189 virtual const DtPhysicalWorld* physicalWorld() const; 00191 00193 00194 virtual void setCommModelManager(DtCommModelManager* newCommModelManager); 00195 virtual DtCommModelManager* commModelManager(); 00196 virtual const DtCommModelManager* commModelManager() const; 00198 00201 virtual void setVrfObjectManager (DtVrfObjectManager* entityManager); 00202 virtual DtVrfObjectManager* vrfObjectManager(); 00203 virtual const DtVrfObjectManager* vrfObjectManager() const; 00204 00207 virtual void setAggregateSpatialModel (DtAggregateSpatialModel* aggregateSpatialModel); 00208 virtual DtAggregateSpatialModel* aggregateSpatialModel(); 00209 virtual const DtAggregateSpatialModel* aggregateSpatialModel() const; 00210 00214 virtual void setDetonationManager(DtDetonationManager* detonationManager); 00215 virtual DtDetonationManager* detonationManager(); 00216 00222 virtual void setFireManager(DtFireManager* fireManager); 00223 virtual DtFireManager* fireManager(); 00224 00228 00229 virtual void setGlobalPlanManager(DtGlobalPlanManager* planManager); 00230 virtual const DtGlobalPlanManager* globalPlanManager() const; 00231 virtual DtGlobalPlanManager* globalPlanManager(); 00233 00235 virtual void setJoyDeviceManager(DtJoyDeviceManager* joyDeviceManager); 00236 virtual const DtJoyDeviceManager* joyDeviceManager() const; 00237 virtual DtJoyDeviceManager* joyDeviceManager(); 00238 00240 00241 virtual void setHostilityManager(DtHostilityManager* hostilityManager); 00242 virtual const DtHostilityManager* hostilityManager() const; 00243 virtual DtHostilityManager* hostilityManager(); 00245 00247 00248 virtual void setScenarioExtrasMgr(DtScenarioExtrasMgr* scenarioExtrasMgr); 00249 virtual const DtScenarioExtrasMgr* scenarioExtrasMgr() const; 00250 virtual DtScenarioExtrasMgr* scenarioExtrasMgr(); 00252 00254 virtual void setStealthRemoteController(DtStealthRemoteController* controller); 00255 virtual DtStealthRemoteController* stealthRemoteController(); 00256 00258 virtual DtVrfSimSettingsManager* vrfSimSettingsManager(); 00259 00262 virtual void addMessageCallback(int type, DtMessageCallbackFcn fcn, 00263 void* usrData); 00264 00265 virtual void removeMessageCallback(int type, DtMessageCallbackFcn fcn, 00266 void* usrData); 00267 00271 00272 virtual DtVrfMessageInterface* messageInterface() const; 00273 virtual DtInterfaceMessageExecutive* messageExecutive(); 00274 00277 static void TickFunction(void* userData); 00278 00282 virtual void registerInterfaceCallbacks(); 00283 00286 virtual const DtSimulationAddress& messageAddress() const; 00287 00289 static void randSeedCallback(DtSimMessage* msg, void* usr); 00290 00292 virtual unsigned long sequenceNumber(); 00293 00296 virtual void setSequenceNumber(unsigned long sequenceNumber); 00297 00299 DtResourceMonitor* resourceMonitor(); 00300 void setResourceMonitor(DtResourceMonitor*); 00301 00303 virtual int vrfSessionId() const; 00304 00306 virtual int vrfMessageVersionSupported() const; 00307 00308 protected: 00309 00311 DtScheduler* myScheduler; 00316 DtExerciseClock* myExerciseClock; 00317 DtNoArgumentCallbackList myTickList; 00318 DtFrameRateMonitor* myFrameRateMonitor; 00319 DtVrfSimSettingsManager* myVrfSimSettingsManager; 00321 DtVrfMessageInterface* myMessageInterface; 00322 00324 DtExerciseConn* myExerciseConn; 00325 DtPhysicalWorld* myPhysicalWorld; 00326 DtCommModelManager* myCommModelManager; 00327 DtVrfObjectManager* myVrfObjectManager; 00328 DtAggregateSpatialModel* myAggregateSpatialModel; 00329 DtDetonationManager* myDetonationManager; 00330 DtFireManager* myFireManager; 00331 DtGlobalPlanManager* myGlobalPlanManager; 00332 DtJoyDeviceManager* myJoyDeviceManager; 00333 DtHostilityManager* myHostilityManager; 00334 DtScenarioExtrasMgr* myScenarioExtrasMgr; 00335 DtResourceMonitor* myResourceMonitor; 00336 DtStealthRemoteController* myStealthRemoteController; 00337 00338 int myTargetFrameRate; 00339 }; 00340 00341 inline DtResourceMonitor* DtSimManager::resourceMonitor() 00342 { 00343 return myResourceMonitor; 00344 } 00345 00346 inline void DtSimManager::setResourceMonitor(DtResourceMonitor* m) 00347 { 00348 myResourceMonitor = m; 00349 } 00350 00351 #endif 00352