public virtual void Update(long updateDelta)
{
UpdateTime += updateDelta;
foreach (var timer in m_timerList.Where(timer => (UpdateTime - timer.LastActivated) >= timer.Delay))
{
try
{
timer.Tick(UpdateTime);
}
catch (Exception ex)
{
Logger.Error("TaskQueue[" + GetType().Name + "] timer update failed [" + timer.GetType().Name + "] : " + ex.ToString());
}
if (timer.OneShot)
{
RemoveTimer(timer);
}
}
foreach (var updatableObject in m_subUpdatableObjects)
{
try
{
updatableObject.Update(updateDelta);
}
catch (Exception ex)
{
Logger.Error("UpdatableObject[" + GetType().Name + "] update failed : " + ex.ToString());
}
}
Action msg;
while (m_messagesQueue.TryDequeue(out msg))
{
try
{
msg();
}
catch (Exception ex)
{
Logger.Error("UpdatableObject[" + GetType().Name + "] message failed to process : " + ex.ToString());
}
}
}