public double TimeLeft(uint token) { XTimerMgr.XTimer xTimer = null; if (this._dict.TryGetValue(token, out xTimer)) { return(xTimer.TimeLeft()); } return(0.0); }
private void KillTimer(XTimerMgr.XTimer timer) { if (timer == null) { return; } this._timers.PopHeapAt(timer.Here); this.Discard(timer); }
private XTimerMgr.XTimer GetTimer(double trigger, object handler, object parma, uint token, bool global, int id = -1) { if (this._pool.Count > 0) { XTimerMgr.XTimer xTimer = this._pool.Dequeue(); xTimer.Refine(trigger, handler, parma, token, global, id); return(xTimer); } return(new XTimerMgr.XTimer(trigger, handler, parma, token, global, id)); }
public void AdjustTimer(float interval, uint token, bool closed = false) { XTimerMgr.XTimer xTimer = null; if (this._dict.TryGetValue(token, out xTimer) && !xTimer.IsInPool) { double trigger = closed ? (this._elapsed - (double)(Time.deltaTime * 0.5f) + Math.Round((double)interval, 3)) : (this._elapsed + Math.Round((double)interval, 3)); double triggerTime = xTimer.TriggerTime; xTimer.Refine(trigger); this._timers.Adjust(xTimer, triggerTime < xTimer.TriggerTime); } }
private void Discard(XTimerMgr.XTimer timer) { if (timer.IsInPool) { return; } if (this._dict.Remove(timer.Token)) { timer.IsInPool = true; this._pool.Enqueue(timer); } }
public void KillTimer(uint token) { if (token == 0u) { return; } XTimerMgr.XTimer timer = null; if (this._dict.TryGetValue(token, out timer)) { this.KillTimer(timer); } }
private void TriggerTimers() { while (this._timers.HeapSize > 0) { XTimerMgr.XTimer xTimer = this._timers.Peek(); float num = (float)(this._elapsed - xTimer.TriggerTime); if (num < 0f) { break; } this.ExecuteTimer(this._timers.PopHeap(), num); } }
public uint SetTimerAccurate(float interval, XTimerMgr.AccurateElapsedEventHandler handler, object param) { this._token += 1u; if (interval <= 0f) { handler(param, 0f); this._token += 1u; } else { double trigger = this._elapsed + Math.Round((double)interval, 3); XTimerMgr.XTimer timer = this.GetTimer(trigger, handler, param, this._token, false, -1); this._timers.PushHeap(timer); this._dict.Add(this._token, timer); } return(this._token); }
public uint SetTimer <TEnum>(float interval, XTimerMgr.ElapsedIDEventHandler handler, object param, TEnum e) where TEnum : struct { this._token += 1u; int id = XFastEnumIntEqualityComparer <TEnum> .ToInt(e); if (interval <= 0f) { handler(param, id); this._token += 1u; } else { double trigger = this._elapsed + Math.Round((double)interval, 3); XTimerMgr.XTimer timer = this.GetTimer(trigger, handler, param, this._token, false, id); this._timers.PushHeap(timer); this._dict.Add(this._token, timer); } return(this._token); }
private void ExecuteTimer(XTimerMgr.XTimer timer, float delta) { this.Discard(timer); timer.Fire(delta); }