/******************************************/ /* */ /* Copyright (c) 2018 monitor1394 */ /* https://github.com/monitor1394 */ /* */ /******************************************/ using UnityEditor; using UnityEngine; using UnityEngine.UI; namespace XCharts { public class XChartEditor : EditorWindow { private static Transform GetParent() { GameObject selectObj = Selection.activeGameObject; if (selectObj == null) { var canvas = GameObject.FindObjectOfType(); if (canvas != null) return canvas.transform; else { var canvasObject = new GameObject(); canvasObject.name = "Canvas"; canvas = canvasObject.AddComponent(); canvas.renderMode = RenderMode.ScreenSpaceOverlay; canvasObject.AddComponent(); canvasObject.AddComponent(); return canvas.transform; } } else { return selectObj.transform; } } private static string GetName(Transform parent, string name) { if (parent.Find(name) == null) return name; for (int i = 1; i <= 10; i++) { var newName = string.Format("{0} ({1})", name, i); if (parent.Find(newName) == null) { return newName; } } return name; } private static void AddChart(string chartName) where T : BaseChart { var parent = GetParent(); if (parent == null) return; var chart = new GameObject(); chart.name = GetName(parent, chartName); chart.AddComponent(); chart.transform.SetParent(parent); chart.transform.localScale = Vector3.one; chart.transform.localPosition = Vector3.zero; } [MenuItem("GameObject/XCharts/LineChart", priority = 44)] public static void AddLineChart() { AddChart("LineChart"); } [MenuItem("GameObject/XCharts/BarChart", priority = 45)] public static void AddBarChart() { AddChart("BarChart"); } [MenuItem("GameObject/XCharts/PieChart", priority = 46)] public static void AddPieChart() { AddChart("PieChart"); } [MenuItem("GameObject/XCharts/RadarChart", priority = 47)] public static void AddRadarChart() { AddChart("RadarChart"); } [MenuItem("GameObject/XCharts/ScatterChart", priority = 48)] public static void AddScatterChart() { AddChart("ScatterChart"); } [MenuItem("GameObject/XCharts/HeatmapChart", priority = 49)] public static void AddHeatmapChart() { AddChart("HeatmapChart"); } } }