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}'"); } }
private IEnumerator LoadSceneAsync(ISceneLoadTask task) { if (mStatus != LoadStatus.Done) { yield return(BeginInitialize()); } BundleScene bundle = GetOrCreateBundle <BundleScene>(task.assetName); yield return(bundle.LoadSceneAsync(task)); }