示例#1
0
        /// <summary>
        /// Reads out an FBlueprintText from a BinaryReader.
        /// </summary>
        /// <param name="reader">The BinaryReader to read from.</param>
        public virtual void Read(AssetBinaryReader reader)
        {
            TextLiteralType = (EBlueprintTextLiteralType)reader.ReadByte();
            switch (TextLiteralType)
            {
            case EBlueprintTextLiteralType.Empty:
                break;

            case EBlueprintTextLiteralType.LocalizedText:
                LocalizedSource    = ExpressionSerializer.ReadExpression(reader);
                LocalizedKey       = ExpressionSerializer.ReadExpression(reader);
                LocalizedNamespace = ExpressionSerializer.ReadExpression(reader);
                break;

            case EBlueprintTextLiteralType.InvariantText:     // IsCultureInvariant
                InvariantLiteralString = ExpressionSerializer.ReadExpression(reader);
                break;

            case EBlueprintTextLiteralType.LiteralString:
                LiteralString = ExpressionSerializer.ReadExpression(reader);
                break;

            case EBlueprintTextLiteralType.StringTableEntry:
                StringTableAsset = reader.XFER_OBJECT_POINTER();
                StringTableId    = ExpressionSerializer.ReadExpression(reader);
                StringTableKey   = ExpressionSerializer.ReadExpression(reader);
                break;

            default:
                throw new NotImplementedException("Unimplemented blueprint text literal type " + TextLiteralType);
            }
        }
示例#2
0
 /// <summary>
 /// Reads out the expression from a BinaryReader.
 /// </summary>
 /// <param name="reader">The BinaryReader to read from.</param>
 public override void Read(AssetBinaryReader reader)
 {
     ObjectExpression  = ExpressionSerializer.ReadExpression(reader);
     Offset            = reader.ReadUInt32();
     RValuePointer     = reader.XFER_PROP_POINTER();
     ContextExpression = ExpressionSerializer.ReadExpression(reader);
 }
示例#3
0
        public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0)
        {
            FName type1 = null, type2 = null;

            if (includeHeader)
            {
                type1        = reader.ReadFName();
                type2        = reader.ReadFName();
                PropertyGuid = reader.ReadPropertyGuid();
            }

            int numKeysToRemove = reader.ReadInt32();

            KeysToRemove = new PropertyData[numKeysToRemove];
            for (int i = 0; i < numKeysToRemove; i++)
            {
                KeysToRemove[i] = MapTypeToClass(type1, Name, reader, 0, false, true);
            }

            int numEntries = reader.ReadInt32();

            if (numEntries == 0)
            {
                KeyType   = type1;
                ValueType = type2;
            }
            Value = ReadRawMap(reader, type1, type2, numEntries);
        }
示例#4
0
 public virtual void Read(AssetBinaryReader reader)
 {
     if (reader.Asset.GetCustomVersion <FFrameworkObjectVersion>() < FFrameworkObjectVersion.RemoveUField_Next)
     {
         Next = new FPackageIndex(reader.ReadInt32());
     }
 }
示例#5
0
        public override void Read(AssetBinaryReader reader)
        {
            base.Read(reader);

            Enum           = new FPackageIndex(reader.ReadInt32());
            UnderlyingProp = new FPackageIndex(reader.ReadInt32());
        }
示例#6
0
        public override void Read(AssetBinaryReader reader)
        {
            base.Read(reader);

            ElementSize = reader.ReadByte();
            NativeBool  = reader.ReadBoolean();
        }
示例#7
0
        /// <summary>
        /// Reads out the expression from a BinaryReader.
        /// </summary>
        /// <param name="reader">The BinaryReader to read from.</param>
        public override void Read(AssetBinaryReader reader)
        {
            MapProperty = ExpressionSerializer.ReadExpression(reader);
            int numEntries = reader.ReadInt32(); // Number of elements

            Elements = reader.ReadExpressionArray(EExprToken.EX_EndMap);
        }
示例#8
0
        /// <summary>
        /// Reads out the expression from a BinaryReader.
        /// </summary>
        /// <param name="reader">The BinaryReader to read from.</param>
        public override void Read(AssetBinaryReader reader)
        {
            InnerProperty = reader.XFERPTR();
            int numEntries = reader.ReadInt32(); // Number of elements

            Elements = reader.ReadExpressionArray(EExprToken.EX_EndArrayConst);
        }
示例#9
0
        private void ReadCustom(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2, bool canRepeat)
        {
            if (includeHeader)
            {
                EnumType     = (int)reader.ReadInt64();
                PropertyGuid = reader.ReadPropertyGuid();
            }

            switch (leng1)
            {
            case 1:
                ByteType = BytePropertyType.Byte;
                Value    = (int)reader.ReadByte();
                break;

            case 0:     // Should be only seen in maps
            case 8:
                ByteType = BytePropertyType.Long;
                Value    = (int)reader.ReadInt64();
                break;

            default:
                if (canRepeat)
                {
                    ReadCustom(reader, false, leng2, 0, false);
                    return;
                }
                throw new FormatException("Invalid length " + leng1 + " for ByteProperty");
            }
        }
示例#10
0
 protected void ReadExpressionInput(AssetBinaryReader reader, bool includeHeader, long leng)
 {
     OutputIndex    = reader.ReadInt32();
     InputName      = reader.ReadFName();
     Extras         = reader.ReadBytes(20); // always 0s
     ExpressionName = reader.ReadFName();
     return;
 }
示例#11
0
 public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0)
 {
     Value = reader.ReadBoolean();
     if (includeHeader)
     {
         PropertyGuid = reader.ReadPropertyGuid();
     }
 }
示例#12
0
 public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0)
 {
     if (includeHeader)
     {
         PropertyGuid = reader.ReadPropertyGuid();
     }
     Value = (int)reader.ReadByte();
 }
示例#13
0
        /// <summary>
        /// Reads out the expression from a BinaryReader.
        /// </summary>
        /// <param name="reader">The BinaryReader to read from.</param>
        public override void Read(AssetBinaryReader reader)
        {
            var rotation    = new FQuat(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());
            var translation = new FVector(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());
            var scale       = new FVector(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());

            Value = new FTransform(rotation, translation, scale);
        }
示例#14
0
        public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0)
        {
            if (includeHeader)
            {
                PropertyGuid = reader.ReadPropertyGuid();
            }

            if (reader.Asset.EngineVersion < UE4Version.VER_UE4_FTEXT_HISTORY)
            {
                CultureInvariantString = reader.ReadFString();
                if (reader.Asset.EngineVersion >= UE4Version.VER_UE4_ADDED_NAMESPACE_AND_KEY_DATA_TO_FTEXT)
                {
                    Namespace = reader.ReadFString();
                    Value     = reader.ReadFString();
                }
                else
                {
                    Namespace = null;
                    Value     = reader.ReadFString();
                }
            }

            Flags = (ETextFlag)reader.ReadUInt32();

            if (reader.Asset.EngineVersion >= UE4Version.VER_UE4_FTEXT_HISTORY)
            {
                HistoryType = (TextHistoryType)reader.ReadSByte();

                switch (HistoryType)
                {
                case TextHistoryType.None:
                    Value = null;
                    if (reader.Asset.GetCustomVersion <FEditorObjectVersion>() >= FEditorObjectVersion.CultureInvariantTextSerializationKeyStability)
                    {
                        bool bHasCultureInvariantString = reader.ReadInt32() == 1;
                        if (bHasCultureInvariantString)
                        {
                            CultureInvariantString = reader.ReadFString();
                        }
                    }
                    break;

                case TextHistoryType.Base:
                    Namespace = reader.ReadFString();
                    Value     = reader.ReadFString();
                    CultureInvariantString = reader.ReadFString();
                    break;

                case TextHistoryType.StringTableEntry:
                    TableId = reader.ReadFName();
                    Value   = reader.ReadFString();
                    break;

                default:
                    throw new NotImplementedException("Unimplemented reader for " + HistoryType.ToString());
                }
            }
        }
示例#15
0
 public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0)
 {
     if (includeHeader)
     {
         EnumType     = reader.ReadFName();
         PropertyGuid = reader.ReadPropertyGuid();
     }
     Value = reader.ReadFName();
 }
示例#16
0
        public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0)
        {
            if (includeHeader)
            {
                PropertyGuid = reader.ReadPropertyGuid();
            }

            Value = new TimeSpan(reader.ReadInt64()); // number of ticks
        }
示例#17
0
        public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0)
        {
            if (includeHeader)
            {
                PropertyGuid = reader.ReadPropertyGuid();
            }

            Value = Color.FromArgb(reader.ReadInt32());
        }
示例#18
0
        public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0)
        {
            if (includeHeader)
            {
                PropertyGuid = reader.ReadPropertyGuid();
            }

            Value = new FVector(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());
        }
示例#19
0
        public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0)
        {
            if (includeHeader)
            {
                PropertyGuid = reader.ReadPropertyGuid();
            }

            ReadExpressionInput(reader, false, 0);
        }
示例#20
0
        public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0)
        {
            if (includeHeader)
            {
                PropertyGuid = reader.ReadPropertyGuid();
            }

            Value = new FPackageIndex(reader.ReadInt32());
        }
示例#21
0
        public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0)
        {
            if (includeHeader)
            {
                PropertyGuid = reader.ReadPropertyGuid();
            }

            Value = new SkeletalMeshAreaWeightedTriangleSamplerPropertyData(new FName("AreaWeightedTriangleSampler"));
            Value.Read(reader, false, 0);
        }
示例#22
0
        public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0)
        {
            if (includeHeader)
            {
                PropertyGuid = reader.ReadPropertyGuid();
            }

            X = reader.ReadSingle();
            Y = reader.ReadSingle();
        }
示例#23
0
 public override void Read(AssetBinaryReader reader)
 {
     base.Read(reader);
     ArrayDim      = (EArrayDim)reader.ReadInt32();
     ElementSize   = reader.ReadInt32();
     PropertyFlags = (EPropertyFlags)reader.ReadUInt64();
     RepIndex      = reader.ReadUInt16();
     RepNotifyFunc = reader.ReadFName();
     BlueprintReplicationCondition = (ELifetimeCondition)reader.ReadByte();
 }
示例#24
0
        public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0)
        {
            if (includeHeader)
            {
                PropertyGuid = reader.ReadPropertyGuid();
            }

            BlendTime     = reader.ReadSingle();
            BlendFunction = (ViewTargetBlendFunction)reader.ReadByte();
            BlendExp      = reader.ReadSingle();
            bLockOutgoing = reader.ReadInt32() != 0;
        }
示例#25
0
        public override void Read(AssetBinaryReader reader)
        {
            base.Read(reader);
            ArrayDim      = (EArrayDim)reader.ReadInt32();
            PropertyFlags = (EPropertyFlags)reader.ReadUInt64();
            RepNotifyFunc = reader.ReadFName();

            if (reader.Asset.GetCustomVersion <FReleaseObjectVersion>() >= FReleaseObjectVersion.PropertiesSerializeRepCondition)
            {
                BlueprintReplicationCondition = (ELifetimeCondition)reader.ReadByte();
            }
        }
示例#26
0
        public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0)
        {
            if (includeHeader)
            {
                PropertyGuid = reader.ReadPropertyGuid();
            }

            ReadExpressionInput(reader, false, 0);
            reader.ReadInt32(); // always 0
            Value = new Vector2DPropertyData(Name);
            Value.Read(reader, false, 0);
        }
示例#27
0
        private void ReadNTPL(AssetBinaryReader reader)
        {
            List <PropertyData> resultingList = new List <PropertyData>();
            PropertyData        data          = null;

            while ((data = MainSerializer.Read(reader, true)) != null)
            {
                resultingList.Add(data);
            }

            Value = resultingList;
        }
示例#28
0
        /// <summary>
        /// Reads out the expression from a BinaryReader.
        /// </summary>
        /// <param name="reader">The BinaryReader to read from.</param>
        public override void Read(AssetBinaryReader reader)
        {
            if (reader.Asset.EngineVersion >= UE4Version.VER_UE4_CHANGE_SETARRAY_BYTECODE)
            {
                AssigningProperty = ExpressionSerializer.ReadExpression(reader);
            }
            else
            {
                ArrayInnerProp = reader.XFERPTR();
            }

            Elements = reader.ReadExpressionArray(EExprToken.EX_EndArray);
        }
示例#29
0
        public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0)
        {
            if (includeHeader)
            {
                PropertyGuid = reader.ReadPropertyGuid();
            }

            Value = new int[2];
            for (int i = 0; i < 2; i++)
            {
                Value[i] = reader.ReadInt32();
            }
        }
示例#30
0
        public override void Read(AssetBinaryReader reader)
        {
            base.Read(reader);

            byte BoolSize = (byte)ElementSize;

            FieldSize  = reader.ReadByte();
            ByteOffset = reader.ReadByte();
            ByteMask   = reader.ReadByte();
            FieldMask  = reader.ReadByte();
            NativeBool = reader.ReadBoolean();
            Value      = reader.ReadBoolean();
        }