private void Start() { //Get main camera; camera = Camera.main; List <BallPlatformTile> tilePrefabs = new List <BallPlatformTile>(); prefabTiles.RemoveAll((t) => { BallPlatformTile tile = t.GetComponent <BallPlatformTile>(); if (tile != null) { tilePrefabs.Add(tile); } return(tile == null); } ); Dictionary <int, BallPlatformTile> tileCatalogue = new Dictionary <int, BallPlatformTile>(); foreach (BallPlatformTile tile in tilePrefabs) { if (!tileCatalogue.ContainsKey(tile.Type)) { tileCatalogue.Add(tile.Type, tile); } } tilePool = new CataloguePool <int, BallPlatformTile>(initialCountFromEach, transform, tileCatalogue); foreach (BallPlatformTile tile in tilePool.InitializePool()) { tile.InitializeAsPoolItem(true); } Pickup pickup = prefabPickup.GetComponent <Pickup>(); pickupPool = new SingularPool <Pickup>(initialCountFromEach, transform, pickup); foreach (Pickup item in pickupPool.InitializePool()) { item.InitializeAsPoolItem(); } GenerateTiles(); }
public void InstallTile(Vector3 position) { BallPlatformTile installedTile = tilePool.GetFromPool(tileTypeIteration, (t) => t.InitializeAsPoolItem(false)); installedTile.transform.position = position; lastWorldPoint = position; tileTypeIteration += 1; totalTileCount += 1; if (tileTypeIteration >= tilePool.TypeCount) { tileTypeIteration = 0; } installedTile.ApplyInstallProcess(); }
private void OnTileDisappear(BallPlatformTile tile) { tilePool.ReturnToPool(tile.Type, tile); tile.OnFullHidden -= OnTileDisappear; }
public void ReturnTile(BallPlatformTile tile) { tile.ApplyReturnProcess(); tile.OnFullHidden += OnTileDisappear; }