示例#1
0
        // throws IOException
        private void loadMetadata(DataReader inr)
        {
            inr.order = versionInfo.order();

            // read structure data
            typeTreeBlock.markBegin(inr.position);
            typeTreeStruct.read(inr);
            typeTreeBlock.markEnd(inr.position);
            //Logger.Log("typeTreeBlock: {0}" + typeTreeBlock);

            objectInfoBlock.markBegin(inr.position);
            objectInfoStruct.read(inr);
            objectInfoBlock.markEnd(inr.position);
            //Logger.Log("objectInfoBlock: {0}" + objectInfoBlock);

            // unknown block for Unity 5
            if (header.getversion() > 13)
            {
                inr.align(4);
                int num = inr.readInt();
                if (num != 0 && header.getversion() >= 15)
                {
                    // sorry, no info on that block => cant read externals. num -> num-9 worked for my experimental file, but I dont know about others
                    Logger.Log("num=" + num);
                    return;
                }
                for (int i = 0; i < num; i++)
                {
                    inr.readInt();
                    inr.readInt();
                    inr.readInt();
                }
            }

            externalsBlock.markBegin(inr.position);
            externalsStruct.read(inr);
            externalsBlock.markEnd(inr.position);
            //Logger.Log("externalsBlock: {0}" + externalsBlock);

            byte[] userInformation = new byte[header.dataOffset - inr.position];
            inr.readBytes(ref userInformation);
        }
示例#2
0
        // throws IOException
        public void deserialize(DataReader inr, ObjectData data)
        {
            versionInfo = data.versionInfo;

            //MemoryStream ms = new MemoryStream(data.buffer.data);
            //DataReader inr = new DataReader(ms);
            ////DataReader inr = DataReaders.forByteBuffer(data.buffer);
            //inr.order = versionInfo.order();
            //inr.SetPosition( 0;
            //FieldNode instance = readObject(inr, data.typeTree);

            ByteOrder oldorder = inr.order;

            inr.order = versionInfo.order();
            FieldNode instance = readObject(inr, data.typeTree);

            inr.order = oldorder;

            data.instance = instance;
        }