Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
 private void ReturnToPool(Anymous_T t)
 {
     t.callback = null;
     _pool.Add(t);
 }