예제 #1
0
        /// <summary>
        /// Write AssetBundle using UnityBinaryWriter.
        /// </summary>
        /// <remarks>Compression is disabled by default. To enable, set 'EnableCompression' to true.</remarks>
        /// <param name="writer">UnityBinaryWriter to write to.</param>
        public void Write(UnityBinaryWriter writer)
        {
            // Write files before header since filesize is unknown
            int org = writer.Position;

            writer.Position += (int)Header.CalcSize();
            writeFiles(writer);

            // Get the filesize and write header
            Header.bundleSize = writer.Length;
            writer.Position   = org;
            Header.Write(writer);
        }
예제 #2
0
        public void Write(UnityBinaryWriter writer)
        {
            // Skip Header since MetadataSize and DataOffset are unknown
            int header_pos = writer.Position;

            writer.Position += Header.CalcSize();

            // Write Metadata
            writeMetadata(writer);

            // Write Objects
            byte[] body = writeObjects(writer);

            // Write Scripts
            writeScripts(writer);

            // Write Externals
            writeExternals(writer);

            // Write UserInformation
            writer.WriteStringToNull(UserInformation);

            Header.MetadataSize = writer.Position - Header.CalcSize();

            // Align body
            if (writer.Position < 0x1000)
            {
                writer.Position = 0x1000;
            }
            else
            {
                writer.Align(16);
            }
            Header.DataOffset = writer.Position;

            // Write body
            writer.WriteBytes(body);

            // Write Header
            Header.FileSize = writer.Position;
            writer.Position = header_pos;
            Header.Write(writer);
        }