Пример #1
0
        public void Read(FileReader reader)
        {
            Material = new LM3_Material();

            HashID           = reader.ReadUInt32();
            IndexStartOffset = reader.ReadUInt32();
            uint indexFlags = reader.ReadUInt32();

            IndexCount = (indexFlags & 0xffffff);
            uint type = (indexFlags >> 24);

            if (type == 0x80)
            {
                IndexFormat = IndexFormat.Index_8;
            }
            else
            {
                IndexFormat = IndexFormat.Index_16;
            }

            VertexCount = reader.ReadUInt32();
            reader.ReadUInt32();                   //unknown
            BufferPtrOffset = reader.ReadUInt16(); //I believe this might be for the buffer pointers. It shifts by 4 for each mesh
            Unknown         = reader.ReadUInt16();
            DataFormat      = reader.ReadUInt64();
            Unknown2        = reader.ReadUInt32();
            Unknown3        = reader.ReadUInt32(); //Sometimes 0xFFFF.
            reader.ReadUInt16();
            Unknown4 = reader.ReadUInt32();
            Unknown5 = reader.ReadUInt32();
            Unknown7 = reader.ReadUInt16();
            reader.ReadUInt32(); //unknown
            reader.ReadUInt32(); //unknown
        }
Пример #2
0
        public void Read(FileReader reader)
        {
            Material = new LM3_Material();

            HashID           = reader.ReadUInt32();
            IndexStartOffset = reader.ReadUInt32();
            uint indexFlags = reader.ReadUInt32();

            IndexCount = (indexFlags & 0xffffff);
            uint type = (indexFlags >> 24);

            if (type == 0x80)
            {
                IndexFormat = IndexFormat.Index_8;
            }
            else
            {
                IndexFormat = IndexFormat.Index_16;
            }

            Console.WriteLine($"type {type} indexFlags {indexFlags} IndexCount {IndexCount}");
            //  IndexFormat = reader.ReadEnum<IndexFormat>(false);
            //  if (IndexFormat != (IndexFormat)0x8000 && IndexFormat != 0 && IndexFormat != IndexFormat.Index_16_0x2)

            VertexCount = reader.ReadUInt32();
            reader.ReadUInt32();                   //unknown
            BufferPtrOffset = reader.ReadUInt16(); //I believe this might be for the buffer pointers. It shifts by 4 for each mesh
            Unknown         = reader.ReadUInt16();
            DataFormat      = reader.ReadUInt64();
            Unknown2        = reader.ReadUInt32();
            Unknown3        = reader.ReadUInt32(); //Sometimes 0xFFFF.
            reader.ReadUInt16();
            Unknown4 = reader.ReadUInt32();
            Unknown5 = reader.ReadUInt32();
            Unknown7 = reader.ReadUInt16();
            reader.ReadUInt32(); //unknown
            reader.ReadUInt32(); //unknown
        }
Пример #3
0
 public void SetMaterial(LM3_Material mat)
 {
     material = mat;
 }