Пример #1
0
 public UObject(BinaryReader data, FPackageFileSummary summary, bool pad = true, FObjectExport export = null)
 {
     while (true)
     {
         long  position = data.BaseStream.Position;
         FName fName    = LSerializer.Deserialize <FName>(data);
         fName.Ref(summary);
         if ((string)fName == "None")
         {
             break;
         }
         data.BaseStream.Position = position;
         FPropertyTag fPropertyTag = LSerializer.Deserialize <FPropertyTag>(data);
         data.BaseStream.Position = position;
         fPropertyTag.Ref(summary);
         fPropertyTag = VisitorFactory.Visit(data, fPropertyTag, summary);
         fPropertyTag.Ref(summary);
         Add(fPropertyTag);
     }
     if (pad)
     {
         data.BaseStream.Position += 4L;
     }
     if (export != null)
     {
         ObjectData = VisitorFactory.VisitSubtype(data, export, summary);
     }
 }
Пример #2
0
        public UObject(BinaryReader data, FPackageFileSummary summary, bool pad = true, FObjectExport export = null)
        {
            while (true)
            {
                var start = data.BaseStream.Position;
#if DEBUG
                CachedPos.Add(start);
#endif

                var name = LSerializer.Deserialize <FName>(data);
                name.Ref(summary);
                if (name == "None")
                {
                    break;
                }
                data.BaseStream.Position = start;

                var tag = LSerializer.Deserialize <FPropertyTag>(data);
                data.BaseStream.Position = start;
                tag.Ref(summary);

                tag = VisitorFactory.Visit(data, tag, summary);
                tag.Ref(summary);
                Add(tag);
            }

            if (pad)
            {
                data.BaseStream.Position += 4;
            }
            if (export != null)
            {
                ObjectData = VisitorFactory.VisitSubtype(data, export, summary);
            }
        }
Пример #3
0
        public static FPropertyTag PropertyVisitor(BinaryReader reader, FPropertyTag baseTag, FPackageFileSummary summary)
        {
            UStructProperty uStructProperty = LSerializer.Deserialize <UStructProperty>(reader);

            uStructProperty.Ref(summary);
            uStructProperty.Struct = (((object)VisitorFactory.VisitStruct(reader, uStructProperty.StructName.Name, summary)) ?? ((object)new UObject(reader, summary, pad: false)));
            return(uStructProperty);
        }
Пример #4
0
        public static FPropertyTag PropertyVisitor(BinaryReader reader, FPropertyTag baseTag, FPackageFileSummary summary)
        {
            var instance = LSerializer.Deserialize <UStructProperty>(reader);

            instance.Ref(summary);
            instance.Struct = (object)VisitorFactory.VisitStruct(reader, instance.StructName, summary) ?? new UObject(reader, summary, false, null);
            return(instance);
        }
Пример #5
0
        public static FPropertyTag PropertyVisitor(BinaryReader reader, FPropertyTag baseTag, FPackageFileSummary summary)
        {
            USetProperty uSetProperty = LSerializer.Deserialize <USetProperty>(reader);

            uSetProperty.Ref(summary);
            long position = reader.BaseStream.Position;

            uSetProperty.Entries       = UArrayProperty.GetEntries(uSetProperty.Count, uSetProperty.ArrayType, reader, summary);
            reader.BaseStream.Position = position + uSetProperty.Size - 8;
            return(uSetProperty);
        }
Пример #6
0
        public static FPropertyTag PropertyVisitor(BinaryReader reader, FPropertyTag baseTag, FPackageFileSummary summary)
        {
            var instance = LSerializer.Deserialize <USetProperty>(reader);

            instance.Ref(summary);
            var @base = reader.BaseStream.Position;

            instance.Entries           = UArrayProperty.GetEntries(instance.Count, instance.ArrayType, reader, summary);
            reader.BaseStream.Position = @base + instance.Size - 8;
            return(instance);
        }
Пример #7
0
        public static FPropertyTag PropertyVisitor(BinaryReader reader, FPropertyTag baseTag, FPackageFileSummary summary)
        {
            if (baseTag.Size < 8)
            {
                reader.BaseStream.Position += 0x19 + baseTag.Size;
                return(baseTag);
            }
            var instance = LSerializer.Deserialize <UTextProperty>(reader);

            instance.Ref(summary);
            return(instance);
        }
Пример #8
0
        public static IExportObject Deserialize(BinaryReader reader, FObjectExport export, FPackageFileSummary summary)
        {
            var instance = new StringTable();

            instance.Name = LSerializer.FString(reader);
            var count = reader.ReadInt32();

            for (int i = 0; i < count; ++i)
            {
                instance.Add(LSerializer.FString(reader), LSerializer.FString(reader));
            }
            return(instance);
        }
Пример #9
0
        public static IExportObject Deserialize(BinaryReader reader, FObjectExport export, FPackageFileSummary summary)
        {
            StringTable stringTable = new StringTable();

            stringTable.Name = LSerializer.FString(reader);
            int num = reader.ReadInt32();

            for (int i = 0; i < num; i++)
            {
                stringTable.Add(LSerializer.FString(reader), LSerializer.FString(reader));
            }
            return(stringTable);
        }
Пример #10
0
        public static FPropertyTag PropertyVisitor(BinaryReader reader, FPropertyTag baseTag, FPackageFileSummary summary)
        {
            UTextProperty uTextProperty = LSerializer.Deserialize <UTextProperty>(reader);

            if (baseTag.Size < 8)
            {
                reader.BaseStream.Position++;
            }
            else
            {
                reader.BaseStream.Position--;
            }
            uTextProperty.Ref(summary);
            return(uTextProperty);
        }
Пример #11
0
        public static IExportObject Deserialize(BinaryReader reader, FObjectExport export, FPackageFileSummary summary)
        {
            var instance = new UDataTable();
            var count    = reader.ReadInt32();

            for (int i = 0; i < count; ++i)
            {
                var index = LSerializer.Deserialize <FName>(reader);
                index.Ref(summary);
                var uobj = new UObject(reader, summary, false);
                uobj.Name = index;
                instance.Add(index, uobj);
            }
            return(instance);
        }
Пример #12
0
        public static IExportObject Deserialize(BinaryReader reader, FObjectExport export, FPackageFileSummary summary)
        {
            UDataTable uDataTable = new UDataTable();
            int        num        = reader.ReadInt32();

            for (int i = 0; i < num; i++)
            {
                FName fName = LSerializer.Deserialize <FName>(reader);
                fName.Ref(summary);
                UObject uObject = new UObject(reader, summary, pad: false);
                uObject.Name = fName;
                uDataTable.Add(fName, uObject);
            }
            return(uDataTable);
        }
Пример #13
0
        public static FPropertyTag PropertyVisitor(BinaryReader reader, FPropertyTag baseTag, FPackageFileSummary summary)
        {
            UByteProperty uByteProperty = LSerializer.Deserialize <UByteProperty>(reader);

            uByteProperty.Ref(summary);
            if (uByteProperty.EnumName.Name == "None")
            {
                uByteProperty.Value = reader.ReadByte();
            }
            else
            {
                uByteProperty.Value = LSerializer.Deserialize <FName>(reader);
                uByteProperty.Ref(summary);
            }
            return(uByteProperty);
        }
Пример #14
0
        public static FPropertyTag PropertyVisitor(BinaryReader reader, FPropertyTag baseTag, FPackageFileSummary summary)
        {
            var instance = LSerializer.Deserialize <UByteProperty>(reader);

            instance.Ref(summary);
            if (instance.EnumName == "None")
            {
                instance.Value = reader.ReadByte();
            }
            else
            {
                instance.Value = LSerializer.Deserialize <FName>(reader);
                instance.Ref(summary);
            }
            return(instance);
        }
Пример #15
0
        public static FPropertyTag PropertyVisitor(BinaryReader reader, FPropertyTag baseTag, FPackageFileSummary summary)
        {
            UArrayProperty uArrayProperty = LSerializer.Deserialize <UArrayProperty>(reader);

            uArrayProperty.Ref(summary);
            long position = reader.BaseStream.Position;

            uArrayProperty.Entries = GetEntries(uArrayProperty.ArraySize, uArrayProperty.ArrayType, reader, summary);
            long position2 = reader.BaseStream.Position;

            if (position + uArrayProperty.Size - 4 != position2)
            {
                Console.WriteLine("WARNING: ARRAY SIZE OFFSHOOT!");
            }
            reader.BaseStream.Position = position + uArrayProperty.Size - 4;
            return(uArrayProperty);
        }
Пример #16
0
        public static IExportObject Deserialize(BinaryReader reader, FObjectExport export, FPackageFileSummary summary)
        {
            var instance = new EndTextResource();
            var count    = reader.ReadInt32();

            for (int i = 0; i < count; ++i)
            {
                var key = LSerializer.FString(reader);
                if (string.IsNullOrEmpty(key) || key[0] != '$')
                {
                    throw new InvalidDataException("The key does not start with magic symbol");
                }
                var obj = LSerializer.Deserialize <FF7TxtRes>(reader);
                obj.GetEntries(reader, summary);
                instance.Add(key, obj);
            }
            return(instance);
        }
Пример #17
0
 private static StructVisitor CreateStructDeserializer(Type visitor)
 {
     return((r, s) => (IStructObject)LSerializer.Deserialize(r, visitor));
 }
Пример #18
0
 private static PropertyVisitor CreateTagDeserializer(Type visitor)
 {
     return((r, b, s) => (FPropertyTag)LSerializer.Deserialize(r, visitor));
 }
Пример #19
0
 private static PropertyVisitor CreateTagDeserializer(Type visitor)
 {
     return((BinaryReader r, FPropertyTag b, FPackageFileSummary s) => (FPropertyTag)LSerializer.Deserialize(r, visitor));
 }
Пример #20
0
 private static StructVisitor CreateStructDeserializer(Type visitor)
 {
     return((BinaryReader r, FPackageFileSummary s) => (IStructObject)LSerializer.Deserialize(r, visitor));
 }