示例#1
0
    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);
    }
示例#2
0
    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);
        }
    }
示例#3
0
    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);
    }