Example #1
0
        private SerializedType ReadSerializedType(bool isRefType)
        {
            var type = new SerializedType();

            type.classID = reader.ReadInt32();

            if (header.m_Version >= SerializedFileFormatVersion.kRefactoredClassId)
            {
                type.m_IsStrippedType = reader.ReadBoolean();
            }

            if (header.m_Version >= SerializedFileFormatVersion.kRefactorTypeData)
            {
                type.m_ScriptTypeIndex = reader.ReadInt16();
            }

            if (header.m_Version >= SerializedFileFormatVersion.kHasTypeTreeHashes)
            {
                if (isRefType && type.m_ScriptTypeIndex >= 0)
                {
                    type.m_ScriptID = reader.ReadBytes(16);
                }
                else if ((header.m_Version < SerializedFileFormatVersion.kRefactoredClassId && type.classID < 0) || (header.m_Version >= SerializedFileFormatVersion.kRefactoredClassId && type.classID == 114))
                {
                    type.m_ScriptID = reader.ReadBytes(16);
                }
                type.m_OldTypeHash = reader.ReadBytes(16);
            }

            if (m_EnableTypeTree)
            {
                type.m_Type         = new TypeTree();
                type.m_Type.m_Nodes = new List <TypeTreeNode>();
                if (header.m_Version >= SerializedFileFormatVersion.kUnknown_12 || header.m_Version == SerializedFileFormatVersion.kUnknown_10)
                {
                    TypeTreeBlobRead(type.m_Type);
                }
                else
                {
                    ReadTypeTree(type.m_Type);
                }
                if (header.m_Version >= SerializedFileFormatVersion.kStoresTypeDependencies)
                {
                    if (isRefType)
                    {
                        type.m_KlassName = reader.ReadStringToNull();
                        type.m_NameSpace = reader.ReadStringToNull();
                        type.m_AsmName   = reader.ReadStringToNull();
                    }
                    else
                    {
                        type.m_TypeDependencies = reader.ReadInt32Array();
                    }
                }
            }

            return(type);
        }
Example #2
0
        private SerializedType ReadSerializedType()
        {
            var type = new SerializedType();

            type.classID = reader.ReadInt32();

            if (header.m_Version >= 16)
            {
                type.m_IsStrippedType = reader.ReadBoolean();
            }

            if (header.m_Version >= 17)
            {
                type.m_ScriptTypeIndex = reader.ReadInt16();
            }

            if (header.m_Version >= 13)
            {
                if ((header.m_Version < 16 && type.classID < 0) || (header.m_Version >= 16 && type.classID == 114))
                {
                    type.m_ScriptID = reader.ReadBytes(16); //Hash128
                }
                type.m_OldTypeHash = reader.ReadBytes(16);  //Hash128
            }

            if (m_EnableTypeTree)
            {
                var typeTree = new List <TypeTreeNode>();
                if (header.m_Version >= 12 || header.m_Version == 10)
                {
                    TypeTreeBlobRead(typeTree);
                }
                else
                {
                    ReadTypeTree(typeTree);
                }

                if (header.m_Version >= 21)
                {
                    var count = reader.ReadInt32();
                    if (count > 0)
                    {
                        reader.Position += 4 * count;
                    }
                }

                type.m_Nodes = typeTree;
            }

            return(type);
        }
Example #3
0
 public ObjectReader(EndianBinaryReader reader, SerializedFile assetsFile, ObjectInfo objectInfo) : base(reader.BaseStream, reader.endian)
 {
     this.assetsFile = assetsFile;
     m_PathID        = objectInfo.m_PathID;
     byteStart       = objectInfo.byteStart;
     byteSize        = objectInfo.byteSize;
     if (Enum.IsDefined(typeof(ClassIDType), objectInfo.classID))
     {
         type = (ClassIDType)objectInfo.classID;
     }
     else
     {
         type = ClassIDType.UnknownType;
     }
     serializedType = objectInfo.serializedType;
     platform       = assetsFile.m_TargetPlatform;
     m_Version      = assetsFile.header.m_Version;
 }
Example #4
0
        public Object(ObjectReader reader)
        {
            this.reader = reader;
            reader.Reset();
            assetsFile     = reader.assetsFile;
            type           = reader.type;
            m_PathID       = reader.m_PathID;
            version        = reader.version;
            buildType      = reader.buildType;
            platform       = reader.platform;
            serializedType = reader.serializedType;
            byteSize       = reader.byteSize;

            if (platform == BuildTarget.NoTarget)
            {
                var m_ObjectHideFlags = reader.ReadUInt32();
            }
        }
Example #5
0
 public AssetPreloadData(AssetsFile assetsFile, ObjectInfo objectInfo, string uniqueID)
 {
     sourceFile     = assetsFile;
     m_PathID       = objectInfo.m_PathID;
     Offset         = objectInfo.byteStart;
     Size           = objectInfo.byteSize;
     FullSize       = objectInfo.byteSize;
     serializedType = objectInfo.serializedType;
     if (Enum.IsDefined(typeof(ClassIDType), objectInfo.classID))
     {
         Type       = (ClassIDType)objectInfo.classID;
         TypeString = Type.ToString();
     }
     else
     {
         Type       = ClassIDType.UnknownType;
         TypeString = $"UnknownType {objectInfo.classID}";
     }
     this.uniqueID = uniqueID;
 }
Example #6
0
 public ObjectReader(EndianBinaryReader reader, SerializedFile assetsFile, ObjectInfo objectInfo) : base(reader.BaseStream, reader.endian)
 {
     this.assetsFile = assetsFile;
     m_PathID        = objectInfo.m_PathID;
     byteStart       = objectInfo.byteStart;
     byteSize        = objectInfo.byteSize;
     if (Enum.IsDefined(typeof(ClassIDType), objectInfo.classID))
     {
         type = (ClassIDType)objectInfo.classID;
         //Logger.Info(String.Format("object type {0} ({1})", type, objectInfo.classID));
     }
     else
     {
         Logger.Error(String.Format("unknown type {0}", objectInfo.classID));
         type = ClassIDType.UnknownType;
     }
     serializedType = objectInfo.serializedType;
     platform       = assetsFile.m_TargetPlatform;
     m_Version      = assetsFile.header.m_Version;
 }