AirControl  1.3.0
Open Source, Modular, and Extensible Flight Simulator For Deep Learning Research
XChartEditor.cs
1 /************************************************/
2 /* */
3 /* Copyright (c) 2018 - 2021 monitor1394 */
4 /* https://github.com/monitor1394 */
5 /* */
6 /************************************************/
7 
8 using UnityEditor;
9 using UnityEngine;
10 using UnityEngine.UI;
11 using UnityEngine.EventSystems;
12 
13 namespace XCharts
14 {
15  public class XChartEditor : Editor
16  {
17  private static Transform GetParent()
18  {
19  GameObject selectObj = Selection.activeGameObject;
20  if (selectObj == null)
21  {
22  var canvas = GameObject.FindObjectOfType<Canvas>();
23  if (canvas != null) return canvas.transform;
24  else
25  {
26  var canvasObject = new GameObject();
27  canvasObject.name = "Canvas";
28  canvas = canvasObject.AddComponent<Canvas>();
29  canvas.renderMode = RenderMode.ScreenSpaceOverlay;
30  canvasObject.AddComponent<CanvasScaler>();
31  canvasObject.AddComponent<GraphicRaycaster>();
32  var eventSystem = new GameObject();
33  eventSystem.name = "EventSystem";
34  eventSystem.AddComponent<EventSystem>();
35  eventSystem.AddComponent<StandaloneInputModule>();
36  return canvas.transform;
37  }
38  }
39  else
40  {
41  return selectObj.transform;
42  }
43  }
44 
45  private static string GetName(Transform parent, string name)
46  {
47  if (parent.Find(name) == null) return name;
48  for (int i = 1; i <= 10; i++)
49  {
50  var newName = string.Format("{0} ({1})", name, i);
51  if (parent.Find(newName) == null)
52  {
53  return newName;
54  }
55  }
56  return name;
57  }
58 
59  public static void AddChart<T>(string chartName) where T : BaseChart
60  {
61  var parent = GetParent();
62  if (parent == null) return;
63  var chart = new GameObject();
64  chart.name = GetName(parent, chartName);
65  chart.AddComponent<T>();
66  chart.transform.SetParent(parent);
67  chart.transform.localScale = Vector3.one;
68  chart.transform.localPosition = Vector3.zero;
69  var rect = chart.GetComponent<RectTransform>();
70  rect.anchorMin = new Vector2(0.5f, 0.5f);
71  rect.anchorMax = new Vector2(0.5f, 0.5f);
72  rect.pivot = new Vector2(0.5f, 0.5f);
73  Selection.activeGameObject = chart;
74  EditorUtility.SetDirty(chart);
75  }
76 
77  [MenuItem("XCharts/LineChart", priority = 44)]
78  [MenuItem("GameObject/XCharts/LineChart", priority = 44)]
79  public static void AddLineChart()
80  {
81  AddChart<LineChart>("LineChart");
82  }
83 
84  [MenuItem("XCharts/BarChart", priority = 45)]
85  [MenuItem("GameObject/XCharts/BarChart", priority = 45)]
86  public static void AddBarChart()
87  {
88  AddChart<BarChart>("BarChart");
89  }
90 
91  [MenuItem("XCharts/PieChart", priority = 46)]
92  [MenuItem("GameObject/XCharts/PieChart", priority = 46)]
93  public static void AddPieChart()
94  {
95  AddChart<PieChart>("PieChart");
96  }
97 
98  [MenuItem("XCharts/RadarChart", priority = 47)]
99  [MenuItem("GameObject/XCharts/RadarChart", priority = 47)]
100  public static void AddRadarChart()
101  {
102  AddChart<RadarChart>("RadarChart");
103  }
104 
105  [MenuItem("XCharts/ScatterChart", priority = 48)]
106  [MenuItem("GameObject/XCharts/ScatterChart", priority = 48)]
107  public static void AddScatterChart()
108  {
109  AddChart<ScatterChart>("ScatterChart");
110  }
111 
112  [MenuItem("XCharts/HeatmapChart", priority = 49)]
113  [MenuItem("GameObject/XCharts/HeatmapChart", priority = 49)]
114  public static void AddHeatmapChart()
115  {
116  AddChart<HeatmapChart>("HeatmapChart");
117  }
118 
119  [MenuItem("XCharts/GaugeChart", priority = 50)]
120  [MenuItem("GameObject/XCharts/GaugeChart", priority = 50)]
121  public static void AddGaugeChart()
122  {
123  AddChart<GaugeChart>("GaugeChart");
124  }
125 
126  [MenuItem("XCharts/RingChart", priority = 51)]
127  [MenuItem("GameObject/XCharts/RingChart", priority = 51)]
128  public static void AddRingChart()
129  {
130  AddChart<RingChart>("RingChart");
131  }
132 
133  [MenuItem("XCharts/PolarChart", priority = 52)]
134  [MenuItem("GameObject/XCharts/PolarChart", priority = 52)]
135  public static void AddPolarChart()
136  {
137  AddChart<PolarChart>("PolarChart");
138  }
139 
140  [MenuItem("XCharts/LiquidChart", priority = 53)]
141  [MenuItem("GameObject/XCharts/LiquidChart", priority = 53)]
142  public static void AddLiquidChart()
143  {
144  AddChart<LiquidChart>("LiquidChart");
145  }
146 
147  [MenuItem("XCharts/CandlestickChart", priority = 54)]
148  [MenuItem("GameObject/XCharts/CandlestickChart", priority = 54)]
149  public static void CandlestickChart()
150  {
151  AddChart<CandlestickChart>("CandlestickChart");
152  }
153 
154  [MenuItem("XCharts/Themes Reload")]
155  public static void ReloadTheme()
156  {
157  XThemeMgr.ReloadThemeList();
158  }
159 
160  [MenuItem("XCharts/TextMeshPro Enable")]
161  public static void EnableTextMeshPro()
162  {
163  if (!XChartsMgr.IsExistTMPAssembly())
164  {
165  Debug.LogError("TextMeshPro is not in the project, please import TextMeshPro package first.");
166  return;
167  }
168  XChartsMgr.EnableTextMeshPro();
169  XChartsMgr.ModifyTMPRefence();
170  }
171 
172  [MenuItem("XCharts/TextMeshPro Disable")]
173  public static void DisableTextMeshPro()
174  {
175  XChartsMgr.ModifyTMPRefence(true);
176  XChartsMgr.DisableTextMeshPro();
177  }
178  }
179 }
XCharts
Definition: RewardChart.cs:14
XCharts.CandlestickChart
Definition: CandlestickChart.cs:17
XCharts.XChartEditor
Definition: XChartEditor.cs:15
XCharts.XChartsMgr
Definition: XChartsMgr.cs:34
XCharts.BaseChart
The base class of all charts. 所有Chart的基类。
Definition: BaseChart_API.cs:21