public override void Read() { var br = Chunk.GetReader(); Entries = new MODDEntry[Chunk.Size / 40]; for (int i = 0; i < Entries.Length; i++) { Entries[i] = MODDEntry.Read(br); } }
/// <inheritdoc/> public void LoadBinaryData(byte[] inData) { using (var ms = new MemoryStream(inData)) using (var br = new BinaryReader(ms)) { var materialCount = br.BaseStream.Length / MODDEntry.GetSize(); for (var i = 0; i < materialCount; ++i) { MODDEntries.Add(new MODDEntry(br.ReadBytes(MODDEntry.GetSize()))); } } }
public static MODDEntry Read(BinaryReader br) { var e = new MODDEntry(); e.ofsMODN = br.ReadUInt32(); e.Position = new Vector3(br.ReadSingle(), br.ReadSingle(), br.ReadSingle()); e.Rotation = new float[4]; for (int i = 0; i < 4; i++) e.Rotation[i] = br.ReadSingle(); e.Scale = br.ReadSingle(); e.Color = new byte[4]; for (int i = 0; i < 4; i++) e.Color[i] = br.ReadByte(); return e; }
public static MODDEntry Read(BinaryReader br) { var e = new MODDEntry(); e.ofsMODN = br.ReadUInt32(); e.Position = new Vector3(br.ReadSingle(), br.ReadSingle(), -br.ReadSingle()); e.Rotation = new float[4]; for (int i = 0; i < 4; i++) { e.Rotation[i] = br.ReadSingle(); } e.Scale = br.ReadSingle(); e.Color = new byte[4]; for (int i = 0; i < 4; i++) { e.Color[i] = br.ReadByte(); } return(e); }
public void Read(byte[] inData) { using (var stream = new MemoryStream(inData)) using (var reader = new BinaryReader(stream)) { var moddSize = inData.Length / 40; for (var i = 0; i < moddSize; ++i) { var finalNameBytes = new byte[4]; var nameOffsetBytes = reader.ReadBytes(3); Buffer.BlockCopy(nameOffsetBytes, 0, finalNameBytes, 0, 3); var modd = new MODDEntry { NameIndex = BitConverter.ToInt32(finalNameBytes, 0), Flags = reader.ReadByte(), Position = reader.ReadC3Vector(), Rotation = reader.ReadC3Vector(), RotationW = reader.ReadSingle(), Scale = reader.ReadSingle(), Color = reader.ReadCArgb() }; var filename = AddFilename(MODI.DoodadFileIds[modd.NameIndex]); if (filename != string.Empty) { var idx = Filenames[filename]; nameOffsetBytes = BitConverter.GetBytes(idx); Buffer.BlockCopy(nameOffsetBytes, 0, finalNameBytes, 0, 3); modd.NameIndex = BitConverter.ToInt32(finalNameBytes, 0); } else { modd.NameIndex = -1; } MODDs.Add(modd); } } }