LoadDataRumtime.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using AIPagedLod;
  5. using System.IO;
  6. using UnityEngine.UI;
  7. using System;
  8. using System.Threading;
  9. using UnityEngine.EventSystems;
  10. public class LoadDataRumtime : MonoBehaviour
  11. {
  12. public bool mIsAutoLoad = false;
  13. public Transform mDataContent;
  14. public GameObject mDataItemPrefab;
  15. public Transform mDataLoadInfoContent;
  16. public GameObject mDataLoadInfoItemPrefab;
  17. public GameObject mDataLoadInfoObject;
  18. public bool mIsGetDataCenter = false;
  19. public static bool mSetCameraPositionFlag = true;
  20. private Dictionary<string, RuntimeDataLoader> mDataLoaderDict = new Dictionary<string, RuntimeDataLoader>();
  21. private bool mIsLoadFinished = false;
  22. void Start()
  23. {
  24. if (mIsAutoLoad)
  25. {
  26. StartLoadData();
  27. }
  28. }
  29. public void StartLoadData()
  30. {
  31. mDataLoaderDict.Clear();
  32. List<string> dataNameList = new List<string>(PagedLodConfig.mInstance.mDataPathDict.Keys);
  33. for (int i = 0; i < dataNameList.Count; ++i)
  34. {
  35. string dataName = dataNameList[i];
  36. GameObject dataLoaderObject = new GameObject(dataName);
  37. RuntimeDataLoader dataLoader = dataLoaderObject.AddComponent<RuntimeDataLoader>();
  38. //if (PagedLodConfig.mInstance.mTileDataType == TileDataType.OSGB)
  39. //{
  40. // dataLoader.transform.Rotate(new Vector3(-90f, 0f, 0f));
  41. //}
  42. dataLoader.mDataPathInfo = PagedLodConfig.mInstance.mDataPathDict[dataName];
  43. mDataLoaderDict.Add(dataName, dataLoader);
  44. //--------------------------------------------------------UI
  45. GameObject dataItem = GameObject.Instantiate(mDataItemPrefab);
  46. dataItem.SetActive(true);
  47. dataItem.transform.SetParent(mDataContent);
  48. dataItem.name = dataName;
  49. dataItem.GetComponentInChildren<Text>().text = dataName;
  50. dataItem.GetComponentInChildren<Button>().onClick.AddListener(SwitchCameraToData);
  51. GameObject dataLoadInfoItem = GameObject.Instantiate(mDataLoadInfoItemPrefab);
  52. dataLoadInfoItem.SetActive(true);
  53. dataLoadInfoItem.transform.SetParent(mDataLoadInfoContent);
  54. dataLoader.mDataLoadInfoItem = dataLoadInfoItem;
  55. dataLoader.StartLoad();
  56. }
  57. }
  58. void Update()
  59. {
  60. if (mDataLoaderDict.Count == 0) return ;
  61. if (mIsGetDataCenter)
  62. {
  63. if (Input.GetMouseButtonDown(0))
  64. {
  65. Ray cameraRay = Camera.main.ScreenPointToRay(Input.mousePosition);
  66. RaycastHit cameraHit;
  67. if (Physics.Raycast(cameraRay, out cameraHit, float.MaxValue))
  68. {
  69. if (mDataLoaderDict.Count > 0)
  70. {
  71. RuntimeDataLoader loader = new List<RuntimeDataLoader>(mDataLoaderDict.Values)[0];
  72. loader.mCenterPosition = cameraHit.point;
  73. loader.SaveDataCenterToConfigFile();
  74. SetCameraToCenter(loader.mCenterPosition);
  75. }
  76. }
  77. }
  78. }
  79. if (mIsLoadFinished) return;
  80. bool allFinished = true;
  81. foreach (KeyValuePair<string, RuntimeDataLoader> item in mDataLoaderDict)
  82. {
  83. if(!item.Value.mIsLoadFinished)
  84. {
  85. allFinished = false;
  86. break;
  87. }
  88. }
  89. if(allFinished)
  90. {
  91. foreach (KeyValuePair<string, RuntimeDataLoader> item in mDataLoaderDict)
  92. {
  93. item.Value.StartUpdateLod();
  94. }
  95. mDataLoadInfoObject.SetActive(false);
  96. mIsLoadFinished = true;
  97. }
  98. }
  99. public void SetIsGetDataCenter(bool flag)
  100. {
  101. mIsGetDataCenter = flag;
  102. }
  103. public void SwitchCameraToData()
  104. {
  105. GameObject dataItem = EventSystem.current.currentSelectedGameObject;
  106. SetCameraToCenter(mDataLoaderDict[dataItem.name].mCenterPosition);
  107. }
  108. public static void SetCameraToCenter(Vector3 center)
  109. {
  110. if (Camera.main.GetComponent<AroundCamera>() != null)
  111. {
  112. AroundCamera around = Camera.main.GetComponent<AroundCamera>();
  113. MouseTranslate translate = around.target.GetComponent<MouseTranslate>();
  114. translate.areaSettings.center.position = center;
  115. translate.transform.position = center;
  116. translate.CurrentOffset = translate.targetOffset = Vector3.zero;
  117. around.target.position = center;
  118. }
  119. }
  120. }