using System.Collections; using System.Collections.Generic; using UnityEngine; using System.Xml; using System; using System.IO; namespace AIPagedLod { [System.Serializable] public class DataPathInfo { public string mDataName; public string mDataPath; public bool mIsDaJiangData = false; public int mMinLevel; public bool mLodEnable = false; } public enum TileDataType { OSGB = 1, B3DM = 2, UNKNOWN= 3 } public class PagedLodConfig : MonoBehaviour { public static PagedLodConfig mInstance = null; public static int mThreadCount = 2; public int mExpiryFrames = 0; public Dictionary mDataPathDict = new Dictionary(); public int mMeshLayer = 8; public int mCoroutineCount = 0; public float mLoadRadius = 3000.0f; public float mMaxSSE = 60.0F; public bool mIsLoadFromUrl = false; public TileDataType mTileDataType = TileDataType.UNKNOWN; public int mCollectCount = 0; public void Awake() { mInstance = this; #if !UNITY_EDITOR && !UNITY_WEBGL && !UNITY_ANDROID InitConfig(); #endif } public string GetFileSufix() { if (mTileDataType == TileDataType.OSGB) return ".osgb"; else return ".b3dm"; } public void InitConfig() { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(Application.streamingAssetsPath + "/PagedLodConfig/Config.xml"); XmlElement mainConfig = (XmlElement)xmlDoc.DocumentElement.GetElementsByTagName("MainConfig")[0]; mThreadCount = int.Parse(mainConfig.GetAttribute("threadCount")); mExpiryFrames = int.Parse(mainConfig.GetAttribute("expiryFrames")); mCoroutineCount = int.Parse(mainConfig.GetAttribute("coroutineCount")); mDataPathDict.Clear(); XmlElement dataPathConfig = (XmlElement)xmlDoc.DocumentElement.GetElementsByTagName("DataPathConfig")[0]; foreach (var node in dataPathConfig.ChildNodes) { XmlElement pathConfig = (XmlElement)node; DataPathInfo info = new DataPathInfo(); info.mIsDaJiangData = bool.Parse(pathConfig.GetAttribute("isDaJiangData")); info.mDataName = pathConfig.GetAttribute("name"); info.mDataPath = pathConfig.GetAttribute("path"); info.mMinLevel = int.Parse(pathConfig.GetAttribute("minLevel")); info.mLodEnable = bool.Parse(pathConfig.GetAttribute("lodEnable")); mDataPathDict.Add(pathConfig.GetAttribute("name"), info); if (!Directory.Exists(info.mDataPath)) { Directory.CreateDirectory(info.mDataPath); } } } } }