void Write(UE_Map value, PositionToken position) { if (position == PositionToken.Normal) { byte[] _R; using (var ms = new MemoryStream()) using (var bw = new UE_BinaryWriter(ms, true)) { bw.Write((Int32)0); bw.Write(value.Map.Count); var ue_prop_w = new UE_Property_Writer(bw); for (int i = 0; i < value.Map.Count; i++) { ue_prop_w.Write_UE_Value(value.Map[i].Key, PositionToken.InsideMap); ue_prop_w.Write_UE_Value(value.Map[i].Value, PositionToken.InsideMap); } _R = ms.ToArray(); // cannot do Stream.CopyTo, reason unknown } long length = _R.Length; // Write_UE_Value_Hair(value.TypeString, length); writer.Write(value.KeyType); writer.Write(value.ValueType); writer.Write((byte)0); writer.Write(_R, 0, _R.Length); } else { throw new NotImplementedException(position.ToString()); } }
void Write(UE_ <string> value, PositionToken position) { if (position == PositionToken.Normal) { byte[] _R; using (var ms = new MemoryStream()) using (var bw = new UE_BinaryWriter(ms, true)) { bw.Write(value.Value); _R = ms.ToArray(); // cannot do Stream.CopyTo, reason unknown } long length = _R.Length; // Write_UE_Value_Hair(value.TypeString, length); writer.Write((byte)0); writer.Write(_R, 0, _R.Length); } else if (position == PositionToken.InsideMap) { writer.Write(value.Value); } else { throw new NotImplementedException(position.ToString()); } }
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); } }
void Write(UE_Array value, PositionToken position) { long length; byte[] _R; using (var ms = new MemoryStream()) using (var bw = new UE_BinaryWriter(ms, true)) { var ue_prop_w = new UE_Property_Writer(bw); for (int i = 0; i < value.ItemList.Length; i++) { ue_prop_w.Write_UE_Value(value.ItemList[i], PositionToken.InsideArray); } _R = ms.ToArray(); } length = 4 + _R.Length; // Write_UE_Value_Hair(value.TypeString, length); Write_UE_Array_Header(value.ItemType); writer.Write(value.ItemList.Length); writer.Write(_R, 0, _R.Length); }
internal static void Write(UE_BinaryWriter writer, GvasFormat.SaveGameHeader header) { writer.Write(header.FileTypeTag); writer.Write(header.SaveGameFileVersion); writer.Write(header.PackageFileUE4Version); // writer.Write(header.SavedEngineVersion.Major); writer.Write(header.SavedEngineVersion.Minor); writer.Write(header.SavedEngineVersion.Patch); writer.Write(header.SavedEngineVersion.ChangeList); writer.Write(header.SavedEngineVersion.Branch); // writer.Write(header.CustomVersionFormat); writer.Write(header.CustomVersions.Count); for (int i = 0; i < header.CustomVersions.Versions.Length; i++) { var v = header.CustomVersions.Versions[i]; var bin = v.Key.ToByteArray(); writer.Write(bin, 0, bin.Length); writer.Write(v.Version); } // writer.Write(header.SaveGameClassName); }
void Write(UE_Struct_Generic value, PositionToken position) { if (position == PositionToken.Normal) { byte[] _R; using (var ms = new MemoryStream()) using (var bw = new UE_BinaryWriter(ms, true)) { var ue_prop_w = new UE_Property_Writer(bw); foreach (var prop in value.PropertyList) { ue_prop_w.Write(prop, PositionToken.Normal); } ue_prop_w.Write_UE_None(); // _R = ms.ToArray(); } long I64_Length = _R.Length; Write_UE_Value_Hair(value.TypeString, I64_Length); // Write_UE_Struct_Header(value.StructTypeString); writer.Write(_R, 0, _R.Length); } else if (position == PositionToken.InsideArray) { foreach (var prop in value.PropertyList) { Write(prop, PositionToken.Normal); } Write_UE_None(); } else { throw new NotImplementedException(position.ToString()); } }
internal UE_Property_Writer(UE_BinaryWriter writer) { this.writer = writer; }