Beispiel #1
0
        public override void Deserialize(FAssetArchive Ar, long validPos)
        {
            base.Deserialize(Ar, validPos);
            SuperStruct = new FPackageIndex(Ar);
            if (Ar.Game == EGame.GAME_SOD2)
            {
                Ar.Position += 4; //var someScriptImport = new FPackageIndex(Ar);
            }

            if (FFrameworkObjectVersion.Get(Ar) < FFrameworkObjectVersion.Type.RemoveUField_Next)
            {
                var firstChild = new FPackageIndex(Ar);
                Children = firstChild.IsNull ? Array.Empty <FPackageIndex>() : new[] { firstChild };
            }
            else
            {
                Children = Ar.ReadArray(() => new FPackageIndex(Ar));
            }

            if (FCoreObjectVersion.Get(Ar) >= FCoreObjectVersion.Type.FProperties)
            {
                DeserializeProperties(Ar);
            }

            var bytecodeBufferSize   = Ar.Read <int>();
            var serializedScriptSize = Ar.Read <int>();

            Ar.Position += serializedScriptSize; // should we read the bytecode some day?
        }
Beispiel #2
0
        public override void Deserialize(FAssetArchive Ar, long validPos)
        {
            base.Deserialize(Ar, validPos);
            SuperStruct = new FPackageIndex(Ar);
            if (FFrameworkObjectVersion.Get(Ar) < FFrameworkObjectVersion.Type.RemoveUField_Next)
            {
                var firstChild = new FPackageIndex(Ar);
                Children = firstChild.IsNull ? Array.Empty<FPackageIndex>() : new[] { firstChild };
            }
            else
            {
                Children = Ar.ReadArray(() => new FPackageIndex(Ar));
            }

            if (FCoreObjectVersion.Get(Ar) >= FCoreObjectVersion.Type.FProperties)
            {
                DeserializeProperties(Ar);
            }

            var bytecodeBufferSize = Ar.Read<int>();
            var serializedScriptSize = Ar.Read<int>();
            if (Ar.Owner.Provider?.ReadScriptData == true)
            {
                Script = Ar.ReadBytes(serializedScriptSize);
            }
            else
            {
                Ar.Position += serializedScriptSize;
            }
        }
Beispiel #3
0
        public override void Deserialize(FAssetArchive Ar, long validPos)
        {
            base.Deserialize(Ar, validPos);
            SuperStruct = new FPackageIndex(Ar);
            Children    = Ar.ReadArray(() => new FPackageIndex(Ar));
            DeserializeProperties(Ar);
            var bytecodeBufferSize   = Ar.Read <int>();
            var serializedScriptSize = Ar.Read <int>();

            Ar.Position += serializedScriptSize; // should we read the bytecode some day?
        }
Beispiel #4
0
        public override void Deserialize(FAssetArchive Ar, long validPos)
        {
            base.Deserialize(Ar, validPos);
            FunctionFlags = Ar.Read <uint>();

            // Replication info
            if ((FunctionFlags & 0x40 /*EFunctionFlags.FUNC_Net*/) != 0)
            {
                // Unused.
                var repOffset = Ar.Read <short>();
            }

            if (Ar.Ver >= (UE4Version)VER_UE4_SERIALIZE_BLUEPRINT_EVENTGRAPH_FASTCALLS_IN_UFUNCTION)
            {
                EventGraphFunction   = new FPackageIndex(Ar);
                EventGraphCallOffset = Ar.Read <int>();
            }
        }
Beispiel #5
0
        public FFieldPath(FAssetArchive Ar)
        {
            var pathNum = Ar.Read <int>();

            Path = new List <FName>(pathNum);
            for (int i = 0; i < pathNum; i++)
            {
                Path.Add(Ar.ReadFName());
            }

            // The old serialization format could save 'None' paths, they should be just empty
            if (Path.Count == 1 && Path[0].IsNone)
            {
                Path.Clear();
            }

            //if (Ar.CustomVer(FFortniteMainBranchObjectVersion.GUID) >= FFortniteMainBranchObjectVersion.FFieldPathOwnerSerialization || Ar.CustomVer(FReleaseObjectVersion.GUID) >= FReleaseObjectVersion.FFieldPathOwnerSerialization) {
            ResolvedOwner = new FPackageIndex(Ar);
            //}
        }
Beispiel #6
0
        public override void Deserialize(FAssetArchive Ar, long validPos)
        {
            base.Deserialize(Ar, validPos);

            // serialize the function map
            FuncMap = new Dictionary <FName, FPackageIndex>();
            var funcMapNum = Ar.Read <int>();

            for (var i = 0; i < funcMapNum; i++)
            {
                FuncMap[Ar.ReadFName()] = new FPackageIndex(Ar);
            }

            // Class flags first.
            ClassFlags = Ar.Read <uint>();

            // Variables.
            if (Ar.Game == EGame.GAME_StarWarsJediFallenOrder)
            {
                Ar.Position += 4;
            }
            ClassWithin     = new FPackageIndex(Ar);
            ClassConfigName = Ar.ReadFName();

            ClassGeneratedBy = new FPackageIndex(Ar);

            // Load serialized interface classes
            Interfaces = Ar.ReadArray(() => new FImplementedInterface(Ar));

            var bDeprecatedForceScriptOrder = Ar.ReadBoolean();
            var dummy = Ar.ReadFName();

            if (Ar.Ver >= EUnrealEngineObjectUE4Version.ADD_COOKED_TO_UCLASS)
            {
                bCooked = Ar.ReadBoolean();
            }

            // Defaults.
            ClassDefaultObject = new FPackageIndex(Ar);
        }
Beispiel #7
0
        public override void Deserialize(FAssetArchive Ar, long validPos)
        {
            base.Deserialize(Ar, validPos);

            // serialize the function map
            FuncMap = new Dictionary <FName, FPackageIndex>();
            var funcMapNum = Ar.Read <int>();

            for (var i = 0; i < funcMapNum; i++)
            {
                FuncMap[Ar.ReadFName()] = new FPackageIndex(Ar);
            }

            // Class flags first.
            ClassFlags = Ar.Read <uint>();

            // Variables.
            ClassWithin     = new FPackageIndex(Ar);
            ClassConfigName = Ar.ReadFName();

            ClassGeneratedBy = new FPackageIndex(Ar);

            // Load serialized interface classes
            Interfaces = Ar.ReadArray(() => new FImplementedInterface(Ar));

            var bDeprecatedScriptOrder = Ar.ReadBoolean();
            var dummy = Ar.ReadFName();

            if ((int)Ar.Ver >= 241 /*VER_UE4_ADD_COOKED_TO_UCLASS*/)
            {
                bCooked = Ar.ReadBoolean();
            }

            // Defaults.
            ClassDefaultObject = new FPackageIndex(Ar);
        }
Beispiel #8
0
        public FPackageIndex ResolvedOwner; //UStruct

        public FFieldPath()
        {
            Path          = new List <FName>();
            ResolvedOwner = new FPackageIndex();
        }
Beispiel #9
0
 public override void Deserialize(FAssetArchive Ar)
 {
     base.Deserialize(Ar);
     Enum           = new FPackageIndex(Ar);
     UnderlyingProp = (FNumericProperty?)SerializeSingleField(Ar);
 }
Beispiel #10
0
 public override void Deserialize(FAssetArchive Ar)
 {
     base.Deserialize(Ar);
     SignatureFunction = new FPackageIndex(Ar);
 }
Beispiel #11
0
 public override void Deserialize(FAssetArchive Ar)
 {
     base.Deserialize(Ar);
     MetaClass = new FPackageIndex(Ar);
 }
Beispiel #12
0
 public override void Deserialize(FAssetArchive Ar)
 {
     base.Deserialize(Ar);
     Struct = new FPackageIndex(Ar);
 }
Beispiel #13
0
 public FImplementedInterface(FAssetArchive Ar)
 {
     Class            = new FPackageIndex(Ar);
     PointerOffset    = Ar.Read <int>();
     bImplementedByK2 = Ar.ReadBoolean();
 }
        public FPackageIndex Enum; // UEnum

        public override void Deserialize(FAssetArchive Ar, long validPos)
        {
            base.Deserialize(Ar, validPos);
            Enum = new FPackageIndex(Ar);
        }
Beispiel #15
0
 public FScriptDelegate(FPackageIndex obj, FName functionName)
 {
     Object       = obj;
     FunctionName = functionName;
 }
Beispiel #16
0
 public FScriptDelegate(FAssetArchive Ar)
 {
     Object       = new FPackageIndex(Ar);
     FunctionName = Ar.ReadFName();
 }