public dedge_t[] GetEdges() { lump_t lump = lumps[12]; dedge_t[] edges = new dedge_t[lump.filelen / 4]; stream.Position = lump.fileofs; for (int i = 0; i < edges.Length; i++) { edges[i].v = new ushort[2]; edges[i].v[0] = FileReader.readUShort(stream); edges[i].v[1] = FileReader.readUShort(stream); } lumpData[12] = edges; return(edges); }
private void DrawWorld() { if (Program.Hack.StateMod.Map != null) { var map = Program.Hack.StateMod.Map; var lp = Program.Hack.StateMod.LocalPlayer.Value; if (lp == null || !lp.IsValid) { return; } var alivePlayers = Program.Hack.StateMod.GetPlayersSet(true, true, true).Where(x => x.Address != lp.Address); var allPositions = alivePlayers.Select(x => x.m_vecOrigin).ToArray(); //.Concat(new Vector3[] { lp.m_vecOrigin }).ToArray(); mvertex_t line3d1, line3d2; foreach (var face in map.m_Surfaces) { if (map.m_Texinfos.Length > face.m_Texinfo) { if (((map.m_Texinfos[face.m_Texinfo].m_Flags & BSPFlags.SURF_NODRAW) != 0)) { continue; } } var plane = map.m_Planes[face.m_Planenum]; if (!(plane.m_Normal.Z > plane.m_Normal.X && plane.m_Normal.Z > plane.m_Normal.Y)) { continue; } for (int e = 0; e < face.m_Numedges; e++) { float dist = 1f; int surfedge = map.m_Surfedges[face.m_Firstedge + e]; dedge_t edge = map.m_Edges[System.Math.Abs(surfedge)]; if (surfedge > 0) { line3d1 = map.m_Vertexes[edge.m_V[0]]; line3d2 = map.m_Vertexes[edge.m_V[1]]; } else { line3d1 = map.m_Vertexes[edge.m_V[1]]; line3d2 = map.m_Vertexes[edge.m_V[0]]; } var p3d1 = new Vector3(line3d1.m_Position.X, line3d1.m_Position.Y, line3d1.m_Position.Z); var p3d2 = new Vector3(line3d2.m_Position.X, line3d2.m_Position.Y, line3d2.m_Position.Z); if (!allPositions.Any(x => ((p3d1 - x).Length < 200f && (p3d2 - x).Length < 200f) && (System.Math.Abs(p3d1.Z - x.Z) >= 0 && System.Math.Abs(p3d1.Z - x.Z) <= 72) )) { continue; } Vector2 p1 = Vector2.Zero, p2 = Vector2.Zero; if (!w2s(ref p1, p3d1) || !w2s(ref p2, p3d2)) { continue; } Program.Hack.Overlay.Visuals.DrawLine(Program.CurrentSettings.ESP.World.Color, p1, p2); } } } }
public dedge_t[] GetEdges() { lump_t lump = lumps[12]; dedge_t[] edges = new dedge_t[lump.filelen / 4]; stream.Position = lump.fileofs; for (int i = 0; i < edges.Length; i++) { edges[i].v = new ushort[2]; edges[i].v[0] = FileReader.readUShort(stream); edges[i].v[1] = FileReader.readUShort(stream); } lumpData[12] = edges; return edges; }