| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 | using System.Collections;using System.Collections.Generic;using UnityEngine;using System.IO;using AIPagedLod;using UnityEngine.Networking;using LitJson;public class DownloadFileManager : MonoBehaviour{    public static DownloadFileManager mInstance;    public List<UnityWebRequest> mDownloadWWWList = new List<UnityWebRequest>();    public int mMaxCoroutineCount = 2;    public int mCurrentCoroutineCount = 0;    void Awake()    {        mInstance = this;    }    void Update()    {        mDownloadWWWList.RemoveAll(item => item.isDone);        mCurrentCoroutineCount = mDownloadWWWList.Count;    }    public bool CanDownload()    {        return mDownloadWWWList.Count < mMaxCoroutineCount;    }    public void StartDownloadTileFile(PagedLod lod,string baseUrl)    {        StartCoroutine(DownloadTileFile(lod, baseUrl));    }    public IEnumerator DownloadTileFile(PagedLod pagedLod, string baseUrl)    {        string url = baseUrl + "/" + pagedLod.mTileDirPath +"/" +             pagedLod.gameObject.name + PagedLodConfig.mInstance.GetFileSufix();        UnityWebRequest www = UnityWebRequest.Get(url);        www.timeout = 5;        mDownloadWWWList.Add(www);        yield return www.SendWebRequest();        if (www.isHttpError || www.isNetworkError)        {            pagedLod.mIsRenderNodeLoaded = false;            Debug.Log(www.error + " " + url);        }        else        {            B3dmFileLoader loader = new B3dmFileLoader();            loader.LoadObjectMeshInfoFromData(www.downloadHandler.data);            if(loader.mObjectInfoList.Count == 0)            {                pagedLod.mIsRenderNodeLoaded = false;            }            else            {                pagedLod.LoadRenderNode(loader);            }            loader.Dispose();        }    }}
 |