Пример #1
0
    public PoolGameObject AddPoolNewTypeObject(string prefabTag, bool isLog = false)
    {
        GameObject newGO = null;

        if (!m_collectionPoolPrefabsStr.ContainsKey(prefabTag))
        {
            prefabTag = TypePoolPrefabs.PoolFloor.ToString();
            Debug.Log("############ AddPoolNewTypeObject Not prefab in collection for prefabTag=" + prefabTag);
        }
        GameObject prefabPoolInst = m_collectionPoolPrefabsStr[prefabTag];

        if (prefabPoolInst == null)
        {
            Debug.Log("####### AddPoolNewTypeObject prefabPoolInst == null " + prefabTag);
        }
        newGO = SaveLoadData.CopyGameObject(prefabPoolInst);

        PoolGameObject poolObj = new PoolGameObject();

        poolObj.Name = "GameObjectPool " + indexPool++;
        poolObj.Tag  = prefabTag;
        poolObj.Init(newGO);
        poolObj.Deactivate();

        //Fix Tile field
        bool isField = false;

        isField = TypePoolPrefabs.PoolFloor.ToString() == prefabTag;
        if (isField)
        {
            //see: GetPrefabField
            ModelNPC.TerraData terrD = new ModelNPC.TerraData()
            {
                ModelView = "Weed"
            };
            //Update texture Object pool Field default
            terrD.UpdateGameObject(newGO);
        }
        var stackPool = new Stack <PoolGameObject>();

        if (!PoolGamesObjectsStack.ContainsKey(prefabTag))
        {
            PoolGamesObjectsStack.Add(prefabTag, stackPool);
        }
        else
        {
            stackPool = PoolGamesObjectsStack[prefabTag];
        }

        //int countInPool = PoolGamesObjectsStack[prefabTag].Count;

        stackPool.Push(poolObj);

        return(poolObj);
    }