void OnUpdate() { if (!m_active) { return; } if (m_timers.Count > 0) { var enumerator = m_timers.GetEnumerator(); while (enumerator.MoveNext()) { if (enumerator.Current.Value.IsDone) { m_toRemove.Add(enumerator.Current.Value); } else { enumerator.Current.Value.OnUpdate(); } } enumerator.Dispose(); } int removeLen = m_toRemove.Count; if (removeLen > 0) { for (int i = 0; i < removeLen; i++) { TimerData timer = m_toRemove[i]; m_timers.Remove(timer.Id); m_timerPool.Release(timer); } m_toRemove.Clear(); } int addLen = m_toAdd.Count; if (addLen > 0) { for (int i = 0; i < addLen; i++) { m_timers.Add(m_toAdd[i].Id, m_toAdd[i]); } m_toAdd.Clear(); } }
public void SetPause(uint timerId, bool pause) { TimerData timer = GetTimerData(timerId); timer.SetPause(pause); }