Beispiel #1
0
        bool TryGetObjectInfo(out PooledObjectInfo info)
        {
            info = null;
            var pool = m_Pool;

            if (pool == null)
            {
                return(false);
            }
            if (pool.InactiveCount > 0)
            {
                info = pool.TakeFromInactiveObjs();
            }
            else
            {
                var beh = m_IfPoolEmpty;
                if (beh == PoolBehaviour.CreateNew)
                {
                    var refer = m_Reference;
                    if (refer == null)
                    {
                        return(false);
                    }
                    var newInf = new PooledObjectInfo(CreateObject(refer), Deactive);
                    m_InfoDict.Add(newInf.Obj, newInf);
                    newInf.SetParent(m_Container);
                    pool.Add(newInf);
                    info = pool.TakeFromInactiveObjs();
                }
                else if (beh == PoolBehaviour.ReuseActive)
                {
                    info = pool.TakeFromActiveObjs();
                }
            }
            return(info != null);
        }
Beispiel #2
0
 private void OnDeactivationEvent(PooledObjectInfo objInfo)
 {
     objInfo?.SetParent(m_Container);
 }