public static Gvas ReadGvas(Stream stream) { using (var reader = new UE_BinaryReader(stream, true)) { int type_tag = reader.ReadInt32(); if (type_tag != GvasFormat.SaveGameHeader.UE4_SAVEGAME_FILE_TYPE_TAG) { throw new NotSupportedException("Only `GVAS` file is supported."); } var result = new Gvas(); // result.Header = SaveGameHeader.Read(reader); // var list = new List <UE_Property>(); var ue_prop_reader = new UE_Property_Reader(reader); while (ue_prop_reader.Read() is UE_Property prop) { if (prop is UE_None) { break; } list.Add(prop); } result.PropertyList = list; // return(result); } }
public static void WriteGvas(Stream stream, Gvas save) { using (var writer = new UE_BinaryWriter(stream, true)) { SaveGameHeader.Write(writer, save.Header); var ue_prop_writer = new UE_Property_Writer(writer); for (int i = 0; i < save.PropertyList.Count; i++) { ue_prop_writer.Write(save.PropertyList[i], PositionToken.Normal); } ue_prop_writer.Write_UE_None(); string Null_End = null; writer.Write(Null_End); } }