internal FPropertyTag(PackageReader reader) { ArrayIndex = 0; Position = 0; // default BoolVal = 0; EnumName = default; EnumType = default; HasPropertyGuid = 0; InnerType = default; Name = default; PropertyGuid = default; Size = 0; SizeOffset = 0; StructGuid = default; StructName = default; Type = default; ValueType = default; Name = reader.ReadFName(); if (Name.IsNone) { return; } Type = reader.ReadFName(); Size = reader.ReadInt32(); ArrayIndex = reader.ReadInt32(); Position = reader.Position; // actual if (Type.Number == 0) { switch (Type.String) { case "StructProperty": StructName = reader.ReadFName(); // Serialize if version is past VER_UE4_STRUCT_GUID_IN_PROPERTY_TAG StructGuid = new FGuid(reader); break; case "BoolProperty": BoolVal = reader.ReadByte(); break; case "ByteProperty": case "EnumProperty": EnumName = reader.ReadFName(); break; case "ArrayProperty": // Serialize if version is past VAR_UE4_ARRAY_PROPERTY_INNER_TAGS InnerType = reader.ReadFName(); break; // Serialize the following if version is past VER_UE4_PROPERTY_TAG_SET_MAP_SUPPORT case "SetProperty": InnerType = reader.ReadFName(); break; case "MapProperty": InnerType = reader.ReadFName(); ValueType = reader.ReadFName(); break; } } // Property tags to handle renamed blueprint properties effectively. // Serialize if version is past VER_UE4_PROPERTY_GUID_IN_PROPERTY_TAG HasPropertyGuid = reader.ReadByte(); if (HasPropertyGuid != 0) { PropertyGuid = new FGuid(reader); } }
internal FFormatContainer(PackageReader reader, Stream ubulk, long ubulkOffset) { FormatName = reader.ReadFName(); Data = new FByteBulkData(reader, ubulk, ubulkOffset); }
internal FSoftObjectPath(PackageReader reader) { AssetPathName = reader.ReadFName(); SubPathString = reader.ReadFString(); }
// Binary serialization, tagged property serialization otherwise // https://github.com/EpicGames/UnrealEngine/blob/7d9919ac7bfd80b7483012eab342cb427d60e8c9/Engine/Source/Runtime/CoreUObject/Private/UObject/Class.cpp#L2146 internal UScriptStruct(PackageReader reader, FName structName) : this(reader, structName.String) { }