// WALL HANDLE //////////////////////////////////////////////////////////////////////////////////////////////////
        private void FormMain_MouseUp_BuildWall(object sender, MouseEventArgs e)
        {
            if (e.Button != MouseButtons.Left)
            {
                return;
            }
            if (BuildType != ObstacleType.Wall)
            {
                return;
            }

            LeftMouseIsHolding = false;
            Obstacle NewObstacle = new Obstacle_Wall(LeftMouseDownPos, MousePos, IsBuildingMirrors);

            Obstacles.Add(NewObstacle);
        }
        private void FormMain_Paint_BuildWall(object sender, PaintEventArgs e)
        {
            if (!LeftMouseIsHolding)
            {
                return;
            }
            if (BuildType != ObstacleType.Wall)
            {
                return;
            }

            Graphics g = e.Graphics;
            Pen      p = new Pen(Color.LightPink, 5f);
            Obstacle o = new Obstacle_Wall(LeftMouseDownPos, MousePos, IsBuildingMirrors);

            o.Show(g, p);
        }
        public Obstacle_Rectangle(PointF Corner1_, PointF Corner2_, bool Reflective)
        {
            this.Reflective = Reflective;

            PointF A = Corner1_;
            PointF B = new PointF(Corner1_.X, Corner2_.Y);
            PointF C = Corner2_;
            PointF D = new PointF(Corner2_.X, Corner1_.Y);

            Sides[0] = new Obstacle_Wall(A, B, Reflective);
            Sides[1] = new Obstacle_Wall(B, C, Reflective);
            Sides[2] = new Obstacle_Wall(C, D, Reflective);
            Sides[3] = new Obstacle_Wall(D, A, Reflective);

            DrawingRectangle          = new Rectangle();
            DrawingRectangle.Location = new PointF(Math.Min(A.X, C.X), Math.Min(A.Y, C.Y));
            DrawingRectangle.Size     = new SizeF(Math.Abs(A.X - C.X), Math.Abs(A.Y - C.Y));
        }