private static IEnumerator _LoadFromResources( XlsxRequest request, _LoadingResult result) { var scheme = _GetUriScheme(request.uri) + "://"; var path = request.uri.Substring(scheme.Length); ResourceRequest req = null; TextAsset ta = null; req = Resources.LoadAsync <TextAsset>(path); if (req != null) { while (!req.isDone) { result.progress = Mathf.Clamp( req.progress, result.progress, 0.99F ); yield return(null); } result.progress = 1; ta = req.asset as TextAsset; } if (!ta) { result.error = "Asset not found."; } else { result.stream = new MemoryStream(ta.bytes); } result.progress = 1; }
private void _RunLoaders() { var count = requests.Count; _loadingResults = new _LoadingResult[count]; _readers = new XlsxReader[count]; for (var n = 0; n < count; ++n) { _loadingResults[n] = new _LoadingResult(); var loader = _loaderMap[_GetUriScheme(requests[n].uri)]; _coroutineRunner.StartCoroutine( loader(requests[n], _loadingResults[n]) ); } }
private static IEnumerator _LoadFromWebRequest( XlsxRequest request, _LoadingResult result) { WebRequestCreator createWebRequest = (uri) => { WebRequest webReq = null; if (request.webRequestCreator != null) { webReq = request.webRequestCreator(uri); } if (webReq == null) { webReq = new WebRequest(uri); } if (webReq.downloadHandler == null) { webReq.downloadHandler = new DownloadHandlerBuffer(); } return(webReq); }; using (var webReq = createWebRequest(request.uri)) { webReq.SendWebRequest(); while (!webReq.isDone) { result.progress = Mathf.Clamp( webReq.downloadProgress, result.progress, 0.99F ); yield return(null); } if (webReq.isNetworkError || webReq.isHttpError) { result.error = webReq.error; } else { var bytes = webReq.downloadHandler.data; result.stream = new MemoryStream(bytes); } } result.progress = 1; }
private static IEnumerator _LoadFromFile( XlsxRequest request, _LoadingResult result) { var scheme = _GetUriScheme(request.uri); var si = 0; if (!string.IsNullOrEmpty(scheme)) { si = (scheme + "://").Length; } var path = request.uri; switch (scheme) { case "data": path = Application.dataPath; break; case "pdata": path = Application.persistentDataPath; break; } if (si > 0) { path += "/" + request.uri.Substring(si); } if (File.Exists(path)) { result.stream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite ); } else { result.stream = null; result.error = "File not found."; } result.progress = 1; yield break; }