rendered paste bodyusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WCell.Core.Timers
{
public struct TimerEntry
{
private float TotalTime, LastTick;
public float InitialDelay, Interval;
Action<float> Callback;
public TimerEntry(float delay, float interval, Action<float> callback)
{
TotalTime = LastTick = 0.0f;
InitialDelay = delay;
Interval = interval;
Callback = callback;
}
public void Start()
{
LastTick = 0.0f;
}
public void Stop()
{
LastTick = -1.0f;
}
public void Update(float updateDelta)
{
// means this timer is not running.
if (LastTick == -1.0f)
return;
TotalTime += updateDt;
float tickDelta = TotalTime - LastTick;
if (LastTick == 0.0f && tickDelta >= InitialDelay)
{
// initial fire.
Callback(TotalTime);
LastTick = TotalTime;
}
else if (LastTick > 0.0f && tickDelta >= Interval)
{
// time to fire off? i tink so!
Callback(TotalTime);
LastTick = TotalTime;
}
}
}
}