void ConnectRoom(MAP.ROOM lRoom, MAP.ROOM rRoom, MAP.DIRECTION lDir, MAP.DIRECTION rDir)
    {
        bool createLDoor = lRoom.CreateDoor(lDir);
        bool createRDoor = rRoom.CreateDoor(rDir);

        MAP.Vector2D lDoor = lRoom.GetDoorPosition(lDir);
        MAP.Vector2D rDoor = rRoom.GetDoorPosition(rDir);
        Map[lDoor.y][lDoor.x] = MAP.SPACE.ROOM_DOOR;
        Map[rDoor.y][rDoor.x] = MAP.SPACE.ROOM_DOOR;

        //직선인 경우
        if (lDoor.y == rDoor.y)
        {
            int x = 1;
            do
            {
                Map[lDoor.y - 1][lDoor.x + x] = Map[lDoor.y - 1][lDoor.x + x] | MAP.SPACE.PASSAGE_WALL;
                Map[lDoor.y][lDoor.x + x]     = Map[lDoor.y][lDoor.x + x] | MAP.SPACE.PASSAGE_FLOOR;
                Map[lDoor.y + 1][lDoor.x + x] = Map[lDoor.y + 1][lDoor.x + x] | MAP.SPACE.PASSAGE_WALL;
                ++x;
            } while (lDoor.x + x != rDoor.x);
        }

        else if (lDoor.x == rDoor.x)
        {
            int y = 1;
            do
            {
                Map[lDoor.y + y][lDoor.x - 1] = Map[lDoor.y + y][lDoor.x - 1] | MAP.SPACE.PASSAGE_WALL;
                Map[lDoor.y + y][lDoor.x]     = Map[lDoor.y + y][lDoor.x] | MAP.SPACE.PASSAGE_FLOOR;
                Map[lDoor.y + y][lDoor.x + 1] = Map[lDoor.y + y][lDoor.x + 1] | MAP.SPACE.PASSAGE_WALL;
                ++y;
            } while (lDoor.y + y != rDoor.y);
        }
        //직선이 아닌 경우
        else
        {
            int pos = 0;
            if (createLDoor)
            {
                pos = CreatePassage(lDoor, lDir);
            }
            if (createRDoor)
            {
                pos = CreatePassage(rDoor, rDir);
            }

            ConnectPassage(pos, lDoor, rDoor, lDir);
        }
    }
    public bool GenerateRoom()
    {
        if (blockInfo.size.x < MAP.CONTANT.RoomX_Min + MAP.CONTANT.Block_Blank || blockInfo.size.y < MAP.CONTANT.RoomY_Min + MAP.CONTANT.Block_Blank)
        {
            return(false);
        }

        roomInfo = new MAP.ROOM();

        int MaxX = blockInfo.size.x > (MAP.CONTANT.RoomX_Max + MAP.CONTANT.Block_Blank) ? MAP.CONTANT.RoomX_Max : (blockInfo.size.x - MAP.CONTANT.Block_Blank);
        int MaxY = blockInfo.size.y > (MAP.CONTANT.RoomY_Max + MAP.CONTANT.Block_Blank) ? MAP.CONTANT.RoomY_Max : (blockInfo.size.y - MAP.CONTANT.Block_Blank);

        MAP.Vector2D roomSize = new MAP.Vector2D(Random.Range(MAP.CONTANT.RoomX_Min, MaxX + 1), Random.Range(MAP.CONTANT.RoomY_Min, MaxY + 1));
        //blank minimum is 2
        MAP.Vector2D blank = new MAP.Vector2D(blockInfo.size - roomSize - 1);
        roomInfo.leftTop.SetVector2D(blockInfo.leftTop.x + Random.Range(1, blank.x + 1), blockInfo.leftTop.y + Random.Range(1, blank.y + 1));
        roomInfo.rightBot.SetVector2D(roomInfo.leftTop + roomSize - 1);

        Debug.Log(index + " / " + blockInfo.leftTop.x + " , " + blockInfo.leftTop.y + " / " + roomSize.x + " / " + roomSize.y);
        //Debug.Log(blockInfo.leftTop.x + " , " + blockInfo.leftTop.y + " / " + blockInfo.rightBot.x + " , " + blockInfo.rightBot.y + " / " + blockInfo.size.x + " , " + blockInfo.size.y);
        return(true);
    }