void LoadAssetsFromPack(PlayAssetPackRequest packRequest) { var discreteAssets = gameAssetManager.GetDiscreteAssetNameList(); foreach (string discreteAsset in discreteAssets) { var assetLocation = packRequest.GetAssetLocation( discreteAsset); if (assetLocation != null) { long assetSize = (long)assetLocation.Size; long assetOffset = (long)assetLocation.Offset; var assetFileStream = File.OpenRead(assetLocation.Path); var assetBuffer = new byte[assetSize]; assetFileStream.Seek(assetOffset, SeekOrigin.Begin); assetFileStream.Read(assetBuffer, 0, assetBuffer.Length); Debug.Log("Finished discrete load of " + discreteAsset); // The asset is a raw .jpg or .png, convert to a sprite gameAssetManager.AddSpriteAsset(discreteAsset, GameAssetManager.GenerateSpriteFromRawImage( assetBuffer)); } } }
public PlayAssetPackRequest FinishPackDownload() { PlayAssetPackRequest request = assetPackRequest; assetPackRequest = null; return(request); }
private void Awake() { assetPackSize = 0; isAssetPackSizeValid = false; isCellularConfirmationActive = false; didApproveCellularData = false; assetBundleRequest = null; assetPackRequest = null; }
public override void Unload() { base.Unload(); if (playAssetPackRequest != null) { playAssetPackRequest.AttemptCancel(); playAssetPackRequest = null; } }
private void OnPackRequestCompleted(PlayAssetPackRequest packRequest) { packRequest.Completed -= OnPackRequestCompleted; if (packRequest.Error == AssetDeliveryErrorCode.NoError) { StartLoadingAssetBundle(); } else { IsDone = true; InvokeCompletedEvent(); } }
public void StartDownload() { if (isSingleAssetBundlePack && assetBundleRequest == null) { assetBundleRequest = PlayAssetDelivery.RetrieveAssetBundleAsync( assetPackName); } else if (!isSingleAssetBundlePack && assetPackRequest == null) { assetPackRequest = PlayAssetDelivery.RetrieveAssetPackAsync( assetPackName); } }
public void Unload() { if (assetBundle != null) { assetBundle.Unload(true); assetBundle = null; } if (playAssetPackRequest != null) { playAssetPackRequest.AttemptCancel(); playAssetPackRequest = null; } }
private void OnChildPackCompleted(PlayAssetPackRequest request) { var requestImpl = request as PlayAssetPackRequestImpl; if (requestImpl == null) { throw new ArgumentException("Request is not a PlayAssetPackRequestImpl"); } _completedPackNames.Add(requestImpl.AssetPackName); if (_completedPackNames.Count == Requests.Count && !IsDone) { IsDone = true; InvokeCompletedEvent(); } }
private IEnumerator DownloadAssetPackCo() { #if PLAY_ASSET_DELIVERY_EXPERIMENTAL _request = PlayAssetDelivery.RetrieveAssetPackAsync(AssetPackName); _requestInProgress = true; while (!_request.IsDone) { if (_request.Status == AssetDeliveryStatus.WaitingForWifi) { // Wait until user has confirmed or cancelled the dialog. var asyncOperation = PlayAssetDelivery.ShowCellularDataConfirmation(); yield return(asyncOperation); if (asyncOperation.Error != AssetDeliveryErrorCode.NoError || asyncOperation.GetResult() != ConfirmationDialogResult.Accepted) { // Provide a button to re-show the dialog in case user changes their mind. Display.SetStatus(_request.Status, _request.Error); } yield return(new WaitUntil(() => _request.Status != AssetDeliveryStatus.WaitingForWifi)); } Display.SetProgress(_request.DownloadProgress); Display.SetStatus(_request.Status, _request.Error); yield return(null); } Display.SetProgress(_request.DownloadProgress); Display.SetStatus(_request.Status, _request.Error); if (_request.Error != AssetDeliveryErrorCode.NoError) { Debug.LogErrorFormat("Couldn't load asset pack: {0}", _request.Error); _request = null; } _requestInProgress = false; #else // Assign values to avoid unassigned variable warning. _request = null; _requestInProgress = false; throw new Exception("Experimental Play Asset Delivery methods are disabled."); #endif }
private void UpdateDownloading() { if (infoStatus != AssetPackInfoStatus.PACKSTATUS_DOWNLOADING) { infoStatus = AssetPackInfoStatus.PACKSTATUS_DOWNLOADING; SetupDownloadUI(); } AssetDeliveryStatus deliveryStatus = gameAssetPack.GetStatus(); if (deliveryStatus == AssetDeliveryStatus.Failed) { SetupErrorUI(); } else if (deliveryStatus == AssetDeliveryStatus.Loaded || deliveryStatus == AssetDeliveryStatus.Available) { if (gameAssetPack.IsSingleAssetBundlePack) { AssetBundle newBundle = gameAssetPack.FinishBundleDownload(); StartCoroutine(LoadAssetsFromBundle(newBundle)); } else { PlayAssetPackRequest packRequest = gameAssetPack.FinishPackDownload(); LoadAssetsFromPack(packRequest); } } else if (deliveryStatus == AssetDeliveryStatus.Loading) { assetPackStatusLabel.text = "Loading"; assetPackProgressBar.PercentComplete = 1.0f; } else if (deliveryStatus == AssetDeliveryStatus.Retrieving) { assetPackProgressBar.PercentComplete = gameAssetPack.GetDownloadProgress(); } else if (deliveryStatus == AssetDeliveryStatus.WaitingForWifi) { Debug.Log("Download status WaitingForWifi"); infoStatus = AssetPackInfoStatus.PACKSTATUS_NEEDS_PERMISSION; waitingOnPermissionResult = true; gameAssetPack.RequestCellularDataDownload(); } }
private void BeginOperation(string assetPackName) { Debug.LogFormat("[{0}.{1}] assetPackName={2}", nameof(AssetPackBundleSyncResource), nameof(BeginOperation), assetPackName); playAssetPackRequest = PlayAssetDelivery.RetrieveAssetPackAsync(assetPackName); Exception exception = null; if (playAssetPackRequest.IsDone) { var assetLocation = playAssetPackRequest.GetAssetLocation(assetPackName); assetBundle = AssetBundle.LoadFromFile(assetLocation.Path, /* crc= */ 0, assetLocation.Offset); } else { exception = new Exception($"Asset Pack was not retrieved Synchronously: '{assetPackName}'."); } CompletedEvent?.Invoke(this, assetBundle != null, exception); }
private void OnPlayAssetPackRequestCompleted(string assetPackName, PlayAssetPackRequest request) { if (request.Error != AssetDeliveryErrorCode.NoError) { CompletedEvent?.Invoke(this, false, new Exception($"Error downloading error pack: {request.Error}")); return; } if (request.Status != AssetDeliveryStatus.Available) { CompletedEvent?.Invoke(this, false, new Exception($"Error downloading status: {request.Status}")); return; } var assetLocation = request.GetAssetLocation(assetPackName); requestOperation = AssetBundle.LoadFromFileAsync(assetLocation.Path, /* crc= */ 0, assetLocation.Offset); requestOperation.completed += LocalRequestOperationCompleted; }
private IEnumerator DownloadAssetPackCo() { _request = PlayAssetDelivery.RetrieveAssetPackAsync(AssetPackName); _requestInProgress = true; while (!_request.IsDone) { if (_request.Status == AssetDeliveryStatus.WaitingForWifi) { // Wait until user has confirmed or cancelled the dialog. var asyncOperation = PlayAssetDelivery.ShowCellularDataConfirmation(); yield return(asyncOperation); if (asyncOperation.Error != AssetDeliveryErrorCode.NoError || asyncOperation.GetResult() != ConfirmationDialogResult.Accepted) { // Provide a button to re-show the dialog in case user changes their mind. Display.SetStatus(_request.Status, _request.Error); } yield return(new WaitUntil(() => _request.Status != AssetDeliveryStatus.WaitingForWifi)); } Display.SetProgress(_request.DownloadProgress); Display.SetStatus(_request.Status, _request.Error); yield return(null); } Display.SetProgress(_request.DownloadProgress); Display.SetStatus(_request.Status, _request.Error); if (_request.Error != AssetDeliveryErrorCode.NoError) { Debug.LogErrorFormat("Couldn't load asset pack: {0}", _request.Error); _request = null; } _requestInProgress = false; }
private void OnPlayAssetPackRequestCompleted(string assetPackName, PlayAssetPackRequest request) { if (request.Error != AssetDeliveryErrorCode.NoError) { CompleteOperation(this, $"Error downloading error pack: {request.Error}"); return; } if (request.Status != AssetDeliveryStatus.Available) { CompleteOperation(this, $"Error downloading status: {request.Status}"); return; } var assetLocation = request.GetAssetLocation(assetPackName); m_RequestOperation = AssetBundle.LoadFromFileAsync(assetLocation.Path, /* crc= */ 0, assetLocation.Offset); if (m_RequestOperation.isDone) { LocalMRequestOperationCompleted(m_RequestOperation); return; } m_RequestOperation.completed += LocalMRequestOperationCompleted; }
private void BeginOperation(string assetPackName) { Debug.LogFormat("[{0}.{1}] assetPackName={2}", nameof(AssetPackBundleAsyncResource), nameof(BeginOperation), assetPackName); playAssetPackRequest = PlayAssetDelivery.RetrieveAssetPackAsync(assetPackName); playAssetPackRequest.Completed += request => OnPlayAssetPackRequestCompleted(assetPackName, request); }