1.1 --- a/core/TimerSys.cpp Wed May 02 21:00:13 2007 +0000
1.2 +++ b/core/TimerSys.cpp Wed May 02 22:35:51 2007 +0000
1.3 @@ -15,6 +15,17 @@
1.4 #include "TimerSys.h"
1.5
1.6 TimerSystem g_Timers;
1.7 +TickInfo g_SimTicks;
1.8 +
1.9 +inline float GetSimulatedTime()
1.10 +{
1.11 + if (g_SimTicks.ticking)
1.12 + {
1.13 + return gpGlobals->curtime;
1.14 + } else {
1.15 + return g_SimTicks.ticktime;
1.16 + }
1.17 +}
1.18
1.19 void ITimer::Initialize(ITimedEvent *pCallbacks, float fInterval, float fToExec, void *pData, int flags)
1.20 {
1.21 @@ -52,10 +63,11 @@
1.22 ITimer *pTimer;
1.23 TimerIter iter;
1.24
1.25 + float curtime = GetSimulatedTime();
1.26 for (iter=m_SingleTimers.begin(); iter!=m_SingleTimers.end(); )
1.27 {
1.28 pTimer = (*iter);
1.29 - if (gpGlobals->curtime >= pTimer->m_ToExec)
1.30 + if (curtime >= pTimer->m_ToExec)
1.31 {
1.32 pTimer->m_InExec = true;
1.33 pTimer->m_Listener->OnTimer(pTimer, pTimer->m_pData);
1.34 @@ -71,7 +83,7 @@
1.35 for (iter=m_LoopTimers.begin(); iter!=m_LoopTimers.end(); )
1.36 {
1.37 pTimer = (*iter);
1.38 - if (gpGlobals->curtime >= pTimer->m_ToExec)
1.39 + if (curtime >= pTimer->m_ToExec)
1.40 {
1.41 pTimer->m_InExec = true;
1.42 res = pTimer->m_Listener->OnTimer(pTimer, pTimer->m_pData);
1.43 @@ -83,19 +95,19 @@
1.44 continue;
1.45 }
1.46 pTimer->m_InExec = false;
1.47 - pTimer->m_ToExec = gpGlobals->curtime + pTimer->m_Interval;
1.48 + pTimer->m_ToExec = curtime + pTimer->m_Interval;
1.49 }
1.50 iter++;
1.51 }
1.52
1.53 - m_LastExecTime = gpGlobals->curtime;
1.54 + m_LastExecTime = curtime;
1.55 }
1.56
1.57 ITimer *TimerSystem::CreateTimer(ITimedEvent *pCallbacks, float fInterval, void *pData, int flags)
1.58 {
1.59 ITimer *pTimer;
1.60 TimerIter iter;
1.61 - float to_exec = gpGlobals->curtime + fInterval;
1.62 + float to_exec = GetSimulatedTime() + fInterval;
1.63
1.64 if (m_FreeTimers.empty())
1.65 {
1.66 @@ -160,7 +172,7 @@
1.67 {
1.68 if (delayExec)
1.69 {
1.70 - pTimer->m_ToExec = gpGlobals->curtime + pTimer->m_Interval;
1.71 + pTimer->m_ToExec = GetSimulatedTime() + pTimer->m_Interval;
1.72 }
1.73 pTimer->m_InExec = false;
1.74 return;
1.75 @@ -203,12 +215,14 @@
1.76 for (iter=m_SingleTimers.begin(); iter!=m_SingleTimers.end(); iter++)
1.77 {
1.78 pTimer = (*iter);
1.79 - pTimer->m_ToExec = pTimer->m_ToExec - m_LastExecTime + gpGlobals->curtime;
1.80 + pTimer->m_ToExec = pTimer->m_ToExec - m_LastExecTime + GetSimulatedTime();
1.81 }
1.82
1.83 for (iter=m_LoopTimers.begin(); iter!=m_LoopTimers.end(); iter++)
1.84 {
1.85 pTimer = (*iter);
1.86 - pTimer->m_ToExec = pTimer->m_ToExec - m_LastExecTime + gpGlobals->curtime;
1.87 + pTimer->m_ToExec = pTimer->m_ToExec - m_LastExecTime + GetSimulatedTime();
1.88 }
1.89 +
1.90 + m_LastExecTime = GetSimulatedTime();
1.91 }