GameObject GetTileFromList(EnvironmentSet.EnvironmentTile tile) { List <GameObject> listOfTileObjects = pooledEnvironmentTiles[tile]; for (int i = 0; i < listOfTileObjects.Count; i++) { if (listOfTileObjects[i].activeSelf == false) { return(listOfTileObjects[i]); } } // if we didn't find an object, we instantiate another and start again // TODO: this can be optimised SpawnEnvironmentTile(tile); return(GetTileFromList(tile)); }
void SpawnEnvironmentTile(EnvironmentSet.EnvironmentTile tile) { GameObject tileObject = Instantiate(tile.prefab, transform.position, Quaternion.Euler(rotationOffset)) as GameObject; tileObject.transform.parent = dynamicObjects; tileObject.SetActive(false); if (pooledEnvironmentTiles.ContainsKey(tile)) { pooledEnvironmentTiles[tile].Add(tileObject); } else { List <GameObject> tileObjectList = new List <GameObject>(); tileObjectList.Add(tileObject); pooledEnvironmentTiles.Add(tile, tileObjectList); } }