public void Init(LevelPrefabs prefabs) { m_weapon = GameObject.Instantiate(prefabs.HandCannon); m_weapon.transform.SetParent(m_handTransform, false); m_initialised = true; }
public static void GenerateSquares(Transform transform, bool useColumns, LevelPrefabs prefabs, GameObject squarePrefab, Vector3[,,] coordinates, MazeSquare[,,] squares) { for (int z = 0; z < squares.GetLength(2); z++) { GameObject layer = NewSection("Layer", z, transform); for (int i = 0; i < squares.GetLength(0); i++) { GameObject row = NewSection("Row", i, layer.transform); for (int j = 0; j < squares.GetLength(1); j++) { if (squares[i, j, z] == null) { continue; } MazeSurveyLogic.Survey(i, j, z, squares); #region Setup Square in Hierarchy squares[i, j, z].layout = BuildLayout(useColumns, prefabs, squarePrefab, squares[i, j, z].adjacents); GameObject sq = squares[i, j, z].layout; sq.transform.parent = transform; sq.transform.localPosition = coordinates[i, j, z]; sq.transform.parent = row.transform; sq.name = "Sq" + (j + 1); #endregion } } } }
public static void GenerateSquares(Transform transform, bool useColumns, LevelPrefabs prefabs, GameObject squarePrefab, Vector3[,] coordinates, Maze2DSquare[,] squares) { for (int i = 0; i < squares.GetLength(0); i++) { GameObject row = new GameObject("Row" + (i + 1)); row.transform.parent = transform; row.transform.position = transform.position; for (int j = 0; j < squares.GetLength(1); j++) { if (squares[i, j] == null) { continue; } Survey(i, j, squares); #region Setup Square in Hierarchy squares[i, j].layout = BuildLayout(useColumns, prefabs, squarePrefab, squares[i, j].adjacents); GameObject sq = squares[i, j].layout; sq.transform.parent = transform; sq.transform.localPosition = coordinates[i, j]; sq.transform.parent = row.transform; sq.name = "Sq" + (j + 1); #endregion } } }
// Start is called before the first frame update void Start() { prefabs = GetComponent <LevelPrefabs>(); outlets = new SprawlerSquare[2]; ReloadMaze(); }
static GameObject BuildLayout(bool useColumns, LevelPrefabs prefabs, GameObject sqPrefab, MazeSquare[] adjacents) { GameObject output = Object.Instantiate(sqPrefab); //Store the four corners Transform[] corners = new Transform[CORNERS]; for (int i = 0; i < corners.Length; i++) { corners[i] = output.transform.GetChild(i); } for (int i = 0; i < CORNERS; i++) { MazeSquare next = adjacents[i]; MazeSquare previous = (i > 0) ? adjacents[i - 1] : adjacents[CORNERS - 1]; GameObject edgePrefab = prefabs.wall; //Columns. If two adjacent sides have MazeSquares, put a column on the corner. if (useColumns && next != null && previous != null) { //Prevent duplication. Maze construction goes west to east and south to north, so check west adjacent square // and south adjacent square for where they could already have columns. if (i == 0 && previous.adjacents[0] != null) { continue; } else if (i > 1 && next.adjacents[i - 1] != null) { continue; } edgePrefab = prefabs.column; } else if (next != null) { continue; } Object.Instantiate(edgePrefab, corners[i]); } //4 is up and 5 is down if (adjacents[4] == null || adjacents[4].isOutlet) { Object.Instantiate(prefabs.ceiling, output.transform.GetChild(4)); } if (adjacents[5] == null || adjacents[5].isOutlet) { Object.Instantiate(prefabs.floor, output.transform.GetChild(5)); } return(output); }
public static void SetOutlet(bool useColumns, LevelPrefabs prefabs, GameObject outlet, out Maze2DSquare outletSq, Maze2DSquare[,] squares) { List <Maze2DSquare> vacancyList = new List <Maze2DSquare>(); vacancyList = FillVacancyList(vacancyList, squares); int outletIndex = Random.Range(0, vacancyList.Count); Maze2DSquare square = vacancyList[outletIndex]; Maze2DSquare tempSq; //Identify and store the root square's open adjacent squares List <int> indices = new List <int>(); List <Maze2DSquare> openAdjacents = new List <Maze2DSquare>(); for (int i = 0; i < square.adjacents.Length; i++) { if (square.adjacents[i] == null) { openAdjacents.Add(square.adjacents[i]); indices.Add(i); } } int rand = Random.Range(0, openAdjacents.Count); SurveyOutlet(square, indices[rand], squares, out tempSq); outletSq = tempSq; //Replace wall with outlet; if (square.layout.transform.GetChild(indices[rand]).childCount > 0) { Object.Destroy(square.layout.transform.GetChild(indices[rand]).GetChild(0).gameObject); } outlet = Object.Instantiate(outlet, square.layout.transform.GetChild(indices[rand])); ZeroOut(outlet); outletSq.layout = outlet; //Add columns if (useColumns && prefabs.column != null) { Transform t = square.layout.transform; GameObject col = Object.Instantiate(prefabs.column, t.GetChild(indices[rand])); ZeroOut(col); col = (indices[rand] < 3) ? Object.Instantiate(prefabs.column, t.GetChild(indices[rand] + 1)) : Object.Instantiate(prefabs.column, t.GetChild(0)); ZeroOut(col); } if (vacancyList.Count > 1) { vacancyList.RemoveAt(outletIndex); } }
public static GameObject BuildLayout(bool useColumns, LevelPrefabs prefabs, GameObject sqPrefab, Maze2DSquare[] adjacents) { int num2D = 4; GameObject output = Object.Instantiate(sqPrefab); //Store the four corners Transform[] corners = new Transform[num2D]; for (int i = 0; i < corners.Length; i++) { corners[i] = output.transform.GetChild(i); } for (int i = 0; i < adjacents.Length; i++) { Maze2DSquare next = adjacents[i]; Maze2DSquare previous = (i > 0) ? adjacents[i - 1] : adjacents[num2D - 1]; GameObject edgePrefab = prefabs.wall; if (next != null && previous != null && useColumns) { edgePrefab = prefabs.column; } else if (next != null) { continue; } if (edgePrefab != null) { Object.Instantiate(edgePrefab, corners[i]); } } if (prefabs.ceiling != null) { Object.Instantiate(prefabs.ceiling, output.transform.GetChild(4)); } if (prefabs.floor != null) { Object.Instantiate(prefabs.floor, output.transform.GetChild(5)); } return(output); }
public static GameObject BuildSquare(SprawlerSquare square, LevelPrefabs prefabs, GameObject sqPrefab) { GameObject output = Object.Instantiate(sqPrefab); GameObject currentPrefab; for (int i = 0; i < square.adjacents.Length; i++) { currentPrefab = i < 4 ? prefabs.wall : i == 4 ? prefabs.ceiling : prefabs.floor; if (square.adjacents[i] == null) { Object.Instantiate(currentPrefab, output.transform.GetChild(i)); } } return(output); }
public static void SetOutlet(bool useColumns, LevelPrefabs prefabs, GameObject outlet, out MazeSquare outletSq, MazeSquare[,,] squares) { List <MazeSquare> vacancyList = new List <MazeSquare>(); vacancyList = FillVacancyList(vacancyList, squares); int outletIndex = Random.Range(0, vacancyList.Count); MazeSquare square = vacancyList[outletIndex]; MazeSquare tempSq; //Identify and store the root square's open adjacent squares List <int> indices = new List <int>(); List <MazeSquare> openAdjacents = new List <MazeSquare>(); for (int i = 0; i < CORNERS; i++) { if (square.adjacents[i] == null) { openAdjacents.Add(square.adjacents[i]); indices.Add(i); } } int rand = Random.Range(0, openAdjacents.Count); MazeSurveyLogic.SurveyOutlet(square, indices[rand], squares, out tempSq); outletSq = tempSq; //Replace wall with outlet Transform wall = square.layout.transform.GetChild(indices[rand]); Object.Destroy(wall.GetChild(0).gameObject); outlet = Object.Instantiate(outlet, wall); ZeroOut(outlet); outletSq.layout = outlet; if (vacancyList.Count > 1) { vacancyList.RemoveAt(outletIndex); } }
private void Start() { connectLogic = GetComponent <ConnectLogic>(); levelPrefabs = GetComponent <LevelPrefabs>(); }
private void Awake() { levelPrefabs = GetComponent <LevelPrefabs>(); }
private void Start() { levelPrefabs = GetComponent <LevelPrefabs>(); }