| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 | using System.Collections;using System.Collections.Generic;using UnityEngine;using AIPagedLod;using System.IO;using UnityEngine.UI;using System;using System.Threading;using UnityEngine.EventSystems;public class LoadDataRumtime : MonoBehaviour{    public bool mIsAutoLoad = false;    public Transform mDataContent;    public GameObject mDataItemPrefab;    public Transform mDataLoadInfoContent;    public GameObject mDataLoadInfoItemPrefab;    public GameObject mDataLoadInfoObject;    public bool mIsGetDataCenter = false;    public static bool mSetCameraPositionFlag = true;    private Dictionary<string, RuntimeDataLoader> mDataLoaderDict = new Dictionary<string, RuntimeDataLoader>();    private bool mIsLoadFinished = false;    void Start()    {        if (mIsAutoLoad)        {            StartLoadData();        }    }    public void StartLoadData()    {        mDataLoaderDict.Clear();        List<string> dataNameList = new List<string>(PagedLodConfig.mInstance.mDataPathDict.Keys);        for (int i = 0; i < dataNameList.Count; ++i)        {            string dataName = dataNameList[i];            GameObject dataLoaderObject = new GameObject(dataName);            RuntimeDataLoader dataLoader = dataLoaderObject.AddComponent<RuntimeDataLoader>();            //if (PagedLodConfig.mInstance.mTileDataType == TileDataType.OSGB)            //{            //    dataLoader.transform.Rotate(new Vector3(-90f, 0f, 0f));            //}            dataLoader.mDataPathInfo = PagedLodConfig.mInstance.mDataPathDict[dataName];            mDataLoaderDict.Add(dataName, dataLoader);            //--------------------------------------------------------UI            GameObject dataItem = GameObject.Instantiate(mDataItemPrefab);            dataItem.SetActive(true);            dataItem.transform.SetParent(mDataContent);            dataItem.name = dataName;            dataItem.GetComponentInChildren<Text>().text = dataName;            dataItem.GetComponentInChildren<Button>().onClick.AddListener(SwitchCameraToData);            GameObject dataLoadInfoItem = GameObject.Instantiate(mDataLoadInfoItemPrefab);            dataLoadInfoItem.SetActive(true);            dataLoadInfoItem.transform.SetParent(mDataLoadInfoContent);            dataLoader.mDataLoadInfoItem = dataLoadInfoItem;            dataLoader.StartLoad();        }    }	    void Update()    {        if (mDataLoaderDict.Count == 0) return ;        if (mIsGetDataCenter)        {            if (Input.GetMouseButtonDown(0))            {                Ray cameraRay = Camera.main.ScreenPointToRay(Input.mousePosition);                RaycastHit cameraHit;                if (Physics.Raycast(cameraRay, out cameraHit, float.MaxValue))                {                    if (mDataLoaderDict.Count > 0)                    {                        RuntimeDataLoader loader = new List<RuntimeDataLoader>(mDataLoaderDict.Values)[0];                        loader.mCenterPosition = cameraHit.point;                        loader.SaveDataCenterToConfigFile();                        SetCameraToCenter(loader.mCenterPosition);                    }                }            }        }        if (mIsLoadFinished) return;        bool allFinished = true;        foreach (KeyValuePair<string, RuntimeDataLoader> item in mDataLoaderDict)        {            if(!item.Value.mIsLoadFinished)            {                allFinished = false;                break;            }        }        if(allFinished)        {            foreach (KeyValuePair<string, RuntimeDataLoader> item in mDataLoaderDict)            {                item.Value.StartUpdateLod();            }            mDataLoadInfoObject.SetActive(false);            mIsLoadFinished = true;        }         }    public void SetIsGetDataCenter(bool flag)    {        mIsGetDataCenter = flag;    }    public void SwitchCameraToData()    {        GameObject dataItem = EventSystem.current.currentSelectedGameObject;        SetCameraToCenter(mDataLoaderDict[dataItem.name].mCenterPosition);    }    public static void SetCameraToCenter(Vector3 center)    {        if (Camera.main.GetComponent<AroundCamera>() != null)        {            AroundCamera around = Camera.main.GetComponent<AroundCamera>();            MouseTranslate translate = around.target.GetComponent<MouseTranslate>();            translate.areaSettings.center.position = center;            translate.transform.position = center;            translate.CurrentOffset = translate.targetOffset = Vector3.zero;            around.target.position = center;        }    }}
 |