コード例 #1
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);
        }
コード例 #2
0
        public override void Read(AssetBinaryReader reader)
        {
            base.Read(reader);

            Enum           = new FPackageIndex(reader.ReadInt32());
            UnderlyingProp = new FPackageIndex(reader.ReadInt32());
        }
コード例 #3
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();
 }
コード例 #4
0
        public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0)
        {
            if (includeHeader)
            {
                PropertyGuid = reader.ReadPropertyGuid();
            }

            int numVals = reader.ReadInt32();

            Value = new FMulticastDelegate[numVals];
            for (int i = 0; i < numVals; i++)
            {
                Value[i] = new FMulticastDelegate(reader.ReadInt32(), reader.ReadFName());
            }
        }
コード例 #5
0
        public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0)
        {
            if (includeHeader)
            {
                PropertyGuid = reader.ReadPropertyGuid();
            }

            int numEntries = reader.ReadInt32();

            Value = new int[numEntries];
            for (int i = 0; i < numEntries; i++)
            {
                Value[i] = reader.ReadInt32();
            }
        }
コード例 #6
0
 public virtual void Read(AssetBinaryReader reader)
 {
     if (reader.Asset.GetCustomVersion <FFrameworkObjectVersion>() < FFrameworkObjectVersion.RemoveUField_Next)
     {
         Next = new FPackageIndex(reader.ReadInt32());
     }
 }
コード例 #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
 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;
 }
コード例 #10
0
ファイル: TextPropertyData.cs プロジェクト: atenfyr/UAssetAPI
        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());
                }
            }
        }
コード例 #11
0
        public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0)
        {
            if (includeHeader)
            {
                PropertyGuid = reader.ReadPropertyGuid();
            }

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

            Value = new FPackageIndex(reader.ReadInt32());
        }
コード例 #13
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 = reader.ReadUInt32();
        }
コード例 #14
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();
            }
        }
コード例 #15
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;
        }
コード例 #16
0
        public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0)
        {
            if (includeHeader)
            {
                PropertyGuid = reader.ReadPropertyGuid();
            }

            int size = reader.ReadInt32();

            Prob = new float[size];
            for (int i = 0; i < size; i++)
            {
                Prob[i] = reader.ReadSingle();
            }

            size  = reader.ReadInt32();
            Alias = new int[size];
            for (int i = 0; i < size; i++)
            {
                Alias[i] = reader.ReadInt32();
            }

            TotalWeight = reader.ReadSingle();
        }
コード例 #17
0
 public override void Read(AssetBinaryReader reader)
 {
     base.Read(reader);
     ElementProp = new FPackageIndex(reader.ReadInt32());
 }
コード例 #18
0
ファイル: EX_StructConst.cs プロジェクト: atenfyr/UAssetAPI
 /// <summary>
 /// Reads out the expression from a BinaryReader.
 /// </summary>
 /// <param name="reader">The BinaryReader to read from.</param>
 public override void Read(AssetBinaryReader reader)
 {
     Struct     = reader.XFERPTR();
     StructSize = reader.ReadInt32();
     Value      = reader.ReadExpressionArray(EExprToken.EX_EndStructConst);
 }
コード例 #19
0
        public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0)
        {
            if (includeHeader)
            {
                ArrayType    = reader.ReadFName();
                PropertyGuid = reader.ReadPropertyGuid();
            }

            int numEntries = reader.ReadInt32();

            if (ArrayType.Value.Value == "StructProperty" && ShouldSerializeStructsDifferently)
            {
                var results = new PropertyData[numEntries];

                FName name         = this.Name;
                long  structLength = 1;
                FName fullType     = new FName("Generic");
                Guid  structGUID   = new Guid();

                if (reader.Asset.EngineVersion >= UE4Version.VER_UE4_INNER_ARRAY_TAG_INFO)
                {
                    name = reader.ReadFName();
                    if (name.Value.Value.Equals("None"))
                    {
                        Value = results;
                        return;
                    }

                    FName thisArrayType = reader.ReadFName();
                    if (thisArrayType.Value.Value.Equals("None"))
                    {
                        Value = results;
                        return;
                    }

                    if (thisArrayType.Value.Value != ArrayType.Value.Value)
                    {
                        throw new FormatException("Invalid array type: " + thisArrayType.ToString() + " vs " + ArrayType.ToString());
                    }

                    structLength = reader.ReadInt64(); // length value
                    fullType     = reader.ReadFName();
                    structGUID   = new Guid(reader.ReadBytes(16));
                    reader.ReadPropertyGuid();
                }

                if (numEntries == 0)
                {
                    DummyStruct = new StructPropertyData(name, fullType)
                    {
                        StructGUID = structGUID
                    };
                }
                else
                {
                    for (int i = 0; i < numEntries; i++)
                    {
                        var data = new StructPropertyData(name, fullType);
                        data.Offset = reader.BaseStream.Position;
                        data.Read(reader, false, structLength);
                        data.StructGUID = structGUID;
                        results[i]      = data;
                    }
                    DummyStruct = (StructPropertyData)results[0];
                }
                Value = results;
            }
            else
            {
                var results = new PropertyData[numEntries];
                if (numEntries > 0)
                {
                    int averageSizeEstimate1 = (int)(leng1 / numEntries);
                    int averageSizeEstimate2 = (int)((leng1 - 4) / numEntries);
                    for (int i = 0; i < numEntries; i++)
                    {
                        results[i]        = MainSerializer.TypeToClass(ArrayType, new FName(i.ToString(), int.MinValue), reader.Asset);
                        results[i].Offset = reader.BaseStream.Position;
                        if (results[i] is StructPropertyData)
                        {
                            ((StructPropertyData)results[i]).StructType = new FName("Generic");
                        }
                        results[i].Read(reader, false, averageSizeEstimate1, averageSizeEstimate2);
                    }
                }
                Value = results;
            }
        }
コード例 #20
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)
 {
     Value = reader.ReadInt32();
 }
コード例 #21
0
 public override void Read(AssetBinaryReader reader)
 {
     base.Read(reader);
     Struct = new FPackageIndex(reader.ReadInt32());
 }
コード例 #22
0
 public override void Read(AssetBinaryReader reader)
 {
     base.Read(reader);
     KeyProp   = new FPackageIndex(reader.ReadInt32());
     ValueProp = new FPackageIndex(reader.ReadInt32());
 }
コード例 #23
0
 public override void Read(AssetBinaryReader reader)
 {
     base.Read(reader);
     InterfaceClass = new FPackageIndex(reader.ReadInt32());
 }
コード例 #24
0
 public override void Read(AssetBinaryReader reader)
 {
     base.Read(reader);
     SignatureFunction = new FPackageIndex(reader.ReadInt32());
 }
コード例 #25
0
ファイル: EX_RotationConst.cs プロジェクト: atenfyr/UAssetAPI
 /// <summary>
 /// Reads out the expression from a BinaryReader.
 /// </summary>
 /// <param name="reader">The BinaryReader to read from.</param>
 public override void Read(AssetBinaryReader reader)
 {
     Pitch = reader.ReadInt32();
     Yaw   = reader.ReadInt32();
     Roll  = reader.ReadInt32();
 }