public static MaterialEntry BuildMatEntry(BinaryReader MBR, MaterialEntry MATEntry) { //Header variables. MATEntry.Magic = ByteUtilitarian.BytesToStringL2R(MBR.ReadBytes(4).ToList(), MATEntry.Magic); MATEntry.SomethingCount = MBR.ReadInt32(); MATEntry.MaterialCount = MBR.ReadInt32(); MATEntry.TextureCount = MBR.ReadInt32(); MATEntry.WeirdHash = ByteUtilitarian.BytesToStringL2R(MBR.ReadBytes(4).ToList(), MATEntry.Magic); MATEntry.Field14 = MBR.ReadInt32(); MATEntry.TextureOffset = MBR.ReadInt32(); MBR.BaseStream.Position = MBR.BaseStream.Position + 4; MATEntry.MaterialOffset = MBR.ReadInt32(); MBR.BaseStream.Position = MBR.BaseStream.Position + 4; //For the Texture References. MATEntry.Textures = new List <MaterialTextureReference>(); MBR.BaseStream.Position = MATEntry.TextureOffset; for (int i = 0; i < MATEntry.TextureCount; i++) { MaterialTextureReference TexTemp = new MaterialTextureReference(); TexTemp = TexTemp.FillMaterialTexReference(MATEntry, i, MBR, TexTemp); MATEntry.Textures.Add(TexTemp); } //Now for the Materials themselves. MATEntry.Materials = new List <MaterialMaterialEntry>(); byte[] ShadeTemp = new byte[4]; int PrevOffset = Convert.ToInt32(MBR.BaseStream.Position); //uint ShadeUInt; //byte[] NameHashBytes; //uint NameTemp; //Part 1 of Materials. for (int i = 0; i < MATEntry.MaterialCount; i++) { MaterialMaterialEntry MMEntry = new MaterialMaterialEntry(); MMEntry = MMEntry.FIllMatMatEntryPropertiesPart1(MMEntry, MATEntry, MBR, PrevOffset, i); MMEntry = MMEntry.FIllMatMatEntryPropertiesPart2(MMEntry, MATEntry, MBR, PrevOffset, i); MATEntry.Materials.Add(MMEntry); PrevOffset = PrevOffset + 72; MBR.BaseStream.Position = PrevOffset; } return(MATEntry); }
public MaterialTextureReference FillMaterialTexReference(MaterialEntry Mat, int ID, BinaryReader bnr, MaterialTextureReference texref) { //Typehash. texref.TypeHash = ByteUtilitarian.BytesToStringL2R(bnr.ReadBytes(4).ToList(), texref.TypeHash); texref.UnknownParam04 = bnr.ReadInt32(); texref.UnknownParam08 = bnr.ReadInt32(); texref.UnknownParam0C = bnr.ReadInt32(); texref.UnknownParam10 = bnr.ReadInt32(); texref.UnknownParam14 = bnr.ReadInt32(); //Name. texref.FullTexName = Encoding.ASCII.GetString(bnr.ReadBytes(64)).Trim('\0'); texref.Index = ID + 1; return(texref); }