Beispiel #1
0
        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());
        }
Beispiel #2
0
        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);
        }