Exemplo n.º 1
0
        private void AddToCache(IPoolObject val)
        {
            if (!_cache.ContainsKey(val.GetType()))
            {
                _cache[val.GetType()] = new List <IPoolObject>();
            }

            _cache[val.GetType()].Add(val);
        }
Exemplo n.º 2
0
    /// <summary>
    /// 是否在对象池内
    /// </summary>
    /// <param name="obj"></param>
    /// <returns></returns>
    static public bool IsInPool(IPoolObject obj)
    {
        Type type = obj.GetType();
        List <IPoolObject> list;

        if (mPool.TryGetValue(type, out list))
        {
            return(list.Contains(obj));
        }
        return(false);
    }
Exemplo n.º 3
0
        static void ReleaseImpl(IPoolObject poolObject)
        {
            var poolType = poolObject.GetType();
            List <IPoolObject> poolObjectList = null;

            if (_poolObjectDict.TryGetValue(poolType, out poolObjectList))
            {
                if (poolObjectList.IndexOf(poolObject) != -1)
                {
                    poolObject.Clear();
                    poolObject.IsInUse = false;
                }
                else
                {
                    Log.W("PoolManager Can't find PoolObject {0}!", poolObject.GetType().ToString());
                }
            }
            else
            {
                Log.W("PoolManager Can't find PoolName {0}!", poolType.ToString());
            }
        }
Exemplo n.º 4
0
 public void Release(IPoolObject poolObject)
 {
     Release(poolObject.GetType(), poolObject);
 }