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 OnUpdate() { time = Time.time; float elapsed = time - _lastTime; _lastTime = time; Glide.Tweener.Update(elapsed); foreach (KeyValuePair <Function, Anymous_T> kvp in _items) { Anymous_T i = kvp.Value; if (i.deleted) { _toRemove.Add(i); continue; } if (i.useFrame) { i.elapsed++; if (i.elapsed < i.inerval) { continue; } i.elapsed = 0; } else { i.elapsed += elapsed; if (i.elapsed < i.inerval) { continue; } i.elapsed -= i.inerval; 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; i.callback(i.param); } foreach (Anymous_T i in _toRemove) { if (i.deleted) { _items.Remove(i.callback); ReturnToPool(i); } } _toRemove.Clear(); foreach (KeyValuePair <Function, Anymous_T> kvp in _toAdd) { _items.Add(kvp.Key, kvp.Value); } _toAdd.Clear(); }
private void ReturnToPool(Anymous_T t) { t.callback = null; _pool.Add(t); }