MCPcopy Create free account
hub / github.com/alliedmodders/sourcemod / RunFrame

Method RunFrame

core/TimerSys.cpp:252–295  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

250}
251
252void TimerSystem::RunFrame()
253{
254 ITimer *pTimer;
255 TimerIter iter;
256
257 double curtime = GetSimulatedTime();
258 for (iter=m_SingleTimers.begin(); iter!=m_SingleTimers.end(); )
259 {
260 pTimer = (*iter);
261 if (curtime >= pTimer->m_ToExec)
262 {
263 pTimer->m_InExec = true;
264 pTimer->m_Listener->OnTimer(pTimer, pTimer->m_pData);
265 pTimer->m_Listener->OnTimerEnd(pTimer, pTimer->m_pData);
266 iter = m_SingleTimers.erase(iter);
267 m_FreeTimers.push(pTimer);
268 }
269 else
270 {
271 break;
272 }
273 }
274
275 ResultType res;
276 for (iter=m_LoopTimers.begin(); iter!=m_LoopTimers.end(); )
277 {
278 pTimer = (*iter);
279 if (curtime >= pTimer->m_ToExec)
280 {
281 pTimer->m_InExec = true;
282 res = pTimer->m_Listener->OnTimer(pTimer, pTimer->m_pData);
283 if (pTimer->m_KillMe || (res == Pl_Stop))
284 {
285 pTimer->m_Listener->OnTimerEnd(pTimer, pTimer->m_pData);
286 iter = m_LoopTimers.erase(iter);
287 m_FreeTimers.push(pTimer);
288 continue;
289 }
290 pTimer->m_InExec = false;
291 pTimer->m_ToExec = CalcNextThink(pTimer->m_ToExec, pTimer->m_Interval);
292 }
293 iter++;
294 }
295}
296
297ITimer *TimerSystem::CreateTimer(ITimedEvent *pCallbacks, float fInterval, void *pData, int flags)
298{

Callers

nothing calls this directly

Calls 8

GetSimulatedTimeFunction · 0.85
CalcNextThinkFunction · 0.85
beginMethod · 0.45
endMethod · 0.45
OnTimerMethod · 0.45
OnTimerEndMethod · 0.45
eraseMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected