private void ReadRawWebMetadata(Stream stream, out Stream dataStream, out long metadataOffset)
        {
            BundleRawWebHeader header = Header.RawWeb;
            int metadataSize          = BundleRawWebHeader.HasUncompressedBlocksInfoSize(Header.Version) ? header.UncompressedBlocksInfoSize : 0;

            switch (Header.Signature)
            {
            case BundleType.UnityRaw:
            {
                dataStream     = stream;
                metadataOffset = stream.Position;

                ReadMetadata(dataStream, metadataSize);
            }
            break;

            case BundleType.UnityWeb:
            {
                // read only last chunk
                BundleScene chunkInfo = header.Scenes[header.Scenes.Length - 1];
                dataStream = new MemoryStream(new byte[chunkInfo.DecompressedSize]);
                SevenZipHelper.DecompressLZMASizeStream(stream, chunkInfo.CompressedSize, dataStream);
                metadataOffset = 0;

                dataStream.Position = 0;
                ReadMetadata(dataStream, metadataSize);
            }
            break;

            default:
                throw new Exception($"Unsupported bundle signature '{Header.Signature}'");
            }
        }
Esempio n. 2
0
    private IEnumerator LoadSceneAsync(ISceneLoadTask task)
    {
        if (mStatus != LoadStatus.Done)
        {
            yield return(BeginInitialize());
        }

        BundleScene bundle = GetOrCreateBundle <BundleScene>(task.assetName);

        yield return(bundle.LoadSceneAsync(task));
    }