public void PooledItem(GameObject itemObj, CPutItem putItem) { if (putItem == null) { Destroy(itemObj); return; } if (m_itemPool.pooledList.Count >= m_itemPool.nBufferAmount) { if (!m_canBeGrow) { Destroy(itemObj); return; } } itemObj.transform.parent = m_itemParent.transform; m_itemPool.pooledList.Push(itemObj); itemObj.SetActive(false); }
protected virtual IEnumerator DeathCoroutine() { CNpcUnit unit = m_unit as CNpcUnit; if (unit == null) { Destroy(gameObject); yield break; } NavMeshAgent agent = GetComponent <NavMeshAgent>(); if (agent != null) { agent.isStopped = true; agent.SetDestination(transform.position); yield return(null); } if (unit.UnitData != null && unit.UnitData.PutItems != null) { GameObject putItemGo = CObjectPool.Inst.GetItem(); putItemGo.transform.position = transform.position; putItemGo.transform.rotation = Quaternion.identity; putItemGo.SetActive(true); CPutItem putItem = putItemGo.GetComponent <CPutItem>(); if (putItem != null) { CItemBase item = null; if (unit.UnitData.PutItems.Count > 0) { int nIdx = Random.Range(0, unit.UnitData.PutItems.Count); item = unit.UnitData.PutItems[nIdx]; } if (item != null) { putItem.SetItemData(item); } } } yield return(null); m_isDeathStart = true; yield return(new WaitForSeconds(m_fDeathWait)); m_unit.StayLevel = null; if (m_unit.SpawnedPoint != null) { m_unit.SpawnedPoint.RemoveUnitFromList(m_unit); } m_unit.SpawnedPoint = null; CObjectPool.Inst.PooledObject(gameObject, unit.UnitData, unit.UnitData.UnitType, unit.UnitData.Index); yield return(null); }