Ejemplo n.º 1
0
//	public bool Store( GameObject go )
//	{
//		if ( go == null )
//			return false;
//		PoolCacheInfo poolCacheInfo = null;
//		ObjectCache objCache = go.GetComponent<ObjectCache>();
//		if ( objCache == null || !objCache.isUsing )
//			return false;
//		if ( objCache != null )
//			pools_.TryGetValue( objCache.objKey, out poolCacheInfo );
//		if ( poolCacheInfo != null )
//		{
//			poolCacheInfo.Store( go );
//			return true;
//		}
//		else
//			return false;
//	}


    public bool Store <T>(T go, bool failedFocusDestroy = false) where T : ObjectCache
    {
        bool result = false;

        if (go != null)
        {
            PoolCacheInfo poolCacheInfo = null;
            ObjectCache   objCache      = null;
            objCache = (ObjectCache)go;
            if (objCache != null && objCache.isUsing)
            {
                if (objCache != null)
                {
                    pools_.TryGetValue(objCache.objKey, out poolCacheInfo);
                }
                if (poolCacheInfo != null)
                {
                    poolCacheInfo.Store(go);
                    result = true;
                }
            }

            if (!result && failedFocusDestroy && go.gameObject != null)
            {
                Object.Destroy(go.gameObject);
            }
        }
        return(result);
    }
Ejemplo n.º 2
0
    public ObjectCache ocpNewDefault(string key, GameObject prefab, Transform parent, Vector3 localposition)
    {
        PoolCacheInfo pci = null;

        if (!pools_.TryGetValue(key, out pci) || pci.objects.Count == 0)
        {
            pci         = new PoolCacheInfo(key, prefab, mTrans_);
            pools_[key] = pci;
        }
        return((ObjectCache)pci.New(parent, localposition));
    }
Ejemplo n.º 3
0
 public void ocpRelease()
 {
     PoolCacheInfo[] cacheInfos = new PoolCacheInfo[pools_.Count];
     pools_.Values.CopyTo(cacheInfos, 0);
     for (int i = cacheInfos.Length - 1; i >= 0; i--)
     {
         cacheInfos[i].Release();
         cacheInfos[i] = null;
     }
     pools_.Clear();
 }