public void Serialize(BinaryWriter writer, PackageFile package) { Name.Serialize(writer, package); Type.Serialize(writer, package); writer.Write(Size); writer.Write(Index); }
public void Serialize(BinaryWriter writer, PackageFile package) { ClassPackage.Serialize(writer, package); ClassName.Serialize(writer, package); PackageRef.Serialize(writer, package); ObjectName.Serialize(writer, package); }
public void Serialize(BinaryWriter writer, PackageFile package) { ClassIndex.Serialize(writer, package); SuperIndex.Serialize(writer, package); if (package.Header.IsVersionOrGreater(UE4Versions.VER_UE4_TemplateIndex_IN_COOKED_EXPORTS)) { TemplateIndex.Serialize(writer, package); } OuterIndex.Serialize(writer, package); ObjectName.Serialize(writer, package); writer.Write(ObjectFlags); if (package.Header.IsVersionOrGreater(UE4Versions.VER_UE4_64BIT_EXPORTMAP_SERIALSIZES)) { writer.Write(SerialSize); } else { writer.Write((int)SerialSize); } if (package.Header.IsVersionOrGreater(UE4Versions.VER_UE4_64BIT_EXPORTMAP_SERIALSIZES)) { writer.Write(SerialOffset); } else { writer.Write((int)SerialOffset); } writer.Write(bForcedExport); writer.Write(bNotForClient); writer.Write(bNotForServer); writer.Write(PackageGuid); writer.Write(PackageFlags); if (package.Header.IsVersionOrGreater(UE4Versions.VER_UE4_LOAD_FOR_EDITOR_GAME)) { writer.Write(bNotAlwaysLoadedForEditorGame); } if (package.Header.IsVersionOrGreater(UE4Versions.VER_UE4_COOKED_ASSETS_IN_EDITOR_SUPPORT)) { writer.Write(bIsAsset); } if (package.Header.IsVersionOrGreater(UE4Versions.VER_UE4_PRELOAD_DEPENDENCIES_IN_COOKED_EXPORTS)) { writer.Write(FirstExportDependency); writer.Write(SerializationBeforeSerializationDependencies); writer.Write(CreateBeforeSerializationDependencies); writer.Write(SerializationBeforeCreateDependencies); writer.Write(CreateBeforeCreateDependencies); } }
public void Serialize(BinaryWriter writer, PackageFile package) { for (int i = 0; i < PropertyTags.Count; i++) { var tag = PropertyTags[i]; ISerializable property = null; if (Properties.Count >= i) { property = Properties[i]; } tag.Serialize(writer, package); if (property != null) { property.Serialize(writer, package); } } var endName = new FName(); endName.Value = "None"; endName.Serialize(writer, package); writer.Write(Reserved); foreach (var prop in Properties) { if (prop.GetType() != typeof(ObjectProperty)) { continue; } writer.Write(PropertiesData.Count); foreach (var kvp in PropertiesData) { kvp.Key.Serialize(writer, package); bool writeStructSize = true; var settings = kvp.Value.GetType().GetCustomAttribute <SerializerAttribute>(); if (settings != null && settings.NoStructSize) { writeStructSize = false; } long structSizePosition = 0; if (writeStructSize) { structSizePosition = writer.BaseStream.Position; writer.Write((int)0);// dummy val, we'll fix it later } var structStartPosition = writer.BaseStream.Position; kvp.Value.Serialize(writer, package); var structEndPosition = writer.BaseStream.Position; if (writeStructSize) { var structSize = structEndPosition - structStartPosition; writer.BaseStream.Position = structSizePosition; writer.Write((uint)structSize); writer.BaseStream.Position = structEndPosition; } } } }