private Anymous_T GetFromPool() { Anymous_T t; int cnt = _pool.Count; if (cnt > 0) { t = _pool[cnt - 1]; _pool.RemoveAt(cnt - 1); t.deleted = false; t.elapsed = 0; } else { t = new Anymous_T(); } return(t); }
public void Update() { float dt = Time.unscaledDeltaTime; Dictionary <TimerCallback, Anymous_T> .Enumerator iter; if (_items.Count > 0) { iter = _items.GetEnumerator(); while (iter.MoveNext()) { Anymous_T i = iter.Current.Value; if (i.deleted) { _toRemove.Add(i); continue; } i.elapsed += dt; if (i.elapsed < i.interval) { continue; } i.elapsed -= i.interval; if (i.elapsed < 0 || i.elapsed > 0.03f) { i.elapsed = 0; } if (i.repeat > 0) { i.repeat--; if (i.repeat == 0) { i.deleted = true; _toRemove.Add(i); } } repeat = i.repeat; if (i.callback != null) { if (catchCallbackExceptions) { try { i.callback(i.param); } catch (System.Exception e) { i.deleted = true; Debug.LogWarning("FairyGUI: timer(internal=" + i.interval + ", repeat=" + i.repeat + ") callback error > " + e.Message); } } else { i.callback(i.param); } } } iter.Dispose(); } int len = _toRemove.Count; if (len > 0) { for (int k = 0; k < len; k++) { Anymous_T i = _toRemove[k]; if (i.deleted && i.callback != null) { _items.Remove(i.callback); ReturnToPool(i); } } _toRemove.Clear(); } if (_toAdd.Count > 0) { iter = _toAdd.GetEnumerator(); while (iter.MoveNext()) { _items.Add(iter.Current.Key, iter.Current.Value); } iter.Dispose(); _toAdd.Clear(); } }
private void ReturnToPool(Anymous_T t) { t.callback = null; _pool.Add(t); }
public void Update() { time = Time.time; float elapsed = time - _lastTime; if (Time.timeScale != 0) { elapsed /= Time.timeScale; } _lastTime = time; foreach (KeyValuePair <TimerCallback, Anymous_T> kvp in _items) { Anymous_T i = kvp.Value; if (i.deleted) { _toRemove.Add(i); continue; } i.elapsed += elapsed; if (i.elapsed < i.interval) { continue; } i.elapsed -= i.interval; if (i.elapsed < 0 || i.elapsed > 0.03f) { i.elapsed = 0; } if (i.repeat > 0) { i.repeat--; if (i.repeat == 0) { i.deleted = true; _toRemove.Add(i); } } repeat = i.repeat; if (i.callback != null) { try { i.callback(i.param); } catch (System.Exception e) { i.deleted = true; Debug.Log("timer callback failed, " + i.interval + "," + i.repeat); Debug.LogException(e); } } } foreach (Anymous_T i in _toRemove) { if (i.deleted && i.callback != null) { _items.Remove(i.callback); ReturnToPool(i); } } _toRemove.Clear(); foreach (KeyValuePair <TimerCallback, Anymous_T> kvp in _toAdd) { _items.Add(kvp.Key, kvp.Value); } _toAdd.Clear(); }
public void Update() { time = Time.time; float elapsed = time - _lastTime; if (Time.timeScale != 0) { elapsed /= Time.timeScale; } _lastTime = time; Dictionary <TimerCallback, Anymous_T> .Enumerator iter; if (_items.Count > 0) { iter = _items.GetEnumerator(); while (iter.MoveNext()) { Anymous_T i = iter.Current.Value; if (i.deleted) { _toRemove.Add(i); continue; } i.elapsed += elapsed; if (i.elapsed < i.interval) { continue; } i.elapsed -= i.interval; if (i.elapsed < 0 || i.elapsed > 0.03f) { i.elapsed = 0; } if (i.repeat > 0) { i.repeat--; if (i.repeat == 0) { i.deleted = true; _toRemove.Add(i); } } repeat = i.repeat; if (i.callback != null) { try { i.callback(i.param); } catch (System.Exception e) { i.deleted = true; Debug.Log("timer callback failed, " + i.interval + "," + i.repeat); Debug.LogException(e); } } } iter.Dispose(); } int len = _toRemove.Count; if (len > 0) { for (int k = 0; k < len; k++) { Anymous_T i = _toRemove[k]; if (i.deleted && i.callback != null) { _items.Remove(i.callback); ReturnToPool(i); } } _toRemove.Clear(); } if (_toAdd.Count > 0) { iter = _toAdd.GetEnumerator(); while (iter.MoveNext()) { _items.Add(iter.Current.Key, iter.Current.Value); } iter.Dispose(); _toAdd.Clear(); } }
public void Update() { time = Time.time; float elapsed = time - _lastTime; if (Time.timeScale != 0) { elapsed /= Time.timeScale; } _lastTime = time; /* * foreach (KeyValuePair<TimerCallback, Anymous_T> kvp in _items) * { * Anymous_T i = kvp.Value; * if (i.deleted) * { * _toRemove.Add(i); * continue; * } * * i.elapsed += elapsed; * if (i.elapsed < i.interval) * continue; * * i.elapsed -= i.interval; * if (i.elapsed < 0 || i.elapsed > 0.03f) * i.elapsed = 0; * * if (i.repeat > 0) * { * i.repeat--; * if (i.repeat == 0) * { * i.deleted = true; * _toRemove.Add(i); * } * } * repeat = i.repeat; * if (i.callback != null) * { * try * { * i.callback(i.param); * } * catch (System.Exception e) * { * i.deleted = true; * Debug.Log("timer callback failed, " + i.interval + "," + i.repeat); * Debug.LogException(e); * } * } * } */ tmpToAddEnumerator = _items.GetEnumerator(); while (tmpToAddEnumerator.MoveNext()) { kvp = tmpToAddEnumerator.Current; Anymous_T i = kvp.Value; if (i.deleted) { _toRemove.Add(i); continue; } i.elapsed += elapsed; if (i.elapsed < i.interval) { continue; } i.elapsed -= i.interval; if (i.elapsed < 0 || i.elapsed > 0.03f) { i.elapsed = 0; } if (i.repeat > 0) { i.repeat--; if (i.repeat == 0) { i.deleted = true; _toRemove.Add(i); } } repeat = i.repeat; if (i.callback != null) { try { i.callback(i.param); } catch (System.Exception e) { i.deleted = true; Debug.Log("timer callback failed, " + i.interval + "," + i.repeat); Debug.LogException(e); } } } /* * foreach (Anymous_T i in _toRemove) * { * if (i.deleted && i.callback != null) * { * _items.Remove(i.callback); * ReturnToPool(i); * } * } * _toRemove.Clear(); */ for (int i = 0; i < _toRemove.Count; i++) { tmpToRemove = _toRemove[i]; if (tmpToRemove.deleted && tmpToRemove.callback != null) { _items.Remove(tmpToRemove.callback); ReturnToPool(tmpToRemove); } } _toRemove.Clear(); /* * foreach (KeyValuePair<TimerCallback, Anymous_T> kvp in _toAdd) * _items.Add(kvp.Key, kvp.Value); * _toAdd.Clear(); */ tmpToAddEnumerator = _toAdd.GetEnumerator(); while (tmpToAddEnumerator.MoveNext()) { kvp = tmpToAddEnumerator.Current; _items.Add(kvp.Key, kvp.Value); } _toAdd.Clear(); }
private Anymous_T GetFromPool() { Anymous_T t; int cnt = _pool.Count; if (cnt > 0) { t = _pool[cnt - 1]; _pool.RemoveAt(cnt - 1); t.deleted = false; t.elapsed = 0; } else t = new Anymous_T(); return t; }
public void Update(GameTime gameTime) { time = (float)gameTime.TotalGameTime.TotalMilliseconds / 1000f; deltaTime = (float)gameTime.ElapsedGameTime.TotalMilliseconds / 1000f; float elapsed = deltaTime; Dictionary <TimerCallback, Anymous_T> .Enumerator iter; if (_items.Count > 0) { iter = _items.GetEnumerator(); while (iter.MoveNext()) { Anymous_T i = iter.Current.Value; if (i.deleted) { _toRemove.Add(i); continue; } i.elapsed += elapsed; if (i.elapsed < i.interval) { continue; } i.elapsed -= i.interval; if (i.elapsed < 0 || i.elapsed > 0.03f) { i.elapsed = 0; } if (i.repeat > 0) { i.repeat--; if (i.repeat == 0) { i.deleted = true; _toRemove.Add(i); } } if (i.callback != null) { try { i.callback(i.param); } catch (System.Exception e) { i.deleted = true; Log.Info("timer callback failed, " + i.interval + "," + i.repeat); Log.Exception(e); } } } iter.Dispose(); } int len = _toRemove.Count; if (len > 0) { for (int k = 0; k < len; k++) { Anymous_T i = _toRemove[k]; if (i.deleted && i.callback != null) { _items.Remove(i.callback); ReturnToPool(i); } } _toRemove.Clear(); } if (_toAdd.Count > 0) { iter = _toAdd.GetEnumerator(); while (iter.MoveNext()) { _items.Add(iter.Current.Key, iter.Current.Value); } iter.Dispose(); _toAdd.Clear(); } }