Пример #1
0
        internal void Write(FileWriter writer)
        {
            writer.ByteOrder = Syroot.BinaryData.ByteOrder.LittleEndian;
            writer.Write(Encoding.ASCII.GetBytes("AAMP"));
            writer.Write(Version);
            writer.Write(Endianness);

            long sizeOffset = writer.Position;

            writer.Write(0); //Write the file size later
            writer.Write(ParameterIOVersion);
            writer.Write(AlignUp(ParameterIOType.Length + 1, 4));
            writer.Write(ParameterIOType, Syroot.BinaryData.BinaryStringFormat.ZeroTerminated);
            writer.Align(4);

            ParamListV1.Write(RootNode, writer);

            //Write end of file
            writer.Seek(sizeOffset, System.IO.SeekOrigin.Begin);
            uint FileSize = (uint)writer.BaseStream.Length;

            writer.Write(FileSize);

            writer.Close();
            writer.Dispose();
        }
Пример #2
0
        internal static ParamList Read(FileReader reader)
        {
            ParamList entry = new ParamList();

            long CurrentPosition = reader.Position;

            uint Size = reader.ReadUInt32();

            entry.Hash = reader.ReadUInt32();
            uint ChildListCount   = reader.ReadUInt32();
            uint ParamObjectCount = reader.ReadUInt32();

            entry.childParams  = new ParamList[ChildListCount];
            entry.paramObjects = new ParamObject[ParamObjectCount];

            for (int i = 0; i < ChildListCount; i++)
            {
                entry.childParams[i] = ParamListV1.Read(reader);
            }

            for (int i = 0; i < ParamObjectCount; i++)
            {
                entry.paramObjects[i] = ParamObjectV1.Read(reader);
            }

            reader.Seek(CurrentPosition + Size, SeekOrigin.Begin);
            return(entry);
        }
Пример #3
0
        internal void Read(FileReader reader)
        {
            reader.ByteOrder = Syroot.BinaryData.ByteOrder.LittleEndian;
            reader.CheckSignature("AAMP");
            Version    = reader.ReadUInt32();
            Endianness = reader.ReadUInt32();

            uint FileSize = reader.ReadUInt32();

            ParameterIOVersion = reader.ReadUInt32();
            uint NameLength = reader.ReadUInt32();
            long pos        = reader.Position;

            effectName = reader.ReadBytes((int)NameLength);

            //read the string as zero terminated for now
            reader.Seek(pos, SeekOrigin.Begin);
            ParameterIOType = reader.ReadString(Syroot.BinaryData.BinaryStringFormat.ZeroTerminated);

            reader.Seek(pos + NameLength, SeekOrigin.Begin);
            RootNode = ParamListV1.Read(reader);
        }
Пример #4
0
        internal static void Write(ParamList entry, FileWriter writer)
        {
            int ChildListCount   = entry.childParams == null ? 0 : entry.childParams.Length;
            int ParamObjectCount = entry.paramObjects == null ? 0 : entry.paramObjects.Length;

            long startPosition = writer.Position;

            writer.Write(uint.MaxValue); //Write the size after
            writer.Write(entry.Hash);
            writer.Write(ChildListCount);
            writer.Write(ParamObjectCount);

            for (int i = 0; i < ChildListCount; i++)
            {
                ParamListV1.Write(entry.childParams[i], writer);
            }

            for (int i = 0; i < ParamObjectCount; i++)
            {
                ParamObjectV1.Write(entry.paramObjects[i], writer);
            }

            writer.WriteSize(writer.Position, startPosition);
        }