![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 1999 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: exClock.h,v $ $Revision: 1.19 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00017 00018 #ifndef DtExerciseClock_H_ 00019 #define DtExerciseClock_H_ 00020 00021 #include "vrfutil/vlClock.h" 00022 #include "vrfcore/timer.h" 00023 00024 class DtSimManager; 00025 class DtSimTimeRepository; 00026 class DtString; 00027 class DtSimMessage; 00028 class DtIfSetTimeMultiplier; 00029 00030 typedef DtRwReal DtRwTime; 00031 00039 #include "vrfcore/vrfcoreDefines.h" 00040 class DT_DLL_vrfcore DtExerciseClock : public DtSimClock 00041 { 00042 public: 00043 00045 DtExerciseClock(); 00046 00048 DtExerciseClock(DtSimManager *simManager); 00049 00051 DtExerciseClock(const DtExerciseClock& orig); 00052 00054 DtExerciseClock& operator=(const DtExerciseClock& orig); 00055 00056 00058 virtual ~DtExerciseClock(); 00059 00062 virtual void init(); 00063 00065 virtual void reset(); 00066 00068 virtual void tick(); 00069 00071 virtual void pause(); 00072 00074 virtual void resume(); 00075 00077 virtual bool isPaused() const; 00078 00081 virtual void setFixedFrameMode(DtTime dT); 00082 virtual bool isFixedFrameMode(); 00083 00085 virtual void setRunToCompleteFrameMode(); 00086 virtual bool isRunToCompleteFrameMode(); 00087 00089 virtual void setHybridFrameMode(DtTime dT); 00090 virtual bool isHybridFrameMode(); 00091 00094 virtual void setFixedFrameRate(DtTime dT); 00095 00098 virtual DtTime fixedFrameRate(); 00099 00103 virtual void setTimeMultiplier(DtFloat64 timeMultiplier); 00104 00106 virtual DtFloat64 timeMultiplier() const; 00107 00108 00110 virtual DtString &elapsedSimTimeString(DtString &strBuffer) const; 00111 00113 virtual void setExerciseStartTime(DtTime time); 00114 00116 virtual DtTime exerciseStartTime() const; 00117 00118 virtual DtString &exerciseStartTimeString(DtString &strBuffer) const; 00119 00121 virtual DtTime exerciseTime() const; 00122 00123 virtual DtString &exerciseTimeString(DtString &strBuffer) const; 00124 00127 virtual void set_dT(DtTime dT); 00128 00130 virtual DtTime dT() const; 00131 00132 virtual double simTimeScale() const; 00133 00137 virtual void registerInterfaceCallbacks(); 00138 00141 static void setTimeMultiplierCallback(DtSimMessage* msg, void * usr); 00142 00144 static void frameModeCallback(DtSimMessage* msg, void * usr); 00145 00146 protected: 00147 00149 virtual void processSetTimeMultiplier(const DtIfSetTimeMultiplier& 00150 timeMultiplerData); 00151 00152 protected: 00153 00154 enum FrameMode { FmRunToComplete, FmFixed, FmHybrid } myFrameMode; 00155 00156 bool myFirstFrame; 00157 bool myPaused; 00158 DtTime myLastRealTime; 00159 DtTime my_dT; 00160 DtFloat64 myTimeMultiplier; 00161 DtSimManager * mySimManager; 00162 DtTime myFixedFrameRate; 00163 DtTime myExerciseStartTime; 00164 double mySimTimeScale; 00165 DtTime myLastSetSimTime; 00166 }; 00167 00168 inline bool DtExerciseClock::isPaused() const 00169 { 00170 return myPaused; 00171 } 00172 00173 #endif