//Spawns All THe Tiles private void SpawnAllTiles() { float columnSwitch = 1; //temporary list to hold all the tiles List <List <BaseTileController> > allTiles = new List <List <BaseTileController> >(); //Create The Tile Parent Object if (m_tilesParentObject != null) { DestroyImmediate(m_tilesParentObject); m_tilesParentObject = new GameObject("Tiles"); m_tilesParentObject.transform.SetParent(m_groundParentObject.transform); } else { m_tilesParentObject = new GameObject("Tiles"); m_tilesParentObject.transform.SetParent(m_groundParentObject.transform); } //Loop over the columns for (int i = 0; i < m_desiredTileGrid.y; i++) { columnSwitch *= -1; float sideSwitch = 1; float columnXOffset = (i * (m_requiredOffset.x * m_desiredScale.x + (m_requiredOffset.x * m_desiredScale.x / 1.525f))); //temporary list to hold 1 column of tiles List <BaseTileController> tiles = new List <BaseTileController>(); //Loop over each tile in each column for (int z = 0; z < m_desiredTileGrid.x; z++) { GameObject newTile = Instantiate(m_tilePrefab, new Vector3((z * ((m_requiredOffset.x * m_desiredScale.x) + (m_requiredOffset.x * m_desiredScale.x / 5.7f)) + (columnXOffset / 2)), (i * (m_desiredScale.y * m_requiredOffset.y * 2)), 0), Quaternion.Euler(m_desiredTileRotation), m_tilesParentObject.transform); newTile.transform.localScale = m_desiredScale; //if we are debugging change the material to the debug material if ((sideSwitch * columnSwitch) == 1) { newTile.GetComponentInChildren <SpriteRenderer>().color = new Color(1, 0, 0, 0.3f); } else { newTile.GetComponentInChildren <SpriteRenderer>().color = new Color(0, 0, 1, 0.3f); } //every loop swap the side to give a checkerboard effect tot he grid while debugging sideSwitch *= -1; BaseTileController newTileController = newTile.GetComponent <BaseTileController>(); if (newTileController != null) { tiles.Add(newTileController); } } allTiles.Add(tiles); } LinkTiles(allTiles); m_tilesParentObject.transform.localPosition = m_desiredGroundOffset; }
//Spawns All THe Tiles private void SpawnAllTiles() { GameObject groundTile = (m_tileAreaObject == null) ? m_groundAreaObject : m_tileAreaObject; float columnSwitch = 1; //temporary list to hold all the tiles List <List <BaseTileController> > allTiles = new List <List <BaseTileController> >(); //Create The Tile Parent Object if (m_tilesParentObject != null) { DestroyImmediate(m_tilesParentObject); m_tilesParentObject = new GameObject("Tiles"); m_tilesParentObject.transform.SetParent(m_groundParentObject.transform); } else { m_tilesParentObject = new GameObject("Tiles"); m_tilesParentObject.transform.SetParent(m_groundParentObject.transform); } //Correct the tile parent object to the center of all the tiles m_tilesParentObject.transform.position += new Vector3((-m_requiredSize.x / 2) + m_areaSize.x / 2, -(m_requiredSize.y / 2) + m_areaSize.y / 2, 0); //Loop over the columns for (int i = 0; i < m_desiredTileGrid.y; i++) { columnSwitch *= -1; float sideSwitch = 1; //temporary list to hold 1 column of tiles List <BaseTileController> tiles = new List <BaseTileController>(); int sequenceID = 0; //Loop over each tile in each column for (int z = 0; z < m_desiredTileGrid.x; z++) { float offset = z * m_requiredSize.x; GameObject newTile = null; //if we are debugging change the material to the debug material if ((sideSwitch * columnSwitch) == 1) { if (m_fisrtTileVariatons.Count == 0) { newTile = Instantiate(m_tilePrefab, new Vector3(z * m_requiredSize.x, (i * m_requiredSize.y), 0), Quaternion.Euler(m_desiredTileRotation), m_tilesParentObject.transform); newTile.GetComponentInChildren <SpriteRenderer>().color = Color.cyan; newTile.transform.localScale = m_requiredScale; } else { Debug.Log("Sequence ID: " + sequenceID); newTile = Instantiate(m_fisrtTileVariatons[sequenceID], new Vector3(z * m_requiredSize.x, (i * m_requiredSize.y), 0), Quaternion.Euler(m_desiredTileRotation), m_tilesParentObject.transform); newTile.transform.localScale = m_requiredScale; } } else { if (m_secondTileVariations.Count == 0) { newTile = Instantiate(m_tilePrefab, new Vector3(z * m_requiredSize.x, (i * m_requiredSize.y), 0), Quaternion.Euler(m_desiredTileRotation), m_tilesParentObject.transform); newTile.transform.localScale = m_requiredScale; newTile.GetComponentInChildren <SpriteRenderer>().color = Color.grey; } else { newTile = Instantiate(m_secondTileVariations[sequenceID], new Vector3(z * m_requiredSize.x, (i * m_requiredSize.y), 0), Quaternion.Euler(m_desiredTileRotation), m_tilesParentObject.transform); newTile.transform.localScale = m_requiredScale; } } if (sequenceID < m_fisrtTileVariatons.Count - 1) { sequenceID++; } else { sequenceID = 0; } //every loop swap the side to give a checkerboard effect tot he grid while debugging sideSwitch *= -1; BaseTileController newTileController = newTile.GetComponent <BaseTileController>(); if (newTileController != null) { newTileController.Data.ColumnID = i; newTileController.Data.RowID = z; tiles.Add(newTileController); } } allTiles.Add(tiles); } //LinkTiles(allTiles); Vector3 offsetedParent = new Vector3(); offsetedParent = groundTile.transform.position; m_tilesParentObject.transform.position = offsetedParent; m_tilesParentObject.transform.position += m_desiredGroundOffset; }