Exemplo n.º 1
0
        private IEnumerator DownloadAvatarFunc(AvatarData avatar, PipelineType pipelineType, AsyncRequest request)
        {
            //Update avatar info
            int  retryCount = 3;
            bool gotAvatar  = false;

            while (!gotAvatar)
            {
                if (retryCount == 0)
                {
                    request.SetError("Unable to download avatar");
                    yield break;
                }

                var updateAvatar = connection.GetAvatarAsync(avatar.code);
                yield return(Await(updateAvatar, pipelineType));

                if (!updateAvatar.IsError)
                {
                    gotAvatar = true;
                    avatar    = updateAvatar.Result;
                }
                retryCount--;
            }

            // download avatar files
            retryCount = 3;
            bool isDownloaded = false;

            while (!isDownloaded)
            {
                if (retryCount == 0)
                {
                    request.SetError("Unable to download avatar");
                    yield break;
                }

                var downloadAvatar = avatarProvider.DownloadAndSaveAvatarModelAsync(avatar, pipelineType == PipelineType.FACE, true);
                yield return(Await(downloadAvatar, pipelineType));

                isDownloaded = !downloadAvatar.IsError;
                if (downloadAvatar.IsError)
                {
                    yield return(new WaitForSeconds(3));
                }

                retryCount--;
            }

            request.IsDone = true;
        }