Esempio n. 1
0
        private static Entity ReadEntityLump(IntPtr ptr, LumpEntry def)
        {
            IntPtr lumpPtr = ptr + def.Offset;

            return(new Entity {
                Name = Marshal.PtrToStringAnsi(lumpPtr, def.Length)
            });
        }
Esempio n. 2
0
        private static T[] ReadBasicLump <T>(IntPtr ptr, LumpEntry def)
        {
            IntPtr lumpPtr = ptr + def.Offset;

            int elementSize  = Marshal.SizeOf <T>();
            int elementCount = def.Length / elementSize;

            T[] lump = new T[elementCount];
            for (int i = 0; i < elementCount; i++)
            {
                lump[i] = Marshal.PtrToStructure <T>(lumpPtr + i * elementSize);
            }
            return(lump);
        }
Esempio n. 3
0
        private static Visdata ReadVisDataLump(IntPtr ptr, LumpEntry def)
        {
            Visdata visData = new Visdata();

            if (def.Length > 0)
            {
                IntPtr lumpPtr = ptr + def.Offset;

                visData.NumberVectors = Marshal.ReadInt32(lumpPtr);
                visData.VectorSize    = Marshal.ReadInt32(lumpPtr + sizeof(int));
                visData.Vectors       = new byte[visData.NumberVectors * visData.VectorSize];

                Marshal.Copy(lumpPtr + 2 * sizeof(int), visData.Vectors, 0, visData.Vectors.Length);
            }

            return(visData);
        }