private static void WriteLodFileContent(Stream stream, LodFile file) { if (stream == null) { throw new ArgumentNullException(nameof(stream)); } if (file == null) { throw new ArgumentNullException(nameof(file)); } if (!file.IsChanged) { return; } // update offset file.Offset = (uint)stream.Seek(0, SeekOrigin.End); // write content var content = Encoding.GetBytes(file.CompressedContent); WriteBytes(stream, content); // write info stream.Seek(file.Position, SeekOrigin.Begin); WriteBytes(stream, file.GetNameBytes()); WriteBytes(stream, file.GetOffsetBytes()); WriteBytes(stream, file.GetOriginalSizeBytes()); WriteBytes(stream, file.GetTypeBytes()); WriteBytes(stream, file.GetCompressedSizeBytes()); }
private static void ReadLodFileContent(Stream stream, LodFile file) { if (stream == null) { throw new ArgumentNullException(nameof(stream)); } if (file == null) { throw new ArgumentNullException(nameof(file)); } stream.Seek(file.Offset, SeekOrigin.Begin); var length = file.CompressedSize > 0 ? file.CompressedSize : file.OriginalSize; var compressedContent = ReadBytes(stream, length); var originalContent = file.CompressedSize > 0 ? Decompress(compressedContent) : compressedContent; file.SetContent(originalContent, compressedContent); }