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(); }
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); }
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); }
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); }