Esempio n. 1
0
        public void Update()
        {
            float realtimeSinceStartup = Time.realtimeSinceStartup;

            if ((realtimeSinceStartup - mLastUpdateTime) >= 5f)
            {
                mLastUpdateTime = realtimeSinceStartup;
                if (pool != null)
                {
                    int index = UnityEngine.Random.Range(0, pool.Count - 1);
                    if ((index >= 0) && (index < pool.Count))
                    {
                        CachedObjectInfo info = pool[index];
                        if (info == null)
                        {
                            pool.RemoveAt(index);
                        }
                        else
                        {
                            float num3           = Time.realtimeSinceStartup - info.GetWeight();
                            int   maxShrinkCount = (int)(num3 / 60f);
                            if (maxShrinkCount > 0)
                            {
                                int freeCacheCount = info.GetFreeCacheCount();
                                if (freeCacheCount <= 0)
                                {
                                    pool.RemoveAt(index);
                                }
                                else
                                {
                                    maxShrinkCount = (maxShrinkCount <= freeCacheCount) ? maxShrinkCount : freeCacheCount;
                                    info.Shrink(maxShrinkCount);
                                }
                            }
                        }
                    }
                }
            }
        }