private void CreateRooms() { var roomList = ProceduralGenerationAlgorithm.BinaeySpacePartitioning(new BoundsInt((Vector3Int)startPos, new Vector3Int (dungeonWidth, dungeonHeight, 0)), minRoomWidth, minRoomHeight); HashSet <Vector2Int> floor = new HashSet <Vector2Int>(); if (randomWalkRoom) { floor = CreateRandomRooms(roomList); } else { floor = CreateSimpleRooms(roomList); } List <Vector2Int> roomCenter = new List <Vector2Int>(); foreach (var room in roomList) { roomCenter.Add((Vector2Int)Vector3Int.RoundToInt(room.center)); } HashSet <Vector2Int> corridors = ConnectRooms(roomCenter); floor.UnionWith(corridors); tileMapVisualiser.paintFloorTile(floor); WallGenerator.CreateWalls(floor, tileMapVisualiser); }
private void CreateCorridors(HashSet <Vector2Int> floorPositions, HashSet <Vector2Int> potentialRoomPositions) { var currentPositon = startPos; potentialRoomPositions.Add(currentPositon); for (int i = 0; i < corridorCount; i++) { var corridor = ProceduralGenerationAlgorithm.RandomWalkCorridor(currentPositon, corridorLength); currentPositon = corridor[corridor.Count - 1]; potentialRoomPositions.Add(currentPositon); floorPositions.UnionWith(corridor); } }
protected HashSet <Vector2Int> RunRandomWalk(RandomWalkData Parameters, Vector2Int position) { var currentPos = position; HashSet <Vector2Int> floorPosition = new HashSet <Vector2Int>(); for (int i = 0; i < randomWalkParamiters.iterations; i++) { var path = ProceduralGenerationAlgorithm.SimpleRandomWalk(currentPos, randomWalkParamiters.walkLength); floorPosition.UnionWith(path); if (randomWalkParamiters.statrtRandomlyEachIteration) { currentPos = floorPosition.ElementAt(Random.Range(0, floorPosition.Count)); } } return(floorPosition); }