Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
 internal FFormatContainer(PackageReader reader, Stream ubulk, long ubulkOffset)
 {
     FormatName = reader.ReadFName();
     Data       = new FByteBulkData(reader, ubulk, ubulkOffset);
 }
Esempio n. 3
0
 internal FSoftObjectPath(PackageReader reader)
 {
     AssetPathName = reader.ReadFName();
     SubPathString = reader.ReadFString();
 }
Esempio n. 4
0
 // 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)
 {
 }