using System.Collections; using System.Collections.Generic; using UnityEngine; using System.IO; using AIPagedLod; using UnityEngine.Networking; using LitJson; public class DownloadTileFileManager : MonoBehaviour { public static DownloadTileFileManager mInstance; public List mDownloadWWWList = new List(); 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(LoadDataFromUrl loader,TileUrlInfo info) { StartCoroutine(DownloadTileFile(loader,info)); } public IEnumerator DownloadTileFile(LoadDataFromUrl loadDataFromUrl, TileUrlInfo info) { string url = info.mTileFileUrl; UnityWebRequest www = UnityWebRequest.Get(url); www.timeout = 10; yield return www.SendWebRequest(); if (www.isHttpError || www.isNetworkError) { Debug.Log(www.error + " " + url); } else { B3dmFileLoader loader = new B3dmFileLoader(); loader.LoadObjectMeshInfoFromData(www.downloadHandler.data); loader.mTileName = info.mBasicInfo.mContent; loader.mTileDirPath = info.mBasicInfo.mContent; PagedLod pagedLod = LoadPagedLodFromFileManager.LoadPagedLod(loader, loadDataFromUrl.mCurrentLoadManager.transform); pagedLod.mBasicInfo = info.mBasicInfo; pagedLod.mBasicInfoDict = info.mBasicInfoDict; pagedLod.LoadB3dmBasicInfo(loader); pagedLod.GetMeshRenders(); pagedLod.mIsRootTile = true; pagedLod.mSelfLevel = 14; LoadPagedLodFromFileManager.GenerateColliderObject(pagedLod); loadDataFromUrl.DoLoadTileFileFinished(); } } }