示例#1
0
            public void RenderPoint(bool picking)
            {
                ViewPlaneHandler vph = (Application.OpenForms[0] as Form1).vph;

                VisualSettings Settings     = (Application.OpenForms[0] as Form1).Settings;
                List <object>  SelectedDots = (Application.OpenForms[0] as Form1).SelectedDots;

                Gl.glPointSize(Settings.PointSize + 2f);
                Gl.glBegin(Gl.GL_POINTS);
                if (SelectedDots.Contains(this))
                {
                    Gl.glColor4f(Settings.HighlightPointborderColor.R / 255f, Settings.HighlightPointborderColor.G / 255f, Settings.HighlightPointborderColor.B / 255f, Settings.HighlightPointborderColor.A);
                }
                else
                {
                    Gl.glColor4f(Settings.PointborderColor.R / 255f, Settings.PointborderColor.G / 255f, Settings.PointborderColor.B / 255f, Settings.PointborderColor.A);
                }
                vph.draw2DVertice(Pos);
                Gl.glEnd();

                Gl.glPointSize(Settings.PointSize);
                Gl.glBegin(Gl.GL_POINTS);
                if (SelectedDots.Contains(this))
                {
                    Gl.glColor4f(Settings.HighlightPointColor.R / 255f, Settings.HighlightPointColor.G / 255f, Settings.HighlightPointColor.B / 255f, Settings.HighlightPointColor.A);
                }
                else
                {
                    Gl.glColor4f(Settings.ObjectsColor.R / 255f, Settings.ObjectsColor.G / 255f, Settings.ObjectsColor.B / 255f, Settings.ObjectsColor.A);
                }
                vph.draw2DVertice(Pos);
                Gl.glEnd();
            }
            public void RenderVP(VisualSettings Settings, Vector3 pos, Vector3 lookatpos)
            {
                ViewPlaneHandler vph = (Application.OpenForms[0] as Form1).vph;
                Vector3          vp1 = new Vector3(entry.Viewpoint1X, entry.Viewpoint1Y, entry.Viewpoint1Z);
                Vector3          vp2 = new Vector3(entry.Viewpoint2X, entry.Viewpoint2Y, entry.Viewpoint2Z);

                Gl.glColor4f((Settings.HighlightPointborderColor.R / 255f), (Settings.HighlightPointborderColor.G / 255f), (Settings.HighlightPointborderColor.B / 255f), Settings.HighlightPointborderColor.A);
                Gl.glLineWidth(Settings.LineWidth / 2f);
                Gl.glPushAttrib(Gl.GL_ENABLE_BIT);
                Gl.glLineStipple(3, 0xAAAA);
                Gl.glEnable(Gl.GL_LINE_STIPPLE);
                Gl.glBegin(Gl.GL_LINES);
                vph.draw2DVertice(vp1);
                vph.draw2DVertice(vp2);
                Gl.glEnd();
                Gl.glPopAttrib();

                Gl.glPointSize(Settings.PointSize / 2);
                Gl.glBegin(Gl.GL_POINTS);
                vph.draw2DVertice(vp1);
                vph.draw2DVertice(vp2);
                Gl.glColor4f(Settings.HighlightPointColor.R / 255f, Settings.HighlightPointColor.G / 255f, Settings.HighlightPointColor.B / 255f, Settings.HighlightPointColor.A);
                vph.draw2DVertice(lookatpos);
                Gl.glEnd();
            }
            public void RenderView(VisualSettings Settings, Vector3 pos, Vector3 lookatpos, float FOV)
            {
                ViewPlaneHandler vph     = (Application.OpenForms[0] as Form1).vph;
                double           angle   = Math.Atan2(vph.getViewCoord(lookatpos, 1) - vph.getViewCoord(pos, 1), vph.getViewCoord(lookatpos, 0) - vph.getViewCoord(pos, 0));
                double           xcenter = Math.Cos(angle) * 1000000000d;
                double           ycenter = Math.Sin(angle) * 1000000000d;
                double           xside1  = Math.Cos(angle + RadianDegree.ToRadiansD((double)FOV / 2)) * 1000000000d;
                double           yside1  = Math.Sin(angle + RadianDegree.ToRadiansD((double)FOV / 2)) * 1000000000d;
                double           xside2  = Math.Cos(angle - RadianDegree.ToRadiansD((double)FOV / 2)) * 1000000000d;
                double           yside2  = Math.Sin(angle - RadianDegree.ToRadiansD((double)FOV / 2)) * 1000000000d;

                Gl.glColor4f((Settings.HighlightPointColor.R / 255f), (Settings.HighlightPointColor.G / 255f), (Settings.HighlightPointColor.B / 255f), 0.25f);
                Gl.glBegin(Gl.GL_TRIANGLE_FAN);
                vph.draw2DVertice(pos);
                Gl.glVertex2d(xside1, yside1);
                Gl.glVertex2d(xside2, yside2);
                Gl.glEnd();
                Gl.glColor4f((Settings.CameColor.R / 255f), (Settings.CameColor.G / 255f), (Settings.CameColor.B / 255f), Settings.CameColor.A);
                Gl.glBegin(Gl.GL_LINE_LOOP);
                Gl.glVertex2d(xside1, yside1);
                vph.draw2DVertice(pos);
                Gl.glVertex2d(xside2, yside2);
                Gl.glEnd();
                Gl.glColor4f((Settings.HighlightPointborderColor.R / 255f), (Settings.HighlightPointborderColor.G / 255f), (Settings.HighlightPointborderColor.B / 255f), Settings.HighlightPointborderColor.A);
                Gl.glLineWidth(Settings.LineWidth / 2f);
                Gl.glPushAttrib(Gl.GL_ENABLE_BIT);
                Gl.glLineStipple(3, 0xAAAA);
                Gl.glEnable(Gl.GL_LINE_STIPPLE);
                Gl.glBegin(Gl.GL_LINES);
                vph.draw2DVertice(pos);
                Gl.glVertex2d(xcenter, ycenter);
                Gl.glEnd();
                Gl.glPopAttrib();
            }
示例#4
0
            public void RenderPicking(int entry_id)
            {
                ViewPlaneHandler vph = (Application.OpenForms[0] as Form1).vph;
                VisualSettings Settings = (Application.OpenForms[0] as Form1).Settings;
                Color pickingColor = SectionPicking.GetColor(Sections.StartPositions, 0, entry_id);

                Gl.glPointSize(Settings.PointSize + 2f);
                Gl.glBegin(Gl.GL_POINTS);
                Gl.glColor4f(pickingColor.R / 255f, pickingColor.G / 255f, pickingColor.B / 255f, 1f);
                vph.draw2DVertice(Pos);
                Gl.glEnd();
            }
示例#5
0
                public void RenderPoint()
                {
                    ViewPlaneHandler vph = (Application.OpenForms[0] as Form1).vph;

                    VisualSettings Settings     = (Application.OpenForms[0] as Form1).Settings;
                    List <object>  SelectedDots = (Application.OpenForms[0] as Form1).SelectedDots;
                    float          PointScale   = 50f * Scale;

                    Gl.glPointSize(Settings.PointSize + 2f);
                    Gl.glBegin(Gl.GL_POINTS);
                    if (SelectedDots.Contains(this))
                    {
                        Gl.glColor4f(Settings.HighlightPointborderColor.R / 255f, Settings.HighlightPointborderColor.G / 255f, Settings.HighlightPointborderColor.B / 255f, Settings.HighlightPointborderColor.A);
                    }
                    else
                    {
                        Gl.glColor4f(Settings.PointborderColor.R / 255f, Settings.PointborderColor.G / 255f, Settings.PointborderColor.B / 255f, Settings.PointborderColor.A);
                    }
                    vph.draw2DVertice(Pos);
                    Gl.glEnd();

                    Gl.glPointSize(Settings.PointSize);
                    Gl.glBegin(Gl.GL_POINTS);
                    if (SelectedDots.Contains(this))
                    {
                        Gl.glColor4f(Settings.HighlightPointColor.R / 255f, Settings.HighlightPointColor.G / 255f, Settings.HighlightPointColor.B / 255f, Settings.HighlightPointColor.A);
                    }
                    else
                    {
                        Gl.glColor4f(Settings.ItemColor.R / 255f, Settings.ItemColor.G / 255f, Settings.ItemColor.B / 255f, Settings.ItemColor.A);
                    }
                    vph.draw2DVertice(Pos);
                    Gl.glEnd();

                    Gl.glLineWidth(Settings.LineWidth);
                    if (SelectedDots.Contains(this))
                    {
                        DrawFilledCircle(vph.getViewCoord(Pos, 0), vph.getViewCoord(Pos, 1), PointScale, 24, Settings.HighlightPointborderColor, Settings.HighlightPointColor);
                        float scanRad = 300;
                        if (PlayerScanRadiusVal != 0)
                        {
                            scanRad *= 3;
                        }
                        DrawStrippedCircle(vph.getViewCoord(Pos, 0), vph.getViewCoord(Pos, 1), scanRad, 24, Settings.HighlightPointborderColor);
                    }
                    else
                    {
                        DrawFilledCircle(vph.getViewCoord(Pos, 0), vph.getViewCoord(Pos, 1), PointScale, 24, Settings.ItemColor, Settings.ItemColor);
                    }
                }
            public void RenderCame(VisualSettings Settings, Vector3 pos)
            {
                ViewPlaneHandler vph = (Application.OpenForms[0] as Form1).vph;

                Gl.glPointSize(Settings.PointSize * (2f / 3f) + 2f);
                Gl.glBegin(Gl.GL_POINTS);
                Gl.glColor4f(Settings.PointborderColor.R / 255f, Settings.PointborderColor.G / 255f, Settings.PointborderColor.B / 255f, Settings.PointborderColor.A);
                vph.draw2DVertice(pos);
                Gl.glEnd();

                Gl.glPointSize(Settings.PointSize * (2f / 3f));
                Gl.glBegin(Gl.GL_POINTS);
                Gl.glColor4f(Settings.CameColor.R / 255f, Settings.CameColor.G / 255f, Settings.CameColor.B / 255f, Settings.CameColor.A);
                vph.draw2DVertice(pos);
                Gl.glEnd();
            }
示例#7
0
            public void RenderPoint()
            {
                VisualSettings   Settings     = (Application.OpenForms[0] as Form1).Settings;
                List <object>    SelectedDots = (Application.OpenForms[0] as Form1).SelectedDots;
                ViewPlaneHandler vph          = (Application.OpenForms[0] as Form1).vph;

                Gl.glPointSize(Settings.PointSize + 2f);
                Gl.glBegin(Gl.GL_POINTS);
                if (SelectedDots.Contains(this))
                {
                    Gl.glColor4f(Settings.HighlightPointborderColor.R / 255f, Settings.HighlightPointborderColor.G / 255f, Settings.HighlightPointborderColor.B / 255f, Settings.HighlightPointborderColor.A);
                }
                else
                {
                    Gl.glColor4f(Settings.PointborderColor.R / 255f, Settings.PointborderColor.G / 255f, Settings.PointborderColor.B / 255f, Settings.PointborderColor.A);
                }
                vph.draw2DVertice(Pos);
                Gl.glEnd();

                Gl.glPointSize(Settings.PointSize);
                Gl.glBegin(Gl.GL_POINTS);
                if (SelectedDots.Contains(this))
                {
                    Gl.glColor4f(Settings.HighlightPointColor.R / 255f, Settings.HighlightPointColor.G / 255f, Settings.HighlightPointColor.B / 255f, Settings.HighlightPointColor.A);
                }
                else
                {
                    Gl.glColor4f(Settings.CameColor.R / 255f, Settings.CameColor.G / 255f, Settings.CameColor.B / 255f, Settings.CameColor.A);
                }
                vph.draw2DVertice(Pos);
                Gl.glEnd();

                // Viewpoints
                if (SelectedDots.Contains(this))
                {
                    Vector3 vp1 = new Vector3(Viewpoint1X, Viewpoint1Y, Viewpoint1Z);
                    Vector3 vp2 = new Vector3(Viewpoint2X, Viewpoint2Y, Viewpoint2Z);

                    Gl.glPointSize(Settings.PointSize / 2);
                    Gl.glBegin(Gl.GL_POINTS);
                    Gl.glColor4f((Settings.HighlightPointColor.R / 255f) + 0.1f, (Settings.HighlightPointColor.G / 255f) + 0.1f, (Settings.HighlightPointColor.B / 255f) + 0.1f, Settings.HighlightPointColor.A);
                    vph.draw2DVertice(vp1);
                    Gl.glColor4f((Settings.HighlightPointColor.R / 255f) - 0.1f, (Settings.HighlightPointColor.G / 255f) - 0.1f, (Settings.HighlightPointColor.B / 255f) - 0.1f, Settings.HighlightPointColor.A);
                    vph.draw2DVertice(vp2);
                    Gl.glEnd();
                }
            }
示例#8
0
            public void Render(bool isCulling = false)
            {
                ViewPlaneHandler vph = (Application.OpenForms[0] as Form1).vph;

                if (!Visible)
                {
                    return;
                }

                VisualSettings Settings = (Application.OpenForms[0] as Form1).Settings;

                Gl.glLineWidth(Settings.LineWidth);

                if (Settings.LinkPoints)
                {
                    Gl.glColor4f(Settings.RouteLinkColor.R / 255f, Settings.RouteLinkColor.G / 255f, Settings.RouteLinkColor.B / 255f, Settings.RouteLinkColor.A);
                    for (int i = 0; i < Entries.Count - 1; i++)
                    {
                        Gl.glBegin(Gl.GL_LINES);
                        Entries[i].RenderLine();
                        Entries[i + 1].RenderLine();
                        Gl.glEnd();
                    }
                    if (Loop)
                    {
                        Gl.glBegin(Gl.GL_LINES);
                        Entries[Entries.Count - 1].RenderLine();
                        Entries[0].RenderLine();
                        Gl.glEnd();
                    }
                }
                if (isCulling && vph.mode == ViewPlaneHandler.PLANE_MODES.XZ)
                {
                    Gl.glColor4f(Settings.RouteLinkColor.R / 255f, Settings.RouteLinkColor.G / 255f, Settings.RouteLinkColor.B / 255f, Settings.RouteLinkColor.A / (255f * 4f));
                    Gl.glBegin(Gl.GL_TRIANGLE_FAN);
                    Gl.glVertex2d(Entries[0].PositionX, Entries[0].PositionZ);
                    Gl.glVertex2d(Entries[1].PositionX, Entries[1].PositionZ);
                    Gl.glVertex2d(Entries[2].PositionX, Entries[2].PositionZ);
                    Gl.glVertex2d(Entries[3].PositionX, Entries[3].PositionZ);
                    Gl.glEnd();
                }
                foreach (var entry in Entries)
                {
                    entry.RenderPoint();
                }
            }
示例#9
0
            public void RenderPoint(bool picking)
            {
                ViewPlaneHandler vph = (Application.OpenForms[0] as Form1).vph;

                VisualSettings Settings     = (Application.OpenForms[0] as Form1).Settings;
                List <object>  SelectedDots = (Application.OpenForms[0] as Form1).SelectedDots;

                Gl.glPointSize(Settings.PointSize + 2f);
                Gl.glBegin(Gl.GL_POINTS);
                if (SelectedDots.Contains(this))
                {
                    Gl.glColor4f(Settings.HighlightPointborderColor.R / 255f, Settings.HighlightPointborderColor.G / 255f, Settings.HighlightPointborderColor.B / 255f, Settings.HighlightPointborderColor.A);
                }
                else
                {
                    Gl.glColor4f(Settings.PointborderColor.R / 255f, Settings.PointborderColor.G / 255f, Settings.PointborderColor.B / 255f, Settings.PointborderColor.A);
                }
                vph.draw2DVertice(Pos);
                Gl.glEnd();
                if (vph.mode == ViewPlaneHandler.PLANE_MODES.XZ)
                {
                    Gl.glPushMatrix();
                    Gl.glTranslatef(PositionX, PositionZ, 0);
                    Gl.glRotatef(-RotationY, 0, 0, 1);

                    Gl.glBegin(Gl.GL_LINES);
                    Gl.glVertex2f(0, 0);
                    Gl.glVertex2f(0, 150);
                    Gl.glEnd();
                    Gl.glPopMatrix();
                }
                Gl.glPointSize(Settings.PointSize);
                Gl.glBegin(Gl.GL_POINTS);
                if (SelectedDots.Contains(this))
                {
                    Gl.glColor4f(Settings.HighlightPointColor.R / 255f, Settings.HighlightPointColor.G / 255f, Settings.HighlightPointColor.B / 255f, Settings.HighlightPointColor.A);
                }
                else
                {
                    Gl.glColor4f(Settings.JugemColor.R / 255f, Settings.JugemColor.G / 255f, Settings.JugemColor.B / 255f, Settings.JugemColor.A);
                }
                vph.draw2DVertice(Pos);
                Gl.glEnd();
            }
示例#10
0
        public void Render(bool picking)
        {
            ViewPlaneHandler vph = (Application.OpenForms[0] as Form1).vph;

            if (!Visible || vph.mode != ViewPlaneHandler.PLANE_MODES.XZ)
            {
                return;
            }

            if (picking)
            {
                for (int i = 0; i < Entries.Count; i++)
                {
                    Entries[i].RenderPicking(i);
                }
                return;
            }

            foreach (var entry in Entries)
            {
                entry.RenderPoint();
            }
        }
示例#11
0
                public void RenderLine()
                {
                    ViewPlaneHandler vph = (Application.OpenForms[0] as Form1).vph;

                    vph.draw2DVertice(Pos);
                }
示例#12
0
                public void RenderPoint()
                {
                    VisualSettings Settings     = (Application.OpenForms[0] as Form1).Settings;
                    List <object>  SelectedDots = (Application.OpenForms[0] as Form1).SelectedDots;
                    float          PointScale   = 50f * Scale;
                    Color          newcolor     = decideColor(this);

                    ViewPlaneHandler vph = (Application.OpenForms[0] as Form1).vph;

                    Gl.glPointSize(Settings.PointSize + 2f);
                    Gl.glBegin(Gl.GL_POINTS);

                    if (SelectedDots.Contains(this))
                    {
                        Gl.glColor4f(Settings.HighlightPointborderColor.R / 255f, Settings.HighlightPointborderColor.G / 255f, Settings.HighlightPointborderColor.B / 255f, Settings.HighlightPointborderColor.A);
                    }
                    else
                    {
                        Gl.glColor4f(1 - Settings.PointborderColor.R / 255f, 1 - Settings.PointborderColor.G / 255f, 1 - Settings.PointborderColor.B / 255f, Settings.PointborderColor.A);
                    }
                    vph.draw2DVertice(Pos);
                    Gl.glEnd();

                    Gl.glPointSize(Settings.PointSize);
                    Gl.glBegin(Gl.GL_POINTS);
                    if (SelectedDots.Contains(this))
                    {
                        Gl.glColor4f(Settings.HighlightPointColor.R / 255f, Settings.HighlightPointColor.G / 255f, Settings.HighlightPointColor.B / 255f, Settings.HighlightPointColor.A);
                    }
                    else
                    {
                        Gl.glColor4f(newcolor.R / 255f, newcolor.G / 255f, newcolor.B / 255f, newcolor.A);
                    }
                    vph.draw2DVertice(Pos);
                    Gl.glEnd();

                    Gl.glLineWidth(Settings.LineWidth);
                    if (SelectedDots.Contains(this))
                    {
                        DrawFilledCircle(vph.getViewCoord(Pos, 0), vph.getViewCoord(Pos, 1), PointScale, 24, Settings.HighlightPointborderColor, Settings.HighlightPointColor);
                    }
                    else
                    {
                        DrawFilledCircle(vph.getViewCoord(Pos, 0), vph.getViewCoord(Pos, 1), PointScale, 24, newcolor, newcolor);
                    }

                    if (SelectedDots.Contains(this) && MaxSearchYOffsetVal != 0 && (vph.mode == ViewPlaneHandler.PLANE_MODES.XY || vph.mode == ViewPlaneHandler.PLANE_MODES.ZY))
                    {
                        int toDraw = MaxSearchYOffsetVal;
                        if (toDraw == -1)
                        {
                            toDraw = 75;
                        }
                        Gl.glColor4f(Settings.HighlightPointColor.R / 255f, Settings.HighlightPointColor.G / 255f, Settings.HighlightPointColor.B / 255f, Settings.HighlightPointColor.A);
                        Gl.glPushAttrib(Gl.GL_ENABLE_BIT);
                        Gl.glLineStipple(3, 0xAAAA);
                        Gl.glEnable(Gl.GL_LINE_STIPPLE);
                        Gl.glBegin(Gl.GL_LINES);

                        vph.draw2DVertice(new Vector3(100000, Pos.Y + toDraw, 100000));
                        vph.draw2DVertice(new Vector3(-100000, Pos.Y + toDraw, -100000));

                        Gl.glEnd();
                        Gl.glBegin(Gl.GL_LINES);

                        vph.draw2DVertice(new Vector3(100000, Pos.Y - toDraw, 100000));
                        vph.draw2DVertice(new Vector3(-100000, Pos.Y - toDraw, -100000));

                        Gl.glEnd();
                        Gl.glPopAttrib();
                    }
                }
示例#13
0
        public void MovePoint(SectionPicking.PickingInfo pick_info, Vector3 position)
        {
            ViewPlaneHandler vph = (Application.OpenForms[0] as Form1).vph;
            Vector3          res;

            switch (pick_info.Section)
            {
            case Sections.StartPositions:
                res = StartPositions.Entries[pick_info.EntryID].Pos;
                vph.storePlane(ref res, position);
                StartPositions.Entries[pick_info.EntryID].Pos = res;
                break;

            case Sections.EnemyRoutes:
                res = EnemyRoutes.Entries[pick_info.GroupID].Entries[pick_info.EntryID].Pos;
                vph.storePlane(ref res, position);
                EnemyRoutes.Entries[pick_info.GroupID].Entries[pick_info.EntryID].Pos = res;
                break;

            case Sections.ItemRoutes:
                res = ItemRoutes.Entries[pick_info.GroupID].Entries[pick_info.EntryID].Pos;
                vph.storePlane(ref res, position);
                ItemRoutes.Entries[pick_info.GroupID].Entries[pick_info.EntryID].Pos = res;
                break;

            case Sections.GliderRoutes:
                res = GliderRoutes.Entries[pick_info.GroupID].Entries[pick_info.EntryID].Pos;
                vph.storePlane(ref res, position);
                GliderRoutes.Entries[pick_info.GroupID].Entries[pick_info.EntryID].Pos = res;
                break;

            case Sections.Routes:
                res = Routes.Entries[pick_info.GroupID].Entries[pick_info.EntryID].Pos;
                vph.storePlane(ref res, position);
                Routes.Entries[pick_info.GroupID].Entries[pick_info.EntryID].Pos = res;
                break;

            case Sections.CheckPoints:
                if (vph.mode != ViewPlaneHandler.PLANE_MODES.XZ)
                {
                    break;
                }
                if (pick_info.PointID == PointID.Left)
                {
                    CheckPoints.Entries[pick_info.GroupID].Entries[pick_info.EntryID].LeftPointX = position.X;
                    CheckPoints.Entries[pick_info.GroupID].Entries[pick_info.EntryID].LeftPointZ = position.Z;
                }
                else
                {
                    CheckPoints.Entries[pick_info.GroupID].Entries[pick_info.EntryID].RightPointX = position.X;
                    CheckPoints.Entries[pick_info.GroupID].Entries[pick_info.EntryID].RightPointZ = position.Z;
                }
                break;

            case Sections.Objects:
                res = Objects.Entries[pick_info.EntryID].Pos;
                vph.storePlane(ref res, position);
                Objects.Entries[pick_info.EntryID].Pos = res;
                break;

            case Sections.RespawnPoints:
                res = RespawnPoints.Entries[pick_info.EntryID].Pos;
                vph.storePlane(ref res, position);
                RespawnPoints.Entries[pick_info.EntryID].Pos = res;
                break;

            case Sections.Area:
                if (vph.mode != ViewPlaneHandler.PLANE_MODES.XZ)
                {
                    break;
                }
                Area.Entries[pick_info.EntryID].PositionX = position.X;
                Area.Entries[pick_info.EntryID].PositionZ = position.Z;
                break;

            case Sections.Camera:
                res = Camera.Entries[pick_info.EntryID].Pos;
                vph.storePlane(ref res, position);
                Camera.Entries[pick_info.EntryID].Pos = res;
                break;
            }
        }
示例#14
0
        public void MoveAnyPoint(object point, Vector3 position, Boolean left = false)
        {
            ViewPlaneHandler vph  = (Application.OpenForms[0] as Form1).vph;
            Vector3          res  = new Vector3();
            Type             type = point.GetType();

            if (type == typeof(StartPositions.StartEntry))
            {
                vph.storeToVector(ref res, position);
                ((StartPositions.StartEntry)point).Pos = res;
            }
            else if (type == typeof(EnemyRoutes.EnemyGroup.EnemyEntry))
            {
                vph.storeToVector(ref res, position);
                ((EnemyRoutes.EnemyGroup.EnemyEntry)point).Pos = res;
            }
            else if (type == typeof(ItemRoutes.ItemGroup.ItemEntry))
            {
                vph.storeToVector(ref res, position);
                ((ItemRoutes.ItemGroup.ItemEntry)point).Pos = res;
            }
            else if (type == typeof(GliderRoutes.GliderGroup.GliderEntry))
            {
                vph.storeToVector(ref res, position);
                ((GliderRoutes.GliderGroup.GliderEntry)point).Pos = res;
            }
            else if (type == typeof(CheckPoints.CheckpointGroup.CheckpointEntry))
            {
                if (left)
                {
                    ((CheckPoints.CheckpointGroup.CheckpointEntry)point).LeftPointX = position.X;
                    ((CheckPoints.CheckpointGroup.CheckpointEntry)point).LeftPointZ = position.Z;
                    return;
                }
                ((CheckPoints.CheckpointGroup.CheckpointEntry)point).RightPointX = position.X;
                ((CheckPoints.CheckpointGroup.CheckpointEntry)point).RightPointZ = position.Z;
            }
            else if (type == typeof(Routes.RouteGroup.RouteEntry))
            {
                vph.storeToVector(ref res, position);
                ((Routes.RouteGroup.RouteEntry)point).Pos = res;
            }
            else if (type == typeof(Objects.ObjectEntry))
            {
                vph.storeToVector(ref res, position);
                ((Objects.ObjectEntry)point).Pos = res;
            }
            else if (type == typeof(RespawnPoints.RespawnEntry))
            {
                vph.storeToVector(ref res, position);
                ((RespawnPoints.RespawnEntry)point).Pos = res;
            }
            else if (type == typeof(Area.AreaEntry))
            {
                ((Area.AreaEntry)point).PositionX = position.X;
                ((Area.AreaEntry)point).PositionY = position.Y;
                ((Area.AreaEntry)point).PositionZ = position.Z;
            }
            else if (type == typeof(Camera.CameraEntry))
            {
                vph.storeToVector(ref res, position);
                ((Camera.CameraEntry)point).Pos = res;
            }
        }
        public void Render(bool picking = false)
        {
            if (!Visible)
            {
                return;
            }

            ViewPlaneHandler vph = (Application.OpenForms[0] as Form1).vph;

            Gl.glDepthFunc(Gl.GL_LESS);
            Gl.glEnable(Gl.GL_ALPHA_TEST);
            Gl.glAlphaFunc(Gl.GL_GREATER, 0f);
            Gl.glLoadIdentity();
            Gl.glBindTexture(Gl.GL_TEXTURE_2D, 0);
            if (Wireframe)
            {
                Gl.glPolygonMode(Gl.GL_FRONT_AND_BACK, Gl.GL_LINE);
            }
            if (picking)
            {
                int i = 0;
                foreach (var p in obj_data.Faces)
                {
                    if (GetMaterialByName(p.Material).ShowMaterial)
                    {
                        Color pickingColor = ModelPicking.GetColor(i);
                        Gl.glColor4f(pickingColor.R / 255f, pickingColor.G / 255f, pickingColor.B / 255f, pickingColor.A);
                        Gl.glBegin(Gl.GL_TRIANGLES);
                        vph.draw3DVertice(obj_data.Vertices[p.VertexIndieces[0]]);
                        vph.draw3DVertice(obj_data.Vertices[p.VertexIndieces[1]]);
                        vph.draw3DVertice(obj_data.Vertices[p.VertexIndieces[2]]);
                        Gl.glEnd();
                    }
                    i++;
                }
                return;
            }

            foreach (var p in obj_data.Faces)
            {
                if (GetMaterialByName(p.Material).ShowMaterial)
                {
                    GlSetMaterial(GetMaterialByName(p.Material));
                    Gl.glBegin(Gl.GL_TRIANGLES);
                    if (p.TexCoordIndieces.Count > 0)
                    {
                        Gl.glTexCoord2f(obj_data.TexCoords[p.TexCoordIndieces[0]].X, obj_data.TexCoords[p.TexCoordIndieces[0]].Z);
                    }
                    vph.draw3DVertice(obj_data.Vertices[p.VertexIndieces[0]]);
                    if (p.TexCoordIndieces.Count > 0)
                    {
                        Gl.glTexCoord2f(obj_data.TexCoords[p.TexCoordIndieces[1]].X, obj_data.TexCoords[p.TexCoordIndieces[1]].Z);
                    }
                    vph.draw3DVertice(obj_data.Vertices[p.VertexIndieces[1]]);
                    if (p.TexCoordIndieces.Count > 0)
                    {
                        Gl.glTexCoord2f(obj_data.TexCoords[p.TexCoordIndieces[2]].X, obj_data.TexCoords[p.TexCoordIndieces[2]].Z);
                    }
                    vph.draw3DVertice(obj_data.Vertices[p.VertexIndieces[2]]);
                    Gl.glEnd();
                }
            }
            Gl.glDisable(Gl.GL_ALPHA_TEST);
            Gl.glPolygonMode(Gl.GL_FRONT_AND_BACK, Gl.GL_FILL);
        }