Beispiel #1
0
    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);
    }
Beispiel #2
0
        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);
                    }
                }
            }
        }
Beispiel #3
0
    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;
    }