public Section(EndianAwareBinaryReader reader) { Offset = reader.BaseStream.Position; AssetLayers = new List <AssetLayer>(); DirectoryLayers = new List <DirectoryLayer>(); reader.AssertTag(BlockType.SECT); LayerCount = reader.ReadInt32(); Unknown1 = reader.ReadInt32(); SizeOfLayerData = reader.ReadInt32(); SizeOfName = reader.ReadInt32(); SizeOfChunk = reader.ReadInt32(); SizeOfSubLayerData = reader.ReadInt32(); Unknown2 = reader.ReadInt32(); Layers = Utils.CreateArray <Layer>(LayerCount, reader); SectionName = reader.ReadCString(); // skip padding reader.Seek(Offset + SizeOfChunk, SeekOrigin.Begin); // read sub layers for (var i = 0; i < LayerCount; i++) { ReadLayer(reader, Layers[i]); } // append internal names to asset entries UpdateAssetEntries(); }
public DirectoryEntry(EndianAwareBinaryReader reader, int size) { var offset = reader.BaseStream.Position + size; AssetID = reader.ReadUInt64(); Unknown2 = reader.ReadInt32(); // size of next block? Unknown3 = reader.ReadInt32(); // file hash of size? Unknown4 = reader.ReadInt32(); Unknown5 = reader.ReadInt32(); Unknown6 = reader.ReadInt32(); Unknown7 = reader.ReadInt32(); FileName = reader.ReadCString(); reader.Seek(offset, SeekOrigin.Begin); }