public void Parse(Stream s) { if (s == null) { return; } BinaryReader r = new BinaryReader(s); info = new RLEInfo(s); this.MipHeaders = new MipHeader[this.info.mipCount + 1]; for (int i = 0; i < this.info.mipCount; i++) { MipHeaders[i] = new MipHeader { CommandOffset = r.ReadInt32(), Offset2 = r.ReadInt32(), Offset3 = r.ReadInt32(), Offset0 = r.ReadInt32(), Offset1 = r.ReadInt32(), }; } this.MipHeaders[this.info.mipCount] = new MipHeader { CommandOffset = MipHeaders[0].Offset2, Offset2 = MipHeaders[0].Offset3, Offset3 = MipHeaders[0].Offset0, Offset0 = MipHeaders[0].Offset1, Offset1 = (int)s.Length, }; s.Position = 0; this.data = r.ReadBytes((int)s.Length); }
public void Parse(Stream s) { if (s == null || s.Length == 0) { this.data = new byte[0]; return; } BinaryReader r = new BinaryReader(s); info = new RLEInfo(s); this.MipHeaders = new MipHeader[this.info.mipCount + 1]; for (int i = 0; i < this.info.mipCount; i++) { var header = new MipHeader { CommandOffset = r.ReadInt32(), Offset2 = r.ReadInt32(), Offset3 = r.ReadInt32(), Offset0 = r.ReadInt32(), Offset1 = r.ReadInt32(), }; if (this.info.Version == RLEVersion.RLES) { header.Offset4 = r.ReadInt32(); } MipHeaders[i] = header; } this.MipHeaders[this.info.mipCount] = new MipHeader { CommandOffset = MipHeaders[0].Offset2, Offset2 = MipHeaders[0].Offset3, Offset3 = MipHeaders[0].Offset0, Offset0 = MipHeaders[0].Offset1, }; if (this.info.Version == RLEVersion.RLES) { this.MipHeaders[this.info.mipCount].Offset1 = this.MipHeaders[0].Offset4; this.MipHeaders[this.info.mipCount].Offset4 = (int)s.Length; } else { this.MipHeaders[this.info.mipCount].Offset1 = (int)s.Length; } s.Position = 0; this.data = r.ReadBytes((int)s.Length); }