void CarveCrawlways()
    {
        map.BulkEditBegin();

        int originX;
        int originY;
        int x;

        foreach (ProcRoom room in rooms)
        {
            int rand2 = Rand.Range(0, 1);

            if (rand2 == 0)
            {
                var crawlway = new ProcHall();

                direction = RIGHT;

                originX = room.TopRightX();
                originY = room.TopRightY() + 1;
                x       = 1;


                // get random height to make halls either two or four tiles tall
                rand2 = Rand.Range(0, 10);
                int i = (rand2 == 0 ? 2 : 4);

                while (map.GetTileInfo(originX + x, originY) != null &&
                       TileInBounds(originX + x, originY))
                {
                    if (i == 2)
                    {
                        map.ClearTile(originX + x, originY);
                        map.ClearTile(originX + x, originY - 1);
                    }
                    else
                    {
                        map.ClearTile(originX + x, originY);
                        map.ClearTile(originX + x, originY - 1);
                        // map.ClearTile(originX + x, originY - 2);
                        // map.ClearTile(originX + x, originY - 3);
                    }

                    x = (direction == RIGHT ? x + 1 : x - 1);
                }

                // with hall succesfully placed, set its origin, width, and height, then add to List
                crawlway.width   = Math.Abs(x) - 1;
                crawlway.height  = i;
                crawlway.originY = originY - (i - 1);
                crawlway.originX = (direction == RIGHT ? originX + 1 : originX - crawlway.width);

                crawlways.Add(crawlway);
            }
        }

        map.BulkEditEnd();
    }
	void CarveCrawlways()
	{
		map.BulkEditBegin();

		int originX;
		int originY;
		int x;

		foreach (ProcRoom room in rooms)
		{
			int rand2 = Rand.Range(0, 1);

			if (rand2 == 0)
			{
				ProcHall crawlway = new ProcHall();

				direction = RIGHT;

				originX = room.TopRightX();
				originY = room.TopRightY() + 1;
				x = 1;


				// get random height to make halls either two or four tiles tall
				rand2 = Rand.Range(0, 10);
				int i = (rand2 == 0 ? 2 : 4);

				while (map.GetTileInfo(originX + x, originY) != null &&
						TileInBounds(originX + x, originY))
				{
					if (i == 2)
					{
						map.ClearTile(originX + x, originY);
						map.ClearTile(originX + x, originY - 1);
					}
					else
					{
						map.ClearTile(originX + x, originY);
						map.ClearTile(originX + x, originY - 1);
						// map.ClearTile(originX + x, originY - 2);
						// map.ClearTile(originX + x, originY - 3);
					}

					x = (direction == RIGHT ? x + 1 : x - 1);
				}

				// with hall succesfully placed, set its origin, width, and height, then add to List
				crawlway.width   = Math.Abs(x) - 1;
				crawlway.height  = i;
				crawlway.originY = originY - (i - 1);
				crawlway.originX = (direction == RIGHT ? originX + 1 : originX - crawlway.width);

				crawlways.Add(crawlway);
			}
		}

		map.BulkEditEnd();
	}
	void CarveHalls()
	{
		map.BulkEditBegin();

		int originX;
		int originY;
		int x;

		foreach (ProcRoom room in rooms)
		{
			ProcHall hall = new ProcHall();

			// get random direction
			int rand = Rand.Range(0, 1);
			direction = (rand == 0 ? RIGHT : LEFT);

			// set origin point
			if (direction == RIGHT)
			{
				originX = room.BottomRightX();
				originY = room.BottomRightY();
				x = 1;
			}
			else
			{
				originX = room.BottomLeftX();
				originY = room.BottomLeftY();
				x = -1;
			}

			// get random height to make halls either two or four tiles tall
			int rand2 = Rand.Range(0, 10);
			int i = (rand2 == 0 ? 2 : 4);

			while (map.GetTileInfo(originX + x, originY) != null &&
					TileInBounds(originX + x, originY))
			{
				if (i == 2)
				{
					map.ClearTile(originX + x, originY);
					map.ClearTile(originX + x, originY - 1);
				}
				else
				{
					map.ClearTile(originX + x, originY);
					map.ClearTile(originX + x, originY - 1);
					map.ClearTile(originX + x, originY - 2);
					map.ClearTile(originX + x, originY - 3);
				}

				x = (direction == RIGHT ? x + 1 : x - 1);
			}

			// with hall succesfully placed, set its origin, width, and height, then add to List
			hall.width   = Math.Abs(x) - 1;
			hall.height  = i;
			hall.originY = originY - (i - 1);
			hall.originX = (direction == RIGHT ? originX + 1 : originX - hall.width);

			halls.Add(hall);
		}

		map.BulkEditEnd();
	}
    void CarveHalls()
    {
        map.BulkEditBegin();

        int originX;
        int originY;
        int x;

        foreach (ProcRoom room in rooms)
        {
            var hall = new ProcHall();

            // get random direction
            int rand = Rand.Range(0, 1);
            direction = (rand == 0 ? RIGHT : LEFT);

            // set origin point
            if (direction == RIGHT)
            {
                originX = room.BottomRightX();
                originY = room.BottomRightY();
                x       = 1;
            }
            else
            {
                originX = room.BottomLeftX();
                originY = room.BottomLeftY();
                x       = -1;
            }

            // get random height to make halls either two or four tiles tall
            int rand2 = Rand.Range(0, 10);
            int i     = (rand2 == 0 ? 2 : 4);

            while (map.GetTileInfo(originX + x, originY) != null &&
                   TileInBounds(originX + x, originY))
            {
                if (i == 2)
                {
                    map.ClearTile(originX + x, originY);
                    map.ClearTile(originX + x, originY - 1);
                }
                else
                {
                    map.ClearTile(originX + x, originY);
                    map.ClearTile(originX + x, originY - 1);
                    map.ClearTile(originX + x, originY - 2);
                    map.ClearTile(originX + x, originY - 3);
                }

                x = (direction == RIGHT ? x + 1 : x - 1);
            }

            // with hall succesfully placed, set its origin, width, and height, then add to List
            hall.width   = Math.Abs(x) - 1;
            hall.height  = i;
            hall.originY = originY - (i - 1);
            hall.originX = (direction == RIGHT ? originX + 1 : originX - hall.width);

            halls.Add(hall);
        }

        map.BulkEditEnd();
    }
    void CarveHalls()
    {
        map.BeginBulkEdit();

            int originX;
            int originY;
            int x;
            int y;

            foreach (ProcRoom room in rooms)
            {
                ProcHall hall = new ProcHall();

                int rand = UnityEngine.Random.Range(0, 2);
                direction = (rand == 0 ? RIGHT : LEFT);
                // direction = RIGHT;

                if (direction == RIGHT)
                {
                    originX = room.BottomRightX();
                    originY = room.BottomRightY();
                    x = 1;
                }
                else
                {
                    originX = room.BottomLeftX();
                    originY = room.BottomLeftY();
                    x = -1;
                }

                y = 0;

                int rand2 = UnityEngine.Random.Range(0, 10);
                int i = (rand2 == 0 ? 2 : 4);

                while (map.GetTile(originY, originX + x) != null &&
                       TileInBounds(originX + x, originY))
                {
                    // randomly make halls either two or four tiles tall
                    if (i == 2)
                    {
                        map.EraseTile(originY, originX + x);
                        map.RefreshSurroundingTiles(originY, originX);
                        map.EraseTile(originY - 1, originX + x);
                        map.RefreshSurroundingTiles(originY - 1, originX);
                    }
                    else
                    {
                        map.EraseTile(originY, originX + x);
                        map.RefreshSurroundingTiles(originY, originX);
                        map.EraseTile(originY - 1, originX + x);
                        map.RefreshSurroundingTiles(originY - 1, originX);
                        map.EraseTile(originY - 2, originX + x);
                        map.RefreshSurroundingTiles(originY - 2, originX);
                        map.EraseTile(originY - 3, originX + x);
                        map.RefreshSurroundingTiles(originY - 3, originX);
                    }

                    x = (direction == RIGHT ? x + 1 : x - 1);
                }

                // with hall succesfully placed, set its origin, width, and height, then add to List
                hall.width   = Math.Abs(x) - 1;
                hall.height  = i;
                hall.originY = originY - (i - 1);
                hall.originX = (direction == RIGHT ? originX + 1 : originX - hall.width);

                halls.Add(hall);
            }

        map.EndBulkEdit();
    }