Ejemplo n.º 1
0
        void ReadCompressedSegment(BundleSegment segment)
        {
            m_input.Position = segment.Offset;
            int method = segment.Compression & 0x3F;

            if (1 == method)
            {
                m_buffer_len = LzmaDecompressBlock(segment.PackedSize, segment.UnpackedSize);
                return;
            }
            if (null == m_packed || segment.PackedSize > m_packed.Length)
            {
                m_packed = new byte[segment.PackedSize];
            }
            int packed_size = m_input.Read(m_packed, 0, (int)segment.PackedSize);
            var output      = PrepareBuffer(segment.UnpackedSize);

            if (3 == method || 2 == method)
            {
                m_buffer_len = Lz4Compressor.DecompressBlock(m_packed, packed_size, output, (int)segment.UnpackedSize);
            }
            else
            {
                throw new NotImplementedException("Not supported Unity asset bundle compression.");
            }
        }
Ejemplo n.º 2
0
        internal string ReadCString()
        {
            int length = m_input.Read(m_buffer, 0, 0x104);
            int end    = 0;

            while (end < length && m_buffer[end] != 0)
            {
                m_buffer[end++] ^= 0xFF;
            }
            return(Encodings.cp932.GetString(m_buffer, 0, end));
        }
Ejemplo n.º 3
0
        void ReadCompressedSegment(BundleSegment segment)
        {
            m_input.Position = segment.Offset;
            if (null == m_packed || segment.PackedSize > m_packed.Length)
            {
                m_packed = new byte[segment.PackedSize];
            }
            int packed_size = m_input.Read(m_packed, 0, (int)segment.PackedSize);

            if (null == m_buffer || segment.UnpackedSize > m_buffer.Length)
            {
                m_buffer = new byte[segment.UnpackedSize];
            }
            if (3 == segment.Compression)
            {
                m_buffer_len = Lz4Compressor.DecompressBlock(m_packed, packed_size, m_buffer, (int)segment.UnpackedSize);
            }
            else
            {
                throw new NotImplementedException("Not supported Unity asset bundle compression.");
            }
        }