public bool IsClose(MAP.BLOCK b1, MAP.BLOCK b2)
    {
        MAP.Vector2D b1_RB = b1.rightBot + 2;
        MAP.Vector2D b2_LT = b2.leftTop - 2;
        //Left Right
        if (b1_RB.x - b2_LT.x == 2)
        {
            return(true);
        }
        //Up Down
        if (b1_RB.y - b2_LT.y == 2)
        {
            return(true);
        }

        return(false);
    }
    void SetBlockInfo(MAP.BLOCK bLeft)
    {
        switch (bLeft.divideDir)
        {
        case MAP.DIVIDE.VERTICAL:
            for (int y = bLeft.leftTop.y; y <= bLeft.rightBot.y; ++y)
            {
                Map[y][bLeft.rightBot.x + 1] = MAP.SPACE.BLOCK;
            }
            break;

        case MAP.DIVIDE.HORIZONTAL:
            for (int x = bLeft.leftTop.x; x <= bLeft.rightBot.x; ++x)
            {
                Map[bLeft.rightBot.y + 1][x] = MAP.SPACE.BLOCK;
            }
            break;
        }
    }
 public NODE(int _index, int _level, MAP.Vector2D bLeftTop, MAP.Vector2D bRightBot)
 {
     blockInfo = new MAP.BLOCK(bLeftTop, bRightBot);
     index     = _index;
     level     = _level;
 }
 public NODE()
 {
     blockInfo = new MAP.BLOCK();
 }