コード例 #1
0
        protected override int OnCalculateSize(bool force)
        {
            entrySize = 12;
            id        = 1;
            table     = new U8StringTable();
            table._table.Add("", 0);
            int childSize = 0;

            foreach (ResourceNode e in Children)
            {
                childSize += GetSize(e, force);
            }
            entryLength = (table.TotalSize + entrySize);
            return(0x20 + childSize + entryLength.Align(0x20));
        }
コード例 #2
0
 public void RebuildNode(VoidPtr header, U8EntryNode node, ref U8Entry *entry, VoidPtr sTableStart, ref VoidPtr dataAddr, U8StringTable sTable, bool force)
 {
     entry->_type = (byte)((node is U8FolderNode) ? 1 : 0);
     entry->_stringOffset.Value = (int)sTable[node.Name] - (int)sTableStart;
     if (entry->_type == 1)
     {
         if (node.Parent != this && node.Parent != null)
         {
             entry->_dataOffset = (uint)(node.Parent as U8EntryNode).index;
         }
         (entry++)->_dataLength = (uint)(node.index + node.Children.Count + 1);
         foreach (ResourceNode b in node.Children)
         {
             if (b is U8EntryNode)
             {
                 RebuildNode(header, b as U8EntryNode, ref entry, sTableStart, ref dataAddr, table, force);
             }
         }
     }
     else
     {
         node.Rebuild(dataAddr, node._calcSize, force);
         entry->_dataOffset     = (uint)dataAddr - (uint)header;
         (entry++)->_dataLength = (uint)node._calcSize.Align(0x10);
         dataAddr += node._calcSize.Align(0x20);
     }
 }