예제 #1
0
        public override void OnRebuild(VoidPtr address, int length, bool force)
        {
            REFF *header = (REFF *)address;

            header->_linkPrev            = 0;
            header->_linkNext            = 0;
            header->_padding             = 0;
            header->_dataLength          = length - 0x18;
            header->_header._tag         = header->_tag = REFF.Tag;
            header->_header.Endian       = Endian.Big;
            header->_header._version     = 7;
            header->_header._length      = length;
            header->_header._firstOffset = 0x10;
            header->_header._numEntries  = 1;
            header->IdString             = Name;

            REFTypeObjectTable *table = (REFTypeObjectTable *)((byte *)header + header->_dataOffset + 0x18);

            table->_entries = (ushort)Children.Count;
            table->_pad     = 0;
            table->_length  = _tableLen;

            REFTypeObjectEntry *entry = table->First;
            int offset = _tableLen;

            foreach (ResourceNode n in Children)
            {
                entry->Name       = n.Name;
                entry->DataOffset = offset;
                entry->DataLength = n._calcSize;
                n.Rebuild((VoidPtr)table + offset, n._calcSize, force);
                offset += n._calcSize;
                entry   = entry->Next;
            }
        }
예제 #2
0
        protected override void OnPopulate()
        {
            REFTypeObjectTable *table = Header->Table;
            REFTypeObjectEntry *Entry = table->First;

            for (int i = 0; i < table->_entries; i++, Entry = Entry->Next)
            {
                new REFFEntryNode()
                {
                    _name = Entry->Name, _offset = (int)Entry->DataOffset, _length = (int)Entry->DataLength
                }
            }
예제 #3
0
        public override void OnPopulate()
        {
            REFTypeObjectTable *table = Header->Table;
            REFTypeObjectEntry *Entry = table->First;

            for (int i = 0; i < table->_entries; i++, Entry = Entry->Next)
            {
                new REFFEntryNode {
                    _name = Entry->Name, _offset = Entry->DataOffset, _length = Entry->DataLength
                }
                .Initialize(this, new DataSource((byte *)table->Address + Entry->DataOffset, Entry->DataLength));
            }
        }