/// <inheritdoc/> public void LoadBinaryData(byte[] inData) { using (var ms = new MemoryStream(inData)) using (var br = new BinaryReader(ms)) { var materialCount = br.BaseStream.Length / MOMTEntry.GetSize(); for (var i = 0; i < materialCount; ++i) { MOMTEntries.Add(new MOMTEntry(br.ReadBytes(MOMTEntry.GetSize()))); } } }
public void Read(byte[] inData) { using (var stream = new MemoryStream(inData)) using (var reader = new BinaryReader(stream)) { var momtSize = inData.Length / 64; for (var i = 0; i < momtSize; ++i) { var momt = new MOMTEntry { Flags1 = reader.ReadUInt32(), ShaderType = reader.ReadUInt32(), BlendMode = reader.ReadUInt32(), TextureId1 = reader.ReadUInt32(), SidnColor = reader.ReadCArgb(), FrameSidnColor = reader.ReadCArgb(), TextureId2 = reader.ReadUInt32(), DiffColor = reader.ReadCArgb(), GroundType = reader.ReadUInt32(), TextureId3 = reader.ReadUInt32(), Color = reader.ReadCArgb(), Flags2 = reader.ReadUInt32() }; momt.Flags1 &= 0xFF; for (var j = 0; j < 4; ++j) { momt.RunTimeData[j] = reader.ReadUInt32(); } var filename = AddFilename(momt.TextureId1); if (filename != string.Empty) { var idx = Filenames[filename]; momt.TextureId1 = idx; } else { momt.TextureId1 = 0; } filename = AddFilename(momt.TextureId2); if (filename != string.Empty) { var idx = Filenames[filename]; momt.TextureId2 = idx; } else { momt.TextureId2 = 0; } filename = AddFilename(momt.TextureId3); if (filename != string.Empty) { var idx = Filenames[filename]; momt.TextureId3 = idx; } else { momt.TextureId3 = 0; } switch (momt.ShaderType) { case 13: case 14: case 15: case 16: case 7: momt.ShaderType = 6; break; case 9: momt.ShaderType = 0; break; case 12: momt.ShaderType = 5; break; default: if (momt.ShaderType >= 13) { momt.ShaderType = 4; } break; } MOMTs.Add(momt); } } var motx = new MOTX { Filenames = Filenames.Keys.ToList() }; WMOFile.Chunks.Add(motx); }