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 }
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 }
public void SetMaterial(LM3_Material mat) { material = mat; }