private static byte[] ReadLumpsBytes(BinaryReader reader, WadHeader header) { reader.BaseStream.Seek(HeaderSizeInBytes, SeekOrigin.Begin); return(reader.ReadBytes((int)(header.FirstDirectoryOffset - HeaderSizeInBytes))); }
private Wad3File() { _header = new WadHeader(); }
private static IReadOnlyList <WadDirectory> ReadDirectories(BinaryReader reader, WadHeader header) { reader.BaseStream.Seek(header.FirstDirectoryOffset, SeekOrigin.Begin); var directories = new WadDirectory[header.DirectoriesCount]; Span <char> nameSpan = stackalloc char[LumpNameSizeInBytes]; for (var i = 0; i < header.DirectoriesCount; i++) { var lumpOffset = reader.ReadUInt32() - HeaderSizeInBytes; var lumpSize = reader.ReadUInt32(); reader.Read(nameSpan); var name = string.Intern(new string(nameSpan).TrimEnd('\0')); directories[i] = new WadDirectory(lumpOffset, lumpSize, name); } return(directories); }