using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using UnityEditor; using UnityEngine; namespace Thousandto.Editor.Test { public partial class SplitTerrainWindow : UnityEditor.EditorWindow { void LoadTerrainData() { TerrainData td = null; if (!IsSelectionInHierarchy()) { td = LoadSelectedObject<TerrainData>(); } if (td == null) { var terrain = LoadSelectedObject<Terrain>(true); if (terrain != null) td = terrain.terrainData; } if (td != null) _curTerrainData = td; } T LoadSelectedObject<T>(bool useGetComponent = false) where T : UnityEngine.Object { T ret = null; if (ret == null) { if (!IsSelectionInHierarchy()) { if (useGetComponent && typeof(T).IsSubclassOf(typeof(Component))) { if (_curSelectObj is Component) ret = ((Component)_curSelectObj).GetComponentInChildren<T>(); else if (_curSelectObj is GameObject) ret = ((GameObject)_curSelectObj).GetComponentInChildren<T>(); } if (ret == null) ret = _curSelectObj as T; } else { if (useGetComponent) { if (_curSelectObj is GameObject) { GameObject go = _curSelectObj as GameObject; ret = go.GetComponentInChildren<T>(); } else if (_curSelectObj is Behaviour) { Behaviour bh = _curSelectObj as Behaviour; ret = bh.GetComponentInChildren<T>(); } } else ret = _curSelectObj as T; } } return ret; } } }