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(); }
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(); }
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(); }
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(); } }
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(); } }
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(); }
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(); } }
public void RenderLine() { ViewPlaneHandler vph = (Application.OpenForms[0] as Form1).vph; vph.draw2DVertice(Pos); }
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(); } }
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; } }
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); }