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); } }
internal static GvasFormat.SaveGameHeader Read(UE_BinaryReader reader) { var result = new GvasFormat.SaveGameHeader(); result.FileTypeTag = GvasFormat.SaveGameHeader.UE4_SAVEGAME_FILE_TYPE_TAG; { result.SaveGameFileVersion = reader.ReadInt32(); result.PackageFileUE4Version = reader.ReadInt32(); } // var engine_version = new EngineVersion(); { engine_version.Major = reader.ReadUInt16(); engine_version.Minor = reader.ReadUInt16(); engine_version.Patch = reader.ReadUInt16(); engine_version.ChangeList = reader.ReadUInt32(); engine_version.Branch = reader.ReadString(); } result.SavedEngineVersion = engine_version; // result.CustomVersionFormat = reader.ReadInt32(); // var version_container = new CustomVersionContainer(); { version_container.Count = reader.ReadInt32(); version_container.Versions = new CustomVersion[version_container.Count]; for (var i = 0; i < version_container.Count; i++) { var version = new CustomVersion(); { version.Key = new Guid(reader.ReadBytes(16)); version.Version = reader.ReadInt32(); } version_container.Versions[i] = version; } } result.CustomVersions = version_container; // result.SaveGameClassName = reader.ReadString(); return(result); }
internal UE_Property_Reader(UE_BinaryReader reader) { this.reader = reader; }