PagedLodConfig.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using System.Xml;
  5. using System;
  6. using System.IO;
  7. namespace AIPagedLod
  8. {
  9. [System.Serializable]
  10. public class DataPathInfo
  11. {
  12. public string mDataName;
  13. public string mDataPath;
  14. public bool mIsDaJiangData = false;
  15. public int mMinLevel;
  16. public bool mLodEnable = false;
  17. }
  18. public enum TileDataType
  19. {
  20. OSGB = 1,
  21. B3DM = 2,
  22. UNKNOWN= 3
  23. }
  24. public class PagedLodConfig : MonoBehaviour
  25. {
  26. public static PagedLodConfig mInstance = null;
  27. public static int mThreadCount = 2;
  28. public int mExpiryFrames = 0;
  29. public Dictionary<string, DataPathInfo> mDataPathDict = new Dictionary<string, DataPathInfo>();
  30. public int mMeshLayer = 8;
  31. public int mCoroutineCount = 0;
  32. public float mLoadRadius = 3000.0f;
  33. public float mMaxSSE = 60.0F;
  34. public bool mIsLoadFromUrl = false;
  35. public TileDataType mTileDataType = TileDataType.UNKNOWN;
  36. public int mCollectCount = 0;
  37. public void Awake()
  38. {
  39. mInstance = this;
  40. #if !UNITY_EDITOR && !UNITY_WEBGL && !UNITY_ANDROID
  41. InitConfig();
  42. #endif
  43. }
  44. public string GetFileSufix()
  45. {
  46. if (mTileDataType == TileDataType.OSGB)
  47. return ".osgb";
  48. else
  49. return ".b3dm";
  50. }
  51. public void InitConfig()
  52. {
  53. XmlDocument xmlDoc = new XmlDocument();
  54. xmlDoc.Load(Application.streamingAssetsPath + "/PagedLodConfig/Config.xml");
  55. XmlElement mainConfig = (XmlElement)xmlDoc.DocumentElement.GetElementsByTagName("MainConfig")[0];
  56. mThreadCount = int.Parse(mainConfig.GetAttribute("threadCount"));
  57. mExpiryFrames = int.Parse(mainConfig.GetAttribute("expiryFrames"));
  58. mCoroutineCount = int.Parse(mainConfig.GetAttribute("coroutineCount"));
  59. mDataPathDict.Clear();
  60. XmlElement dataPathConfig = (XmlElement)xmlDoc.DocumentElement.GetElementsByTagName("DataPathConfig")[0];
  61. foreach (var node in dataPathConfig.ChildNodes)
  62. {
  63. XmlElement pathConfig = (XmlElement)node;
  64. DataPathInfo info = new DataPathInfo();
  65. info.mIsDaJiangData = bool.Parse(pathConfig.GetAttribute("isDaJiangData"));
  66. info.mDataName = pathConfig.GetAttribute("name");
  67. info.mDataPath = pathConfig.GetAttribute("path");
  68. info.mMinLevel = int.Parse(pathConfig.GetAttribute("minLevel"));
  69. info.mLodEnable = bool.Parse(pathConfig.GetAttribute("lodEnable"));
  70. mDataPathDict.Add(pathConfig.GetAttribute("name"), info);
  71. if (!Directory.Exists(info.mDataPath))
  72. {
  73. Directory.CreateDirectory(info.mDataPath);
  74. }
  75. }
  76. }
  77. }
  78. }