Пример #1
0
 private void WriteTableOfContents(BinaryWriter binaryWriter, SerializedEffectData serializedEffectData)
 {
     foreach (var entry in serializedEffectData.TableOfContents)
     {
         binaryWriter.Write(Encoding.UTF8.GetBytes(entry.Name));
         binaryWriter.Write('\0');
         binaryWriter.Write(checked (entry.Offset + serializedEffectData.TableOfContentsSize));
     }
 }
Пример #2
0
        /// <summary>
        /// Compiles a textual effect file to the specified output path.
        /// </summary>
        /// <param name="inputPath">The path to the effect file.</param>
        /// <param name="outputPath">The path to write to.</param>
        public void Compile(
            string inputPath,
            string outputPath)
        {
            if (!File.Exists(inputPath))
            {
                throw new InvalidOperationException($"The input file {inputPath} does not exist.");
            }

            // Get constants for known symbols
            this.doneOpcode = Utilities.GetFxSymbolValue(this.macroDefinitionTable.SymbolTable, "FxDone");

            using var streamReader = new StreamReader(inputPath);
            SerializedEffectData serializedEffectData = this.SerializeEffectData(streamReader);

            using var fileStream   = new FileStream(outputPath, FileMode.Create);
            using var binaryWriter = new BinaryWriter(fileStream);

            this.WriteHeader(binaryWriter, serializedEffectData);
            this.WriteTableOfContents(binaryWriter, serializedEffectData);
            this.WriteEffectData(binaryWriter, serializedEffectData);
        }
Пример #3
0
 private void WriteHeader(BinaryWriter binaryWriter, SerializedEffectData serializedEffectData)
 {
     binaryWriter.Write(FxBinaryData.CurrentVersion);
     binaryWriter.Write(checked (serializedEffectData.Data.Length + serializedEffectData.TableOfContentsSize));
     binaryWriter.Write(serializedEffectData.TableOfContents.Count);
 }
Пример #4
0
 private void WriteEffectData(BinaryWriter binaryWriter, SerializedEffectData serializedEffectData)
 {
     binaryWriter.Write(serializedEffectData.Data);
 }