Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
        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])
                    );
            }
        }
Ejemplo n.º 3
0
        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;
        }
Ejemplo n.º 4
0
        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;
        }