Ejemplo n.º 1
0
        public void Read(UnityBinaryReader reader)
        {
            // Read header
            int node_count      = reader.ReadInt();
            int strtable_length = reader.ReadInt();

            // StringTable is at just after nodes
            UnityBinaryReader strtableReader = reader.Slice(reader.Position + 24 * node_count);

            // Read Nodes
            Nodes = new Node[node_count];
            for (int i = 0; i < node_count; i++)
            {
                Nodes[i].Version = reader.ReadUShort();
                Nodes[i].Level   = reader.ReadByte();
                Nodes[i].IsArray = reader.ReadByte() != 0;

                // Read TypeName
                var TypeStringOffset = reader.ReadUShort();
                var temp             = reader.ReadUShort();
                if (temp == 0)
                {
                    strtableReader.Position = TypeStringOffset;
                    Nodes[i].Type           = strtableReader.ReadStringToNull();
                }
                else
                {
                    Nodes[i].Type = GetCommonString(TypeStringOffset);
                }

                // Read Name
                var NameStringOffset = reader.ReadUShort();
                temp = reader.ReadUShort();
                if (temp == 0)
                {
                    strtableReader.Position = NameStringOffset;
                    Nodes[i].Name           = strtableReader.ReadStringToNull();
                }
                else
                {
                    Nodes[i].Name = GetCommonString(NameStringOffset);
                }

                Nodes[i].ByteSize = reader.ReadInt();
                Nodes[i].Index    = reader.ReadInt();
                Nodes[i].MetaFlag = reader.ReadInt();
            }

            reader.Position += strtable_length;
        }
Ejemplo n.º 2
0
 public void Read(UnityBinaryReader reader)
 {
     MetadataSize = reader.ReadIntBE();
     FileSize     = reader.ReadIntBE();
     Version      = reader.ReadIntBE();
     DataOffset   = reader.ReadIntBE();
     IsBigEndian  = reader.ReadByte() == 0 ? false : true;
     Reserved     = reader.ReadBytes(3);
 }
Ejemplo n.º 3
0
        public void Read(UnityBinaryReader reader)
        {
            ClassID         = reader.ReadInt();
            IsStrippedType  = reader.ReadByte() != 0;
            ScriptTypeIndex = reader.ReadShort();

            if (ClassID == (int)ClassIDType.MonoBehaviour)
            {
                ScriptID = reader.ReadBytes(16);
            }
            OldTypeHash = reader.ReadBytes(16);
        }
Ejemplo n.º 4
0
            public bool   EnableTypeTree; // version >= 13

            public void Read(UnityBinaryReader reader)
            {
                UnityVersion   = reader.ReadStringToNull();
                TargetPlatform = reader.ReadInt();
                EnableTypeTree = reader.ReadByte() != 0;
            }