| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 | using System.Collections.Generic;using UnityEditor;using UnityEngine;using UnityEngine.Assertions;using XCharts.Runtime;namespace XCharts.Editor{    public class BaseGraphEditor : UnityEditor.Editor    {        class Styles        {            public static readonly GUIContent btnAddComponent = new GUIContent("Add Main Component", "");            public static readonly GUIContent btnRebuildChartObject = new GUIContent("Rebuild Object", "");            public static readonly GUIContent btnSaveAsImage = new GUIContent("Save As Image", "");            public static readonly GUIContent btnCheckWarning = new GUIContent("Check Warning", "");            public static readonly GUIContent btnHideWarning = new GUIContent("Hide Warning", "");        }        public BaseGraph m_BaseGraph;        public static T AddUIComponent<T>(string chartName) where T : BaseGraph        {            return XChartsEditor.AddGraph<T>(chartName);        }        protected Dictionary<string, SerializedProperty> m_Properties = new Dictionary<string, SerializedProperty>();        protected virtual void OnEnable()        {            m_Properties.Clear();            m_BaseGraph = (BaseGraph)target;        }        public override void OnInspectorGUI()        {            serializedObject.Update();            PropertyField("m_Script");            OnStartInspectorGUI();            OnDebugInspectorGUI();            serializedObject.ApplyModifiedProperties();        }        protected virtual void OnStartInspectorGUI() { }        protected virtual void OnDebugInspectorGUI()        {            EditorGUILayout.Space();            OnDebugStartInspectorGUI();            OnDebugEndInspectorGUI();        }        protected virtual void OnDebugStartInspectorGUI() { }        protected virtual void OnDebugEndInspectorGUI() { }        protected void PropertyField(string name)        {            if (!m_Properties.ContainsKey(name))            {                var prop = serializedObject.FindProperty(name);                if (prop == null)                {                    Debug.LogError("Property " + name + " not found!");                    return;                }                m_Properties.Add(name, prop);            }            EditorGUILayout.PropertyField(m_Properties[name]);        }        protected void PropertyField(SerializedProperty property)        {            Assert.IsNotNull(property);            var title = ChartEditorHelper.GetContent(property.displayName);            PropertyField(property, title);        }        protected void PropertyField(SerializedProperty property, GUIContent title)        {            EditorGUILayout.PropertyField(property, title);        }        protected void PropertyListField(string relativePropName, bool showOrder = true, params HeaderMenuInfo[] menus)        {            var m_DrawRect = GUILayoutUtility.GetRect(1f, 17f);            var height = 0f;            var prop = FindProperty(relativePropName);            prop.isExpanded = ChartEditorHelper.MakeListWithFoldout(ref m_DrawRect, ref height,                prop, prop.isExpanded, showOrder, true, menus);            if (prop.isExpanded)            {                GUILayoutUtility.GetRect(1f, height - 17);            }        }        protected void PropertyTwoFiled(string relativePropName)        {            var m_DrawRect = GUILayoutUtility.GetRect(1f, 17f);            var prop = FindProperty(relativePropName);            ChartEditorHelper.MakeTwoField(ref m_DrawRect, m_DrawRect.width, prop, prop.displayName);        }        protected SerializedProperty FindProperty(string path)        {            if (!m_Properties.ContainsKey(path))            {                m_Properties.Add(path, serializedObject.FindProperty(path));            }            return m_Properties[path];        }    }}
 |