Esempio n. 1
0
 /// <summary>
 ///     Initialize with data
 /// </summary>
 /// <param name="data"></param>
 public GMPK(Span <byte> data)
 {
     Header  = MemoryMarshal.Read <GMPKHeader>(data);
     Index   = MemoryMarshal.Read <GMPKIndex>(data.Slice(Header.NameMapIndexPointer));
     NameMap = new GPKNameMap(data.Slice(Index.NameMapPointer, Index.NameMapSize));
     for (var i = 0; i < Index.FileCount; ++i)
     {
         var offset = MemoryMarshal.Read <int>(data.Slice(Header.FileTablePointer + i * 8));
         var length = MemoryMarshal.Read <int>(data.Slice(Header.FileTablePointer + i * 8 + 4));
         Blobs.Add(new Memory <byte>(data.Slice(Header.FileTablePointer + offset, length).ToArray()));
     }
 }
Esempio n. 2
0
        /// <summary>
        ///     Initialize with data
        /// </summary>
        /// <param name="data"></param>
        public GAPK(Span <byte> data)
        {
            Header = MemoryMarshal.Read <GAPKHeader>(data);
            var offsets = MemoryMarshal.Cast <byte, int>(data.Slice(Header.PointerTablePointer, Header.PointerTableCount * 4));
            var sizes   = MemoryMarshal.Cast <byte, int>(data.Slice(Header.SizeTablePointer, Header.SizeTableCount * 4));

            NameMap = new GPKNameMap(data.Slice(Header.IndexTablePointer));
            for (var i = 0; i < NameMap.Entries.Length; ++i)
            {
                Blobs.Add(new Memory <byte>(data.Slice(offsets[i], sizes[i]).ToArray()));
            }
        }