Ejemplo n.º 1
0
        internal static void WaitForRequestToBeActive(WebRequestQueueOperation request, int millisecondsTimeout)
        {
            var completedRequests = new List <UnityWebRequestAsyncOperation>();

            while (s_QueuedOperations.Contains(request))
            {
                completedRequests.Clear();
                foreach (UnityWebRequestAsyncOperation webRequestAsyncOp in s_ActiveRequests)
                {
                    if (UnityWebRequestUtilities.IsAssetBundleDownloaded(webRequestAsyncOp))
                    {
                        completedRequests.Add(webRequestAsyncOp);
                    }
                }
                foreach (UnityWebRequestAsyncOperation webRequestAsyncOp in completedRequests)
                {
                    bool requestIsActive = s_QueuedOperations.Peek() == request;
                    webRequestAsyncOp.completed -= OnWebAsyncOpComplete;
                    OnWebAsyncOpComplete(webRequestAsyncOp);
                    if (requestIsActive)
                    {
                        return;
                    }
                }
                System.Threading.Thread.Sleep(millisecondsTimeout);
            }
        }
            private void RequestOperation_completed(AsyncOperation op)
            {
                if (m_Complete)
                {
                    return;
                }

                var       webOp      = op as UnityWebRequestAsyncOperation;
                string    textResult = null;
                Exception exception  = null;

                if (webOp != null)
                {
                    var webReq = webOp.webRequest;
                    if (!UnityWebRequestUtilities.RequestHasErrors(webReq, out UnityWebRequestResult uwrResult))
                    {
                        textResult = webReq.downloadHandler.text;
                    }
                    else
                    {
                        exception = new RemoteProviderException($"{nameof(TextDataProvider)} : unable to load from url : {webReq.url}", m_PI.Location, uwrResult);
                    }
                }
                else
                {
                    exception = new RemoteProviderException(nameof(TextDataProvider) + " unable to load from unknown url", m_PI.Location);
                }

                CompleteOperation(textResult, exception);
            }