summaryrefslogtreecommitdiffstats
path: root/headtrack_stereo_demo/src/ticktimer.h
diff options
context:
space:
mode:
Diffstat (limited to 'headtrack_stereo_demo/src/ticktimer.h')
-rw-r--r--headtrack_stereo_demo/src/ticktimer.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/headtrack_stereo_demo/src/ticktimer.h b/headtrack_stereo_demo/src/ticktimer.h
new file mode 100644
index 0000000..e577255
--- /dev/null
+++ b/headtrack_stereo_demo/src/ticktimer.h
@@ -0,0 +1,62 @@
+#ifndef _TICKTIMER_H
+#define _TICKTIMER_H
+
+#include <ctime>
+#include <iostream>
+
+class TickTimer
+{
+public:
+ TickTimer(double f_dUpdateDelta)
+ {
+ m_dUpdateDelta = f_dUpdateDelta;
+ m_iNrOfTicks = 0;
+ m_dTicksPS = m_dRawTicksPS = m_dAvgTicksPS = m_dRawAvgTicksPS = 0.0;
+ }
+
+ void tick()
+ {
+ //DWORD l_CurClock = timeGetTime();
+ time_t l_CurClock = clock();
+ if (m_iNrOfTicks == 0)
+ {
+ m_FirstClock = m_LastClock = l_CurClock;
+ }
+
+ //update the ticks per second, based on the last tick period
+ m_dRawTicksPS = (double)CLOCKS_PER_SEC / (double)(l_CurClock - m_LastClock);
+ //m_dRawTicksPS = 1000.0 / (double)(l_CurClock - m_LastClock);
+ double delta = (m_dRawTicksPS - m_dTicksPS);
+ if ( (delta >= m_dUpdateDelta) || (delta <= -m_dUpdateDelta) )
+ m_dTicksPS = m_dRawTicksPS;
+
+ m_LastClock = l_CurClock;
+
+ //update the ticks per second, based on the average tick period
+ m_iNrOfTicks++;
+ m_dRawAvgTicksPS = (double)m_iNrOfTicks/((double)(m_LastClock - m_FirstClock)/(double)CLOCKS_PER_SEC);
+ //m_dRawAvgTicksPS = (double)m_iNrOfTicks/((double)(m_LastClock - m_FirstClock)/1000.0);
+ delta = (m_dRawAvgTicksPS - m_dAvgTicksPS);
+ if ( (delta >= m_dUpdateDelta) || (delta <= -m_dUpdateDelta) )
+ m_dAvgTicksPS = m_dRawAvgTicksPS;
+ }
+
+ inline double getTicksPerSecond() { return m_dTicksPS; }
+ inline double getRawTicksPerSecond() { return m_dRawTicksPS; }
+ inline double getAvgTicksPerSecond() { return m_dAvgTicksPS; }
+ inline double getRawAvgTicksPerSecond() { return m_dRawAvgTicksPS; }
+
+private:
+ int m_iNrOfTicks;
+ double m_dUpdateDelta,
+ m_dTicksPS,
+ m_dRawTicksPS,
+ m_dAvgTicksPS,
+ m_dRawAvgTicksPS;
+ clock_t m_FirstClock,
+ m_LastClock;
+ /*DWORD m_FirstClock,
+ m_LastClock;*/
+};
+
+#endif //_TICKTIMER_H \ No newline at end of file