예제 #1
0
        /// <summary>
        /// Writes <see cref="Entry"/> object as file with an optional header.
        /// </summary>
        /// <param name="entry">The <see cref="Entry"/> object to write as file.</param>
        /// <param name="path">Save path for file.</param>
        /// <param name="isHeaderCreated">Whether to create header in file or not.</param>
        /// <param name="keys">The <see cref="byte"/>[] data to write as keys in the header.<para>If set to null keys are null bytes.</para></param>
        /// <remarks>
        /// Uses <see cref="WriteHeader(BinaryWriter, byte[])"/> to write header for file if indicated to.
        /// </remarks>
        public static void Write(this Entry entry, string path, bool isHeaderCreated, byte[] keys = null)
        {
            using var writer = new BinaryWriter(File.Open(path, FileMode.Create, FileAccess.Write));

            if (isHeaderCreated)
            {
                SurfaceFile.WriteHeader(writer, keys);
            }

            entry.Write(writer);
        }
예제 #2
0
        /// <summary>
        /// Creates <see cref="Entry"/> from surface-level Frostbite 3 file with option to skip header.
        /// </summary>
        /// <param name="path">The file to open for creating <see cref="Entry"/>.</param>
        /// <param name="isHeaderSkipped">Indicates whether to attempt to skip DICE's 556-<see cref="byte"/> header or not.</param>
        /// <returns>The <see cref="Entry"/> object created from a file.</returns>
        public static Entry CreateEntry(string path, bool isHeaderSkipped)
        {
            uint offset = isHeaderSkipped ? SurfaceConstants.HeaderSize : 0;

            return(SurfaceFile.CreateEntry(path, offset));
        }