Ejemplo n.º 1
0
    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);
    }
Ejemplo n.º 2
0
    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);
    }