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); } } } } } } }