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); }
private void OnDeactivationEvent(PooledObjectInfo objInfo) { objInfo?.SetParent(m_Container); }