![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2011 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 00008 00014 00015 #ifndef hlaExClock_H_ 00016 #define hlaExClock_H_ 00017 00018 #if DtHLA 00019 00020 #include "vrfcore/exClock.h" 00021 #include "vrfcore/timer.h" 00022 00023 #if !DtHLA_1516 00024 #include "fedtime.hh" 00025 #else 00026 #if DtHLA_1516_EVOLVED 00027 #include "RTI/LogicalTime.h" 00028 #include "RTI/LogicalTimeInterval.h" 00029 namespace RTI=rti1516e; 00030 #else 00031 #include "RTI/LogicalTime.h" 00032 #include "RTI/logicalTimeImpl.h" 00033 #include "RTI/logicalTimeIntervalImpl.h" 00034 namespace RTI=rti1516; 00035 #endif 00036 #endif 00037 00038 class DtExerciseConn; 00039 class DtHlaTimeManagementControl; 00040 00044 class DT_DLL_vrfcore DtHlaExerciseClock : public DtExerciseClock 00045 { 00046 public: 00047 00049 DtHlaExerciseClock(DtSimManager *simManager, DtExerciseConn* exerciseConn); 00050 00052 virtual ~DtHlaExerciseClock(); 00053 00054 virtual void init(); 00055 00058 virtual void tick(); 00059 00061 virtual DtTime fedTime() const; 00062 00063 virtual DtTime lookahead() const; 00064 00069 virtual DtTime effectiveSimTime() const; 00070 00074 virtual void setInitialSimTime(DtTime time); 00075 00078 virtual bool enableTimeManagementMode(DtTime lookaheadInterval); 00079 virtual bool disableTimeManagementMode(); 00080 virtual bool isInTimeManagementMode() const; 00081 00084 static void timeAdvanceGrantedCb(DtHlaTimeManagementControl* tmControl, 00085 void* usr); 00086 00087 protected: 00088 00091 virtual bool startRegulatingTime(DtTime lookaheadInterval); 00092 virtual bool stopRegulatingTime(); 00093 virtual bool isTimeRegulating() const; 00094 00096 virtual bool enableTimeConstrainedMode(); 00097 virtual bool disableTimeConstrainedMode(); 00098 virtual bool isTimeConstrained() const; 00099 00101 #if !DtHLA_1516 00102 virtual RTI::FedTime* createFederationTime(DtTime time = 0.0) const; 00103 #else 00104 virtual RTI::LogicalTime* createFederationTime(DtTime time = 0.0) const; 00105 #endif 00106 00108 #if !DtHLA_1516 00109 virtual RTI::FedTime* createFederationTimeInterval(DtTime time = 0.0) const; 00110 #else 00111 virtual RTI::LogicalTimeInterval* createFederationTimeInterval(DtTime time = 0.0) const; 00112 #endif 00113 00116 virtual DtHlaTimeManagementControl* createTimeManagementControl() const; 00117 00120 virtual void processTimeAdvanceGrantedCb(DtHlaTimeManagementControl* tmControl); 00121 00124 virtual void processSetTimeMultiplier(const DtIfSetTimeMultiplier& 00125 timeMultiplerData); 00126 00127 private: 00128 00130 DtHlaExerciseClock(const DtHlaExerciseClock& orig); 00131 00133 DtHlaExerciseClock& operator=(const DtHlaExerciseClock& orig); 00134 00135 protected: 00136 00137 DtExerciseConn* myExerciseConn; 00138 00139 DtHlaTimeManagementControl* myTimeManagementControl; 00140 00143 #if !DtHLA_1516 00144 RTI::FedTime* myInitialFederationTime; 00145 #else 00146 RTI::LogicalTime* myInitialFederationTime; 00147 #endif 00148 00149 DtTime myInitialSimTime; 00150 00151 #if !DtHLA_1516 00152 RTI::FedTime* myFederationTime; 00153 RTI::FedTime* myEffectiveFederationTime; 00154 #else 00155 RTI::LogicalTime* myFederationTime; 00156 RTI::LogicalTime* myEffectiveFederationTime; 00157 #endif 00158 00159 #if !DtHLA_1516 00160 RTI::FedTime* myLookahead; 00161 #else 00162 RTI::LogicalTimeInterval* myLookahead; 00163 DtTime myVrlLookahead; 00164 #endif 00165 }; 00166 00167 #endif //! #if DtHLA 00168 00169 #endif