public override void Read(AssetBinaryReader reader, int nextStarting) { base.Read(reader, nextStarting); reader.ReadInt32(); int numIndexEntries = reader.ReadInt32(); IndexData = new List <int>(); for (int i = 0; i < numIndexEntries; i++) { IndexData.Add(reader.ReadInt32()); } var nms = reader.ReadFString(); reader.ReadInt32(); // null var val = reader.ReadFString(); LevelType = new NamespacedString(nms, val); reader.ReadInt64(); // null FlagsProbably = reader.ReadUInt64(); MiscCategoryData = new List <int>(); while (reader.BaseStream.Position < nextStarting - 1) { MiscCategoryData.Add(reader.ReadInt32()); } reader.ReadByte(); }
public override void Read(AssetBinaryReader reader, int nextStarting) { base.Read(reader, nextStarting); // Find an ObjectProperty named RowStruct FName decidedStructType = new FName("Generic"); foreach (PropertyData thisData in Data) { if (thisData.Name.Value.Value == "RowStruct" && thisData is ObjectPropertyData thisObjData && thisObjData.Value.IsImport()) { decidedStructType = thisObjData.ToImport(reader.Asset).ObjectName; break; } } reader.ReadInt32(); Table = new UDataTable(); int numEntries = reader.ReadInt32(); for (int i = 0; i < numEntries; i++) { FName rowName = reader.ReadFName(); var nextStruct = new StructPropertyData(rowName) { StructType = decidedStructType }; nextStruct.Read(reader, false, 1); Table.Data.Add(nextStruct); } }
public void Read(AssetBinaryReader reader, UAsset asset) { RelativeStreamingDistance = reader.ReadInt32(); Reserved0 = reader.ReadSingle(); Reserved1 = reader.ReadSingle(); Reserved2 = reader.ReadInt32(); Reserved3 = reader.ReadInt32(); }
public override void Read(AssetBinaryReader reader, int nextStarting) { base.Read(reader, nextStarting); reader.ReadInt32(); Table = new FStringTable(reader.ReadFString()); int numEntries = reader.ReadInt32(); for (int i = 0; i < numEntries; i++) { Table.Add(reader.ReadFString(), reader.ReadFString()); } }
public void Read(AssetBinaryReader reader, UAsset asset) { Name = reader.ReadFString(); Reserved0 = reader.ReadInt32(); Reserved1 = new IntPointPropertyData(new FName(string.Empty)); Reserved1.Read(reader, false, 0, 0); if (asset.EngineVersion >= UE4Version.VER_UE4_WORLD_LEVEL_INFO_UPDATED) { StreamingDistance = reader.ReadInt32(); } if (asset.EngineVersion >= UE4Version.VER_UE4_WORLD_LAYER_ENABLE_DISTANCE_STREAMING) { DistanceStreamingEnabled = reader.ReadInt32() == 1; } }
public override void Read(AssetBinaryReader reader, int nextStarting) { base.Read(reader, nextStarting); reader.ReadInt32(); Enum = new UEnum(); Enum.Read(reader, Asset); }
public override void Read(AssetBinaryReader reader, int nextStarting) { base.Read(reader, nextStarting); reader.ReadInt32(); Field = new UField(); Field.Read(reader); }
public override void Read(AssetBinaryReader reader, int nextStarting) { base.Read(reader, nextStarting); reader.ReadInt32(); FName exportClassType = this.GetExportClassType(); Property = MainSerializer.ReadUProperty(reader, exportClassType); }
public void Read(AssetBinaryReader reader, UAsset asset) { if (asset.EngineVersion < UE4Version.VER_UE4_TIGHTLY_PACKED_ENUMS) { int numEntries = reader.ReadInt32(); for (int i = 0; i < numEntries; i++) { FName tempName = reader.ReadFName(); Names.Add(new Tuple <FName, long>(tempName, i)); } } else if (asset.GetCustomVersion <FCoreObjectVersion>() < FCoreObjectVersion.EnumProperties) { int numEntries = reader.ReadInt32(); for (int i = 0; i < numEntries; i++) { FName tempName = reader.ReadFName(); byte tempVal = reader.ReadByte(); Names.Add(new Tuple <FName, long>(tempName, tempVal)); } } else { int numEntries = reader.ReadInt32(); for (int i = 0; i < numEntries; i++) { FName tempName = reader.ReadFName(); long tempVal = reader.ReadInt64(); Names.Add(new Tuple <FName, long>(tempName, tempVal)); } } if (asset.EngineVersion < UE4Version.VER_UE4_ENUM_CLASS_SUPPORT) { bool bIsNamespace = reader.ReadInt32() == 1; CppForm = bIsNamespace ? ECppForm.Namespaced : ECppForm.Regular; } else { CppForm = (ECppForm)reader.ReadByte(); } }
public void Read(AssetBinaryReader reader, UAsset asset) { Position = new int[3]; AbsolutePosition = new int[3]; if (asset.GetCustomVersion <FFortniteMainBranchObjectVersion>() < FFortniteMainBranchObjectVersion.WorldCompositionTile3DOffset) { Position[0] = reader.ReadInt32(); Position[1] = reader.ReadInt32(); Position[2] = 0; } else { Position[0] = reader.ReadInt32(); Position[1] = reader.ReadInt32(); Position[2] = reader.ReadInt32(); } Bounds = new BoxPropertyData(new FName()); Bounds.Read(reader, false, 0, 0); Layer = new FWorldTileLayer(); Layer.Read(reader, asset); if (asset.EngineVersion >= UE4Version.VER_UE4_WORLD_LEVEL_INFO_UPDATED) { bHideInTileView = reader.ReadInt32() == 1; ParentTilePackageName = reader.ReadFString(); } if (asset.EngineVersion >= UE4Version.VER_UE4_WORLD_LEVEL_INFO_LOD_LIST) { int numEntries = reader.ReadInt32(); LODList = new FWorldTileLODInfo[numEntries]; for (int i = 0; i < numEntries; i++) { LODList[i] = new FWorldTileLODInfo(); LODList[i].Read(reader, asset); } } if (asset.EngineVersion >= UE4Version.VER_UE4_WORLD_LEVEL_INFO_ZORDER) { ZOrder = reader.ReadInt32(); } #pragma warning disable CS0162 // Unreachable code detected if (false) // Ar.GetPortFlags() & PPF_DuplicateForPIE { AbsolutePosition[0] = reader.ReadInt32(); AbsolutePosition[1] = reader.ReadInt32(); AbsolutePosition[2] = reader.ReadInt32(); } #pragma warning restore CS0162 // Unreachable code detected }
public override void Read(AssetBinaryReader reader, int nextStarting) { base.Read(reader, nextStarting); int numFuncIndexEntries = reader.ReadInt32(); FuncMap = new TMap <FName, FPackageIndex>(); for (int i = 0; i < numFuncIndexEntries; i++) { FName functionName = reader.ReadFName(); FPackageIndex functionExport = FPackageIndex.FromRawIndex(reader.ReadInt32()); FuncMap.Add(functionName, functionExport); } ClassFlags = (EClassFlags)reader.ReadUInt32(); if (Asset.EngineVersion < UE4Version.VER_UE4_CLASS_NOTPLACEABLE_ADDED) { ClassFlags ^= EClassFlags.CLASS_NotPlaceable; } ClassWithin = new FPackageIndex(reader.ReadInt32()); ClassConfigName = reader.ReadFName(); Asset.AddNameReference(ClassConfigName.Value); int numInterfaces = 0; long interfacesStart = 0; if (Asset.EngineVersion < UE4Version.VER_UE4_UCLASS_SERIALIZE_INTERFACES_AFTER_LINKING) { interfacesStart = reader.BaseStream.Position; numInterfaces = reader.ReadInt32(); reader.BaseStream.Seek(interfacesStart + sizeof(int) + numInterfaces * (sizeof(int) * 3), SeekOrigin.Begin); } // Linking procedure here; I don't think anything is really serialized during this ClassGeneratedBy = new FPackageIndex(reader.ReadInt32()); long currentOffset = reader.BaseStream.Position; if (Asset.EngineVersion < UE4Version.VER_UE4_UCLASS_SERIALIZE_INTERFACES_AFTER_LINKING) { reader.BaseStream.Seek(interfacesStart, SeekOrigin.Begin); } numInterfaces = reader.ReadInt32(); Interfaces = new SerializedInterfaceReference[numInterfaces]; for (int i = 0; i < numInterfaces; i++) { Interfaces[i] = new SerializedInterfaceReference(reader.ReadInt32(), reader.ReadInt32(), reader.ReadInt32() == 1); } if (Asset.EngineVersion < UE4Version.VER_UE4_UCLASS_SERIALIZE_INTERFACES_AFTER_LINKING) { reader.BaseStream.Seek(currentOffset, SeekOrigin.Begin); } bDeprecatedForceScriptOrder = reader.ReadInt32() == 1; reader.ReadInt64(); // None if (Asset.EngineVersion >= UE4Version.VER_UE4_ADD_COOKED_TO_UCLASS) { bCooked = reader.ReadInt32() == 1; } ClassDefaultObject = new FPackageIndex(reader.ReadInt32()); // CDO serialization usually comes after this export has finished serializing }
public override void Read(AssetBinaryReader reader, int nextStarting) { base.Read(reader, nextStarting); SuperStruct = new FPackageIndex(reader.ReadInt32()); int numIndexEntries = reader.ReadInt32(); Children = new FPackageIndex[numIndexEntries]; for (int i = 0; i < numIndexEntries; i++) { Children[i] = new FPackageIndex(reader.ReadInt32()); } if (Asset.GetCustomVersion <FCoreObjectVersion>() >= FCoreObjectVersion.FProperties) { int numProps = reader.ReadInt32(); LoadedProperties = new FProperty[numProps]; for (int i = 0; i < numProps; i++) { LoadedProperties[i] = MainSerializer.ReadFProperty(reader); } } else { LoadedProperties = new FProperty[0]; } ScriptBytecodeSize = reader.ReadInt32(); // # of bytes in total in deserialized memory int scriptStorageSize = reader.ReadInt32(); // # of bytes in total long startedReading = reader.BaseStream.Position; bool willParseRaw = true; try { if (ParseBytecode && Asset.EngineVersion >= UE4Version.VER_UE4_16) { var tempCode = new List <Kismet.Bytecode.KismetExpression>(); while ((reader.BaseStream.Position - startedReading) < scriptStorageSize) { tempCode.Add(ExpressionSerializer.ReadExpression(reader)); } ScriptBytecode = tempCode.ToArray(); willParseRaw = false; } } catch (Exception ex) { #if DEBUG Debug.WriteLine(ex.StackTrace); #endif } if (willParseRaw) { reader.BaseStream.Seek(startedReading, SeekOrigin.Begin); ScriptBytecode = null; ScriptBytecodeRaw = reader.ReadBytes(scriptStorageSize); } }