void PlaceAllRooms() { for (int x = 0; x < PuzzleDepth; ++x) { for (int y = 0; y < PuzzleHeight; ++y) { for (int z = 0; z < PuzzleWidth; ++z) { GameObject roomInstance = Instantiate(_roomPrefab, new Vector3((x * _roomDimensions.dimensions.x) + (_roomDimensions.dimensions.x - (_roomDimensions.dimensions.x * PuzzleDepth)) / 2, (y * _roomDimensions.dimensions.y) + (_roomDimensions.dimensions.y - (_roomDimensions.dimensions.y * PuzzleHeight)) / 2, (z * _roomDimensions.dimensions.z) + (_roomDimensions.dimensions.z - (_roomDimensions.dimensions.z * PuzzleWidth)) / 2), Quaternion.Euler(Vector3.zero)); roomInstance.transform.position += _roomContainer.transform.position; roomInstance.transform.parent = _roomContainer.transform; Room thisRoom = roomInstance.GetComponent <Room>(); ScriptableRoom roomToAdd = GetNextRoom(); Debug.Log("Adding room: " + roomToAdd.name); thisRoom.GenerateRoom(roomToAdd); _allRooms[new Vector3(x, y, z)] = thisRoom; } } } }
// Use this for initialization public void GenerateRoom(ScriptableRoom RoomDesign) { ClearWallsContainer(); //6 walls, obvs. for (int i = 0; i < 6; ++i) { GameObject wall = Instantiate(wallPrefab, Vector3.zero, Quaternion.Euler(wallSetup.rotation[i])); wall.transform.parent = gameObject.transform; wall.GetComponentInChildren <MeshRenderer>().materials[0].color = RoomDesign.wall[i].wallColour; wall.GetComponentInChildren <MeshRenderer>().materials[1].color = RoomDesign.wall[i].wallColour; wall.transform.localPosition = new Vector3( wallSetup.position[i].x * wall.transform.localScale.x, wallSetup.position[i].y * wall.transform.localScale.y, wallSetup.position[i].z * wall.transform.localScale.z); walls.Add(wall); } }