| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 | using System;using System.Collections.Generic;using UnityEditor;using UnityEngine;using UnityEngine.Assertions;using XCharts.Runtime;namespace XCharts.Editor{    public class SerieBaseEditor    {        internal BaseChart chart { get; private set; }        internal Serie serie { get; private set; }        //Editor m_Inspector;        internal SerializedProperty baseProperty;        internal SerializedProperty showProperty;        internal List<HeaderMenuInfo> menus = new List<HeaderMenuInfo>();        internal List<HeaderMenuInfo> serieDataMenus = new List<HeaderMenuInfo>();        protected Dictionary<string, Type> m_CoordOptionsDic;        protected List<string> m_CoordOptionsNames;        private string m_DisplayName;        internal void Init(BaseChart chart, Serie target, SerializedProperty property, UnityEditor.Editor inspector)        {            this.chart = chart;            this.serie = target;            this.baseProperty = property;            m_DisplayName = string.Format("Serie {0}: {1}", serie.index, serie.GetType().Name);            //m_Inspector = inspector;            showProperty = baseProperty.FindPropertyRelative("m_Show");            if (showProperty == null)                showProperty = baseProperty.FindPropertyRelative("m_Enable");            OnEnable();            if (serie.GetType().IsDefined(typeof(CoordOptionsAttribute), false))            {                var attribute = serie.GetType().GetAttribute<CoordOptionsAttribute>();                m_CoordOptionsDic = new Dictionary<string, Type>();                m_CoordOptionsNames = new List<string>();                if (attribute.type0 != null)                {                    m_CoordOptionsDic[attribute.type0.Name] = attribute.type0;                    m_CoordOptionsNames.Add(attribute.type0.Name);                }                if (attribute.type1 != null)                {                    m_CoordOptionsDic[attribute.type1.Name] = attribute.type1;                    m_CoordOptionsNames.Add(attribute.type1.Name);                }                if (attribute.type2 != null)                {                    m_CoordOptionsDic[attribute.type2.Name] = attribute.type2;                    m_CoordOptionsNames.Add(attribute.type2.Name);                }                if (attribute.type3 != null)                {                    m_CoordOptionsDic[attribute.type3.Name] = attribute.type3;                    m_CoordOptionsNames.Add(attribute.type3.Name);                }            }        }        public virtual void OnEnable()        { }        public virtual void OnDisable()        { }        internal void OnInternalInspectorGUI()        {            OnInspectorGUI();            EditorGUILayout.Space();        }        public virtual void OnInspectorGUI()        { }        protected virtual void DrawExtendeds()        { }        public virtual string GetDisplayTitle()        {            // var title = string.Format("serie {0}: {1}", serie.index, serie.GetType().Name);            // return ObjectNames.NicifyVariableName(title);            return m_DisplayName;        }        internal SerializedProperty FindProperty(string path)        {            return baseProperty.FindPropertyRelative(path);        }        protected SerializedProperty PropertyField(string path)        {            Assert.IsNotNull(path);            var property = FindProperty(path);            Assert.IsNotNull(property, "Can't find:" + path);            var title = ChartEditorHelper.GetContent(property.displayName);            PropertyField(property, title);            return property;        }        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)        {            //TODO:            PropertyField(relativePropName);        }        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 void PropertyFieldLimitMin(string relativePropName, double min)        {            var prop = PropertyField(relativePropName);            switch (prop.propertyType)            {                case SerializedPropertyType.Float:                    if (prop.floatValue < min)                        prop.floatValue = (float) min;                    break;                case SerializedPropertyType.Integer:                    if (prop.intValue < min)                        prop.intValue = (int) min;                    break;            }        }        protected void PropertyFieldLimitMax(string relativePropName, int max)        {            var prop = PropertyField(relativePropName);            switch (prop.propertyType)            {                case SerializedPropertyType.Float:                    if (prop.floatValue > max)                        prop.floatValue = (float) max;                    break;                case SerializedPropertyType.Integer:                    if (prop.intValue > max)                        prop.intValue = (int) max;                    break;            }        }    }}
 |