Example #1
0
            public void Start(ProvideHandle provideHandle, TextDataProvider rawProvider, bool ignoreFailures)
            {
                m_PI = provideHandle;
                provideHandle.SetProgressCallback(GetPercentComplete);
                m_Provider = rawProvider;
                if ((m_PI.Location.Data as ProviderLoadRequestOptions) != null)
                {
                    m_IgnoreFailures = (m_PI.Location.Data as ProviderLoadRequestOptions).IgnoreFailures;
                }
                else
                {
                    m_IgnoreFailures = ignoreFailures;
                }
                var path = m_PI.ResourceManager.TransformInternalId(m_PI.Location);

                if (File.Exists(path))
                {
#if NET_4_6
                    if (path.Length >= 260)
                    {
                        path = @"\\?\" + path;
                    }
#endif
                    var    text   = File.ReadAllText(path);
                    object result = ConvertText(text);
                    m_PI.Complete(result, result != null, result == null ? new Exception($"Unable to load asset of type {m_PI.Type} from location {m_PI.Location}.") : null);
                }
                else if (ResourceManagerConfig.ShouldPathUseWebRequest(path))
                {
                    UnityWebRequest request = new UnityWebRequest(path, UnityWebRequest.kHttpVerbGET, new DownloadHandlerBuffer(), null);
                    m_RequestQueueOperation = WebRequestQueue.QueueRequest(request);
                    if (m_RequestQueueOperation.IsDone)
                    {
                        m_RequestOperation = m_RequestQueueOperation.Result;
                        if (m_RequestOperation.isDone)
                        {
                            RequestOperation_completed(m_RequestOperation);
                        }
                        else
                        {
                            m_RequestOperation.completed += RequestOperation_completed;
                        }
                    }
                    else
                    {
                        m_RequestQueueOperation.OnComplete += asyncOperation =>
                        {
                            m_RequestOperation            = asyncOperation;
                            m_RequestOperation.completed += RequestOperation_completed;
                        };
                    }
                }
                else
                {
                    Exception exception = null;
                    //Don't log errors when loading from the persistentDataPath since these files are expected to not exist until created
                    if (m_IgnoreFailures)
                    {
                        m_PI.Complete <object>(null, true, exception);
                    }
                    else
                    {
                        exception = new Exception(string.Format("Invalid path in " + nameof(TextDataProvider) + " : '{0}'.", path));
                        m_PI.Complete <object>(null, false, exception);
                    }
                }
            }
Example #2
0
 /// <summary>
 /// Provides raw text data from the location.
 /// </summary>
 /// <param name="provideHandle">The data needed by the provider to perform the load.</param>
 public override void Provide(ProvideHandle provideHandle)
 {
     new InternalOp().Start(provideHandle, this, IgnoreFailures);
 }