public static void DrawGrid(int gridStep, WorldTransform w, bool drawRadii, Color lineColor, Color textColor, Color radiiColor)
        {
            GLUtility.DisableNiceLines();
            for (int i = (int)w.WorldLowerLeft.Y; i < w.WorldUpperRight.Y; i++)
            {
                if (i % gridStep == 0)
                {
                    GLUtility.DrawLine(new GLPen(lineColor, 1.0f), (float)w.WorldLowerLeft.X, i, (float)w.WorldUpperRight.X, i);
                    GLUtility.DrawString(i.ToString() + "m", new Font("verdana", 1), textColor, new PointF(0, i + .25f));
                }
            }
            for (int i = (int)w.WorldLowerLeft.X; i < w.WorldUpperRight.X; i++)
            {
                if (i % gridStep == 0)
                {
                    GLUtility.DrawLine(new GLPen(lineColor, 1.0f), i, (float)w.WorldLowerLeft.Y, i, (float)w.WorldUpperRight.Y);
                    GLUtility.DrawString(i.ToString() + "m", new Font("verdana", 1), textColor, new PointF(i, (float)(w.WorldUpperRight.Y - w.WorldLowerLeft.Y) / 2.0f));
                }
            }

            if (drawRadii)
            {
                RectangleF r = new RectangleF(new PointF(-gridStep, -gridStep), new SizeF(gridStep * 2.0f, gridStep * 2.0f));
                for (int i = 0; i < 20; i++)
                {
                    r.Inflate(gridStep, gridStep);
                    GLUtility.DrawEllipse(new GLPen(radiiColor, 1), r);
                }
            }
            GLUtility.EnableNiceLines();
        }
        public static void DrawGrid3D(int gridStep, WorldTransform w, float z, Color lineColor, Color textColor, Color radiiColor)
        {
            GLUtility.DisableNiceLines();
            GLPen pen = new GLPen(lineColor, 1.0f);

            pen.GLApplyPen();
            Gl.glBegin(Gl.GL_LINES);

            for (int i = (int)w.WorldLowerLeft.Y; i < w.WorldUpperRight.Y; i++)
            {
                if (i % gridStep == 0)
                {
                    Gl.glVertex3f((float)w.WorldLowerLeft.X, i, z);
                    Gl.glVertex3f((float)w.WorldUpperRight.X, i, z);
                    //GLUtility.DrawString(i.ToString() + "m", new Font("verdana", 1), textColor, new PointF(0, i + .25f));
                }
            }
            for (int i = (int)w.WorldLowerLeft.X; i < w.WorldUpperRight.X; i++)
            {
                if (i % gridStep == 0)
                {
                    Gl.glVertex3f(i, (float)w.WorldLowerLeft.Y, z);
                    Gl.glVertex3f(i, (float)w.WorldUpperRight.Y, z);
                    //GLUtility.DrawString(i.ToString() + "m", new Font("verdana", 1), textColor, new PointF(i, (float)(w.WorldUpperRight.Y - w.WorldLowerLeft.Y) / 2.0f));
                }
            }
            Gl.glEnd();
            GLUtility.EnableNiceLines();
        }