Esempio n. 1
0
 public TypeTreeNode Parse(EndianBinaryReader varStream, SerializedFileFormatVersion varFormat)
 {
     m_Version       = varStream.ReadUInt16();
     m_Level         = varStream.ReadByte();
     m_TypeFlags     = varStream.ReadByte();
     m_TypeStrOffset = varStream.ReadUInt32();
     m_NameStrOffset = varStream.ReadUInt32();
     m_ByteSize      = varStream.ReadInt32();
     m_Index         = varStream.ReadInt32();
     m_MetaFlag      = varStream.ReadInt32();
     if (varFormat >= SerializedFileFormatVersion.kTypeTreeNodeWithTypeFlags)
     {
         m_RefTypeHash = varStream.ReadUInt64();
     }
     return(this);
 }
Esempio n. 2
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;
 }
Esempio n. 3
0
            public SerializedFileHeader Parse(EndianBinaryReader varStream)
            {
                MetadataSize = varStream.ReadUInt32();
                FileSize     = varStream.ReadUInt32();
                Version      = (SerializedFileFormatVersion)varStream.ReadUInt32();

                {
                    DataOffset = varStream.ReadUInt32();

                    Endianess = varStream.ReadByte();
                    Reserved  = varStream.ReadBytes(3);

                    MetadataSize = varStream.ReadUInt32();
                    FileSize     = varStream.ReadInt64();
                    DataOffset   = varStream.ReadInt64();
                    varStream.ReadInt64(); // unknown
                }

                return(this);

                //if (Version < SerializedFileFormatVersion.kLargeFilesSupport)
                //{
                //    DataOffset = varStream.ReadUInt32();
                //    Endianess = varStream.ReadByte();
                //    Reserved = varStream.ReadBytes(Reserved.Length);
                //}
                //else
                //{
                //    varStream.Seek(4, SeekOrigin.Current);

                //    varStream.Seek(4, SeekOrigin.Current);
                //    MetadataSize = varStream.ReadUInt32();

                //    varStream.Seek(4, SeekOrigin.Current);
                //    FileSize = varStream.ReadUInt32();

                //    varStream.Seek(4, SeekOrigin.Current);
                //    DataOffset = varStream.ReadUInt32();

                //    varStream.Seek(4, SeekOrigin.Current);
                //    Endianess = varStream.ReadByte();
                //    Reserved = varStream.ReadBytes(Reserved.Length);
                //}
            }
Esempio n. 4
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;
 }
Esempio n. 5
0
        public TypeTree Parse(EndianBinaryReader varStream, SerializedFileFormatVersion varFormat)
        {
            var tempNodeCount        = varStream.ReadInt32();
            var tempStringBufferSize = varStream.ReadInt32();

            Nodes = new List <TypeTreeNode>(tempNodeCount);
            for (int i = 0; i < tempNodeCount; ++i)
            {
                var tempNode = new TypeTreeNode().Parse(varStream, varFormat);
                Nodes.Add(tempNode);
            }

            m_StringBuffer = varStream.ReadBytes(tempStringBufferSize);
            using (var stringBufferReader = new BinaryReader(new MemoryStream(m_StringBuffer)))
            {
                for (int i = 0; i < tempNodeCount; ++i)
                {
                    var m_Node = Nodes[i];
                    m_Node.m_Type = ReadCommonString(stringBufferReader, m_Node.m_TypeStrOffset);
                    m_Node.m_Name = ReadCommonString(stringBufferReader, m_Node.m_NameStrOffset);
                }
            }
            return(this);
        }
Esempio n. 6
0
        public SerializedType Parse(EndianBinaryReader varStream, bool varEnableTypeTree, SerializedFileFormatVersion varFormat, bool varRefType = false)
        {
            classID         = (PersistentTypeID)varStream.ReadInt32();
            IsStrippedType  = varStream.ReadBoolean();
            ScriptTypeIndex = varStream.ReadInt16();

            if (classID == PersistentTypeID.MonoBehaviour)
            {
                m_ScriptID = varStream.ReadBytes(16);
            }
            m_OldTypeHash = varStream.ReadBytes(16);

            if (varEnableTypeTree)
            {
                mTypeTree = new TypeTree().Parse(varStream, varFormat);

                if (varFormat >= SerializedFileFormatVersion.kStoresTypeDependencies)
                {
                    if (varRefType)
                    {
                        m_KlassName = varStream.ReadStringToNull();
                        m_NameSpace = varStream.ReadStringToNull();
                        m_AsmName   = varStream.ReadStringToNull();
                    }
                    else
                    {
                        m_TypeDependencies = varStream.ReadInt32Array();
                    }
                }
            }
            return(this);
        }