DownloadTileSetManager.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using System.IO;
  5. using AIPagedLod;
  6. using UnityEngine.Networking;
  7. using LitJson;
  8. public class DownloadTileSetManager : MonoBehaviour
  9. {
  10. public static DownloadTileSetManager mInstance;
  11. public List<UnityWebRequest> mDownloadWWWList = new List<UnityWebRequest>();
  12. public int mMaxCoroutineCount = 2;
  13. public int mCurrentCoroutineCount = 0;
  14. void Awake()
  15. {
  16. mInstance = this;
  17. }
  18. void Update()
  19. {
  20. mDownloadWWWList.RemoveAll(item => item.isDone);
  21. mCurrentCoroutineCount = mDownloadWWWList.Count;
  22. }
  23. public bool CanDownload()
  24. {
  25. return mDownloadWWWList.Count < mMaxCoroutineCount;
  26. }
  27. public void StartDownloadTileSetJson(LoadDataFromUrl loader,TileUrlInfo info)
  28. {
  29. StartCoroutine(DownloadTileSetJson(loader,info));
  30. }
  31. public IEnumerator DownloadTileSetJson(LoadDataFromUrl loader, TileUrlInfo info)
  32. {
  33. string url = info.mTileSetUrl;
  34. UnityWebRequest www = UnityWebRequest.Get(url);
  35. www.timeout = 10;
  36. yield return www.SendWebRequest();
  37. if (www.isHttpError || www.isNetworkError)
  38. {
  39. Debug.Log(www.error + " " + url);
  40. }
  41. else
  42. {
  43. B3dmBasicInfo rootTileInfo = null;
  44. info.mBasicInfoDict = PagedLod.LoadTileSetJsonText(www.downloadHandler.text, ref rootTileInfo);
  45. info.mBasicInfo = rootTileInfo;
  46. string tileUrl = info.mTileSetUrl.Replace("tileset.json", "");
  47. info.mTileFileUrl = tileUrl + info.mBasicInfo.mContent + ".b3dm";
  48. loader.DoLoadTileSetFinished();
  49. }
  50. }
  51. }