![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 1999-2000 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: frameRateMon.h,v $ $Revision: 1.19 $ $State: Exp $ 00007 *******************************************************************************/ 00008 #ifndef frameRateMon_H_ 00009 #define frameRateMon_H_ 00010 00013 00019 00020 #include <vlutil/vlString.h> 00021 #include <vl/hostStructs.h> 00022 #include <vector> 00023 #include "vrfutil/averager.h" 00024 00025 class DtPeriodicTimer; 00026 class DtSimManager; 00027 class DtSimInterfaceMessage; 00028 class DtSimMessage; 00029 class DtTimer; 00030 00031 #include "vrfcore/vrfcoreDefines.h" 00032 class DT_DLL_vrfcore DtFrameRateMonitor 00033 { 00034 public: 00035 typedef std::vector<DtSimulationAddress> DtFrameRateRequesters; 00036 typedef DtFrameRateRequesters::iterator DtFrameRateRequestersIter; 00037 typedef DtFrameRateRequesters::const_iterator DtFrameRateRequestersConstIter; 00038 00042 DtFrameRateMonitor(); 00043 00045 DtFrameRateMonitor(DtSimManager* simManager); 00046 00048 DtFrameRateMonitor(const DtFrameRateMonitor& orig); 00049 00051 const DtFrameRateMonitor& operator=(const DtFrameRateMonitor& orig); 00052 00054 virtual bool init(); 00055 00058 virtual void setSimManager(DtSimManager* simManager); 00059 00061 virtual bool registerInterfaceCallbacks(); 00062 00063 virtual double meanFrameRate(); 00064 00065 virtual double medianFrameRate(); 00066 00067 virtual double standardDeviationFrameRate(); 00068 00069 virtual double minimumFrameRate(); 00070 00071 virtual double maximumFrameRate(); 00072 00073 virtual double simTimeToRealTimeRatio(); 00074 00079 virtual void addSample(double frameTime); 00080 00084 virtual double lastSample() const; 00085 00088 virtual void reset(bool sendReport = false); 00089 00091 virtual void setNumberOfFramesToAverage(unsigned int numFramesToAverage); 00092 virtual unsigned int numberOfFramesToAverage(); 00093 00094 virtual void setReportMean(bool reportMean); 00095 virtual bool reportMean() const; 00096 00097 virtual void setReportMedian(bool reportMedian); 00098 virtual bool reportMedian() const; 00099 00100 virtual void setReportStandardDeviation(bool reportStandardDeviation); 00101 virtual bool reportStandardDeviation() const; 00102 00103 virtual void setReportMinimum(bool reportMinimum); 00104 virtual bool reportMinimum() const; 00105 00106 virtual void setReportMaximum(bool reportMaximum); 00107 virtual bool reportMaximum() const; 00108 00109 virtual void setReportToConsole(bool reportToConsole); 00110 virtual bool reportToConsole() const; 00111 00112 virtual void setReportSimTimeToRealTimeRatio(bool reportSimTimeToRealTimeRatio); 00113 virtual bool reportSimTimeToRealTimeRatio() const; 00114 00116 virtual void processFrameRateRequestMessage(DtSimInterfaceMessage* message); 00117 00119 virtual void generateReport(); 00120 00123 virtual void pause(); 00124 virtual void resume(); 00125 00127 virtual bool isPaused() const; 00128 00130 virtual ~DtFrameRateMonitor(); 00131 00132 static void frameRateRequestCallback(DtSimMessage* msg, void* usr); 00133 static void reportTimerCallback(DtTimer* timer); 00134 00135 protected: 00136 virtual void removeTimer(); 00137 virtual void setTimer(double period); 00138 00139 protected: 00140 00143 double myCurrentFrameRate; 00144 00146 bool myReportMeanFlag; 00147 bool myReportMedianFlag; 00148 bool myReportStandardDeviationFlag; 00149 bool myReportMinimumFlag; 00150 bool myReportMaximumFlag; 00151 bool myReportToConsoleFlag; 00152 bool myReportSimTimeToRealTimeRatioFlag; 00153 00154 DtAverager myAverager; 00155 00156 DtSimManager* mySimManager; 00157 DtPeriodicTimer* myReportTimer; 00158 double myCurrentResponsePeriod; 00159 DtTime myLastReportTimerCbSimTime; 00160 DtTime myLastReportTimerCbRealTime; 00161 DtTime mySimTimeRealTimeRatio; 00162 00164 DtFrameRateRequesters myRequesters; 00165 00166 private: 00168 bool myIsPaused; 00169 }; 00170 00171 00172 #endif