Пример #1
0
        public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label)
        {
            InitProperty(prop);
            Rect  drawRect          = pos;
            float defaultLabelWidth = EditorGUIUtility.labelWidth;
            float defaultFieldWidth = EditorGUIUtility.fieldWidth;

            drawRect.height = EditorGUIUtility.singleLineHeight;
            int index = ChartEditorHelper.GetIndexFromPath(prop);

            ChartEditorHelper.MakeFoldout(ref drawRect, ref m_RadarModuleToggle, prop, "Radar " + index, null, true);
            drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
            if (ChartEditorHelper.IsToggle(m_RadarModuleToggle, prop))
            {
                ++EditorGUI.indentLevel;

                EditorGUIUtility.labelWidth = defaultLabelWidth;
                EditorGUIUtility.fieldWidth = defaultFieldWidth;
                EditorGUI.PropertyField(drawRect, m_Shape);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                EditorGUI.PropertyField(drawRect, m_PositionType);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;

                EditorGUI.LabelField(drawRect, "Center");
                var startX      = drawRect.x + EditorGUIUtility.labelWidth - EditorGUI.indentLevel * 15;
                var tempWidth   = (pos.width - startX + 35) / 2;
                var centerXRect = new Rect(startX, drawRect.y, tempWidth, drawRect.height);
                var centerYRect = new Rect(centerXRect.x + tempWidth - 20, drawRect.y, tempWidth, drawRect.height);
                while (m_Center.arraySize < 2)
                {
                    m_Center.InsertArrayElementAtIndex(m_Center.arraySize);
                }
                EditorGUI.PropertyField(centerXRect, m_Center.GetArrayElementAtIndex(0), GUIContent.none);
                EditorGUI.PropertyField(centerYRect, m_Center.GetArrayElementAtIndex(1), GUIContent.none);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;

                EditorGUI.PropertyField(drawRect, m_Radius);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                EditorGUI.PropertyField(drawRect, m_SplitNumber);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;

                EditorGUI.PropertyField(drawRect, m_SplitLine);
                drawRect.y += EditorGUI.GetPropertyHeight(m_SplitLine);
                EditorGUI.PropertyField(drawRect, m_SplitArea);
                drawRect.y += EditorGUI.GetPropertyHeight(m_SplitArea);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                ChartEditorHelper.MakeFoldout(ref drawRect, ref m_IndicatorToggle, prop, "Indicators", m_Indicator, false);
                ChartEditorHelper.MakeJsonData(ref drawRect, ref m_IndicatorJsonAreaToggle, ref m_IndicatorJsonAreaText, prop, pos.width, 20);
                drawRect.width = pos.width;
                drawRect.x     = pos.x;
                if (ChartEditorHelper.IsToggle(m_IndicatorToggle, prop))
                {
                    EditorGUI.PropertyField(drawRect, m_IndicatorGap);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    ChartEditorHelper.MakeList(ref drawRect, ref m_IndicatorSize, m_IndicatorList);
                }
                --EditorGUI.indentLevel;
            }
        }
Пример #2
0
        public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label)
        {
            Rect drawRect = pos;

            drawRect.height = EditorGUIUtility.singleLineHeight;
            SerializedProperty show            = prop.FindPropertyRelative("m_Show");
            SerializedProperty m_SelectedMode  = prop.FindPropertyRelative("m_SelectedMode");
            SerializedProperty orient          = prop.FindPropertyRelative("m_Orient");
            SerializedProperty location        = prop.FindPropertyRelative("m_Location");
            SerializedProperty itemWidth       = prop.FindPropertyRelative("m_ItemWidth");
            SerializedProperty itemHeight      = prop.FindPropertyRelative("m_ItemHeight");
            SerializedProperty itemGap         = prop.FindPropertyRelative("m_ItemGap");
            SerializedProperty m_ItemAutoColor = prop.FindPropertyRelative("m_ItemAutoColor");
            SerializedProperty m_Formatter     = prop.FindPropertyRelative("m_Formatter");
            SerializedProperty m_Data          = prop.FindPropertyRelative("m_Data");
            SerializedProperty m_Icons         = prop.FindPropertyRelative("m_Icons");
            SerializedProperty m_TextStyle     = prop.FindPropertyRelative("m_TextStyle");

            ChartEditorHelper.MakeFoldout(ref drawRect, ref m_LegendModuleToggle, "Legend", show);
            drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
            if (m_LegendModuleToggle)
            {
                ++EditorGUI.indentLevel;
                EditorGUI.PropertyField(drawRect, itemWidth);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                EditorGUI.PropertyField(drawRect, itemHeight);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                EditorGUI.PropertyField(drawRect, itemGap);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                EditorGUI.PropertyField(drawRect, m_ItemAutoColor);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                EditorGUI.PropertyField(drawRect, m_SelectedMode);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                EditorGUI.PropertyField(drawRect, orient);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                EditorGUI.PropertyField(drawRect, location);
                drawRect.y += EditorGUI.GetPropertyHeight(location);
                EditorGUI.PropertyField(drawRect, m_Formatter);
                drawRect.y    += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                drawRect.width = EditorGUIUtility.labelWidth + 10;
                m_DataFoldout  = EditorGUI.Foldout(drawRect, m_DataFoldout, "Data");
                ChartEditorHelper.MakeJsonData(ref drawRect, ref m_ShowJsonDataArea, ref m_JsonDataAreaText, prop, pos.width);
                drawRect.width = pos.width;
                if (m_DataFoldout)
                {
                    ChartEditorHelper.MakeList(ref drawRect, ref m_DataSize, m_Data);
                }
                m_IconsFoldout = EditorGUI.Foldout(drawRect, m_IconsFoldout, "Icons");
                drawRect.y    += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                if (m_IconsFoldout)
                {
                    ChartEditorHelper.MakeList(ref drawRect, ref m_IconsSize, m_Icons);
                }
                EditorGUI.PropertyField(drawRect, m_TextStyle);
                drawRect.y += EditorGUI.GetPropertyHeight(m_TextStyle);
                --EditorGUI.indentLevel;
            }
        }
Пример #3
0
        public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label)
        {
            Rect drawRect = pos;

            drawRect.height = EditorGUIUtility.singleLineHeight;
            SerializedProperty show = prop.FindPropertyRelative("m_Show");
            //SerializedProperty type = prop.FindPropertyRelative("m_Type");
            SerializedProperty name   = prop.FindPropertyRelative("m_Name");
            SerializedProperty stack  = prop.FindPropertyRelative("m_Stack");
            SerializedProperty m_Data = prop.FindPropertyRelative("m_Data");

            string moduleName = "Serie " + prop.displayName.Split(' ')[1];

            if (!string.IsNullOrEmpty(name.stringValue))
            {
                moduleName += ":" + name.stringValue;
            }
            m_SerieModuleToggle = EditorGUI.Foldout(drawRect, m_SerieModuleToggle, "Serie");
            drawRect.y         += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
            if (m_SerieModuleToggle)
            {
                ++EditorGUI.indentLevel;
                EditorGUI.PropertyField(drawRect, show);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                EditorGUI.PropertyField(drawRect, name);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                EditorGUI.PropertyField(drawRect, stack);
                drawRect.y    += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                drawRect.width = EditorGUIUtility.labelWidth + 10;
                m_DataFoldout  = EditorGUI.Foldout(drawRect, m_DataFoldout, "Data");
                ChartEditorHelper.MakeJsonData(ref drawRect, ref m_ShowJsonDataArea, ref m_JsonDataAreaText, prop);
                drawRect.width = pos.width;
                if (m_DataFoldout)
                {
                    ChartEditorHelper.MakeList(ref drawRect, ref m_DataSize, m_Data);
                }
                --EditorGUI.indentLevel;
            }
        }
Пример #4
0
        public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label)
        {
            Rect drawRect = pos;

            drawRect.height = EditorGUIUtility.singleLineHeight;
            SerializedProperty show         = prop.FindPropertyRelative("m_Show");
            SerializedProperty type         = prop.FindPropertyRelative("m_Type");
            SerializedProperty name         = prop.FindPropertyRelative("m_Name");
            SerializedProperty stack        = prop.FindPropertyRelative("m_Stack");
            SerializedProperty m_AxisIndex  = prop.FindPropertyRelative("m_AxisIndex");
            SerializedProperty m_RadarIndex = prop.FindPropertyRelative("m_RadarIndex");
            SerializedProperty m_MinShow    = prop.FindPropertyRelative("m_MinShow");
            SerializedProperty m_MaxShow    = prop.FindPropertyRelative("m_MaxShow");
            SerializedProperty m_MaxCache   = prop.FindPropertyRelative("m_MaxCache");

            SerializedProperty m_LineStyle       = prop.FindPropertyRelative("m_LineStyle");
            SerializedProperty m_ItemStyle       = prop.FindPropertyRelative("m_ItemStyle");
            SerializedProperty m_LineArrow       = prop.FindPropertyRelative("m_LineArrow");
            SerializedProperty m_LineType        = prop.FindPropertyRelative("m_LineType");
            SerializedProperty m_SampleDist      = prop.FindPropertyRelative("m_SampleDist");
            SerializedProperty m_SampleType      = prop.FindPropertyRelative("m_SampleType");
            SerializedProperty m_SampleAverage   = prop.FindPropertyRelative("m_SampleAverage");
            SerializedProperty m_BarType         = prop.FindPropertyRelative("m_BarType");
            SerializedProperty m_BarPercentStack = prop.FindPropertyRelative("m_BarPercentStack");
            SerializedProperty m_BarWidth        = prop.FindPropertyRelative("m_BarWidth");
            SerializedProperty m_BarGap          = prop.FindPropertyRelative("m_BarGap");
            SerializedProperty m_BarZebraWidth   = prop.FindPropertyRelative("m_BarZebraWidth");
            SerializedProperty m_BarZebraGap     = prop.FindPropertyRelative("m_BarZebraGap");
            SerializedProperty m_AreaStyle       = prop.FindPropertyRelative("m_AreaStyle");
            SerializedProperty m_Symbol          = prop.FindPropertyRelative("m_Symbol");
            SerializedProperty m_RoseType        = prop.FindPropertyRelative("m_RoseType");
            SerializedProperty m_Space           = prop.FindPropertyRelative("m_Space");
            SerializedProperty m_Center          = prop.FindPropertyRelative("m_Center");
            SerializedProperty m_Radius          = prop.FindPropertyRelative("m_Radius");
            SerializedProperty m_Label           = prop.FindPropertyRelative("m_Label");
            SerializedProperty m_Emphasis        = prop.FindPropertyRelative("m_Emphasis");
            SerializedProperty m_Animation       = prop.FindPropertyRelative("m_Animation");
            SerializedProperty m_DataDimension   = prop.FindPropertyRelative("m_ShowDataDimension");
            SerializedProperty m_ShowDataName    = prop.FindPropertyRelative("m_ShowDataName");
            SerializedProperty m_ShowDataIcon    = prop.FindPropertyRelative("m_ShowDataIcon");
            SerializedProperty m_Datas           = prop.FindPropertyRelative("m_Data");

            int    index      = InitToggle(prop);
            string moduleName = "Serie " + index;
            var    toggle     = ChartEditorHelper.MakeFoldout(ref drawRect, ref m_SerieModuleToggle, prop, moduleName, show);

            if (!toggle)
            {
                drawRect.x     = EditorGUIUtility.labelWidth - (EditorGUI.indentLevel - 1) * 15 - 2 + 20;
                drawRect.width = pos.width - drawRect.x + 15;
                EditorGUI.PropertyField(drawRect, type, GUIContent.none);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
            }
            else
            {
                var serieType = (SerieType)type.enumValueIndex;

                ++EditorGUI.indentLevel;
                drawRect.x     = pos.x;
                drawRect.width = pos.width;
                drawRect.y    += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                EditorGUI.PropertyField(drawRect, type);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                EditorGUI.PropertyField(drawRect, name);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                EditorGUI.PropertyField(drawRect, stack);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                if (serieType == SerieType.Radar)
                {
                    EditorGUI.PropertyField(drawRect, m_RadarIndex);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                }
                else
                {
                    EditorGUI.PropertyField(drawRect, m_AxisIndex);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                }
                EditorGUI.PropertyField(drawRect, m_MinShow);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                EditorGUI.PropertyField(drawRect, m_MaxShow);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                EditorGUI.PropertyField(drawRect, m_MaxCache);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                if (m_MinShow.intValue < 0)
                {
                    m_MinShow.intValue = 0;
                }
                if (m_MinShow.intValue < 0)
                {
                    m_MinShow.intValue = 0;
                }
                if (m_MaxCache.intValue < 0)
                {
                    m_MaxCache.intValue = 0;
                }
                if (serieType == SerieType.Line)
                {
                    EditorGUI.PropertyField(drawRect, m_LineType);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_SampleDist);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_SampleType);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_SampleAverage);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                }
                if (serieType == SerieType.Line ||
                    serieType == SerieType.Scatter ||
                    serieType == SerieType.EffectScatter ||
                    serieType == SerieType.Radar)
                {
                    EditorGUI.PropertyField(drawRect, m_Symbol);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_Symbol);
                }
                if (serieType == SerieType.Bar)
                {
                    EditorGUI.PropertyField(drawRect, m_BarType);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_BarPercentStack);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_BarWidth);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_BarGap);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_BarZebraWidth);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_BarZebraGap);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                }
                if (serieType == SerieType.Pie)
                {
                    EditorGUI.PropertyField(drawRect, m_RoseType);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_Space);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;

                    ChartEditorHelper.MakeTwoField(ref drawRect, pos.width, m_Center, "Center");
                    ChartEditorHelper.MakeTwoField(ref drawRect, pos.width, m_Radius, "Radius");
                }

                EditorGUI.PropertyField(drawRect, m_LineStyle);
                drawRect.y += EditorGUI.GetPropertyHeight(m_LineStyle);
                if (serieType == SerieType.Line)
                {
                    EditorGUI.PropertyField(drawRect, m_LineArrow);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_LineArrow);
                }
                EditorGUI.PropertyField(drawRect, m_ItemStyle);
                drawRect.y += EditorGUI.GetPropertyHeight(m_ItemStyle);
                EditorGUI.PropertyField(drawRect, m_AreaStyle);
                drawRect.y += EditorGUI.GetPropertyHeight(m_AreaStyle);
                EditorGUI.PropertyField(drawRect, m_Label);
                drawRect.y += EditorGUI.GetPropertyHeight(m_Label);
                EditorGUI.PropertyField(drawRect, m_Emphasis);
                drawRect.y += EditorGUI.GetPropertyHeight(m_Emphasis);
                EditorGUI.PropertyField(drawRect, m_Animation);
                drawRect.y          += EditorGUI.GetPropertyHeight(m_Animation);
                drawRect.width       = EditorGUIUtility.labelWidth + 10;
                m_DataFoldout[index] = EditorGUI.Foldout(drawRect, m_DataFoldout[index], "Data");
                ChartEditorHelper.MakeJsonData(ref drawRect, ref m_ShowJsonDataArea, ref m_JsonDataAreaText, prop, pos.width);
                drawRect.width = pos.width;
                if (m_DataFoldout[index])
                {
                    EditorGUI.indentLevel++;

                    float nameWid = 42;
                    EditorGUI.PropertyField(new Rect(drawRect.x, drawRect.y, pos.width - 2 * nameWid - 2, pos.height), m_DataDimension);
                    var nameRect = new Rect(pos.width - 2 * nameWid + 14, drawRect.y, nameWid, pos.height);
                    if (GUI.Button(nameRect, new GUIContent("Name")))
                    {
                        m_ShowDataName.boolValue = !m_ShowDataName.boolValue;
                    }
                    var iconRect = new Rect(pos.width - nameWid + 14, drawRect.y, nameWid, pos.height);
                    if (GUI.Button(iconRect, new GUIContent("Other")))
                    {
                        m_ShowDataIcon.boolValue = !m_ShowDataIcon.boolValue;
                    }
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;

                    var listSize = m_Datas.arraySize;
                    listSize    = EditorGUI.IntField(drawRect, "Size", listSize);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;

                    if (listSize < 0)
                    {
                        listSize = 0;
                    }
                    if (m_DataDimension.intValue < 1)
                    {
                        m_DataDimension.intValue = 1;
                    }
                    int  dimension    = m_DataDimension.intValue;
                    bool showName     = m_ShowDataName.boolValue;
                    bool showIcon     = m_ShowDataIcon.boolValue;
                    bool showSelected = (serieType == SerieType.Pie);
                    if (listSize != m_Datas.arraySize)
                    {
                        while (listSize > m_Datas.arraySize)
                        {
                            m_Datas.InsertArrayElementAtIndex(m_Datas.arraySize);
                        }
                        while (listSize < m_Datas.arraySize)
                        {
                            m_Datas.DeleteArrayElementAtIndex(m_Datas.arraySize - 1);
                        }
                    }
                    if (listSize > 30)
                    {
                        int num = listSize > 10 ? 10 : listSize;
                        for (int i = 0; i < num; i++)
                        {
                            DrawDataElement(ref drawRect, dimension, m_Datas, showName, showIcon, showSelected, i, pos.width);
                        }
                        if (num >= 10)
                        {
                            EditorGUI.LabelField(drawRect, "...");
                            drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                            DrawDataElement(ref drawRect, dimension, m_Datas, showName, showIcon, showSelected, listSize - 1, pos.width);
                        }
                    }
                    else
                    {
                        for (int i = 0; i < m_Datas.arraySize; i++)
                        {
                            DrawDataElement(ref drawRect, dimension, m_Datas, showName, showIcon, showSelected, i, pos.width);
                        }
                    }
                    EditorGUI.indentLevel--;
                }
                --EditorGUI.indentLevel;
            }
        }
Пример #5
0
        public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label)
        {
            Rect drawRect = pos;

            drawRect.height = EditorGUIUtility.singleLineHeight;

            SerializedProperty m_Show          = prop.FindPropertyRelative("m_Show");
            SerializedProperty m_Type          = prop.FindPropertyRelative("m_Type");
            SerializedProperty m_SplitNumber   = prop.FindPropertyRelative("m_SplitNumber");
            SerializedProperty m_TextRotation  = prop.FindPropertyRelative("m_TextRotation");
            SerializedProperty m_ShowSplitLine = prop.FindPropertyRelative("m_ShowSplitLine");
            SerializedProperty m_SplitLineType = prop.FindPropertyRelative("m_SplitLineType");
            SerializedProperty m_BoundaryGap   = prop.FindPropertyRelative("m_BoundaryGap");
            SerializedProperty m_Data          = prop.FindPropertyRelative("m_Data");
            SerializedProperty m_AxisTick      = prop.FindPropertyRelative("m_AxisTick");
            SerializedProperty m_MinMaxType    = prop.FindPropertyRelative("m_MinMaxType");
            SerializedProperty m_Min           = prop.FindPropertyRelative("m_Min");
            SerializedProperty m_Max           = prop.FindPropertyRelative("m_Max");

            ChartEditorHelper.MakeFoldout(ref drawRect, ref m_AxisModuleToggle, prop.displayName, m_Show);
            drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
            if (m_AxisModuleToggle)
            {
                Axis.AxisType type = (Axis.AxisType)m_Type.enumValueIndex;
                EditorGUI.indentLevel++;
                EditorGUI.PropertyField(drawRect, m_Type);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                if (type == Axis.AxisType.Value)
                {
                    EditorGUI.PropertyField(drawRect, m_MinMaxType);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    Axis.AxisMinMaxType minMaxType = (Axis.AxisMinMaxType)m_MinMaxType.enumValueIndex;
                    switch (minMaxType)
                    {
                    case Axis.AxisMinMaxType.Default:
                        break;

                    case Axis.AxisMinMaxType.MinMax:
                        break;

                    case Axis.AxisMinMaxType.Custom:
                        EditorGUI.indentLevel++;
                        EditorGUI.PropertyField(drawRect, m_Min);
                        drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                        EditorGUI.PropertyField(drawRect, m_Max);
                        drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                        EditorGUI.indentLevel--;
                        break;
                    }
                }
                EditorGUI.PropertyField(drawRect, m_SplitNumber);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                EditorGUI.PropertyField(drawRect, m_TextRotation);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                if (m_ShowSplitLine.boolValue)
                {
                    drawRect.width = EditorGUIUtility.labelWidth + 10;
                    EditorGUI.PropertyField(drawRect, m_ShowSplitLine);
                    //drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    drawRect.x     = EditorGUIUtility.labelWidth + 35;
                    drawRect.width = EditorGUIUtility.currentViewWidth - EditorGUIUtility.labelWidth - 55;
                    EditorGUI.PropertyField(drawRect, m_SplitLineType, GUIContent.none);
                    drawRect.x     = pos.x;
                    drawRect.width = pos.width;
                    drawRect.y    += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                }
                else
                {
                    EditorGUI.PropertyField(drawRect, m_ShowSplitLine);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                }
                EditorGUI.PropertyField(drawRect, m_BoundaryGap);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                EditorGUI.PropertyField(drawRect, m_AxisTick);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                drawRect.y += EditorGUI.GetPropertyHeight(m_AxisTick);

                if (type == Axis.AxisType.Category)
                {
                    drawRect.width = EditorGUIUtility.labelWidth + 10;
                    m_DataFoldout  = EditorGUI.Foldout(drawRect, m_DataFoldout, "Data");
                    ChartEditorHelper.MakeJsonData(ref drawRect, ref m_ShowJsonDataArea, ref m_JsonDataAreaText, prop);
                    drawRect.width = pos.width;
                    if (m_DataFoldout)
                    {
                        ChartEditorHelper.MakeList(ref drawRect, ref m_DataSize, m_Data);
                    }
                }
                EditorGUI.indentLevel--;
            }
        }
Пример #6
0
        public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label)
        {
            Rect drawRect = pos;

            drawRect.height = EditorGUIUtility.singleLineHeight;
            SerializedProperty show         = prop.FindPropertyRelative("m_Show");
            SerializedProperty type         = prop.FindPropertyRelative("m_Type");
            SerializedProperty name         = prop.FindPropertyRelative("m_Name");
            SerializedProperty stack        = prop.FindPropertyRelative("m_Stack");
            SerializedProperty m_AxisIndex  = prop.FindPropertyRelative("m_AxisIndex");
            SerializedProperty m_RadarType  = prop.FindPropertyRelative("m_RadarType");
            SerializedProperty m_RadarIndex = prop.FindPropertyRelative("m_RadarIndex");
            SerializedProperty m_MinShow    = prop.FindPropertyRelative("m_MinShow");
            SerializedProperty m_MaxShow    = prop.FindPropertyRelative("m_MaxShow");
            SerializedProperty m_MaxCache   = prop.FindPropertyRelative("m_MaxCache");

            SerializedProperty m_LineStyle       = prop.FindPropertyRelative("m_LineStyle");
            SerializedProperty m_ItemStyle       = prop.FindPropertyRelative("m_ItemStyle");
            SerializedProperty m_LineArrow       = prop.FindPropertyRelative("m_LineArrow");
            SerializedProperty m_LineType        = prop.FindPropertyRelative("m_LineType");
            SerializedProperty m_SampleDist      = prop.FindPropertyRelative("m_SampleDist");
            SerializedProperty m_SampleType      = prop.FindPropertyRelative("m_SampleType");
            SerializedProperty m_SampleAverage   = prop.FindPropertyRelative("m_SampleAverage");
            SerializedProperty m_BarType         = prop.FindPropertyRelative("m_BarType");
            SerializedProperty m_BarPercentStack = prop.FindPropertyRelative("m_BarPercentStack");
            SerializedProperty m_BarWidth        = prop.FindPropertyRelative("m_BarWidth");
            SerializedProperty m_BarGap          = prop.FindPropertyRelative("m_BarGap");
            SerializedProperty m_BarZebraWidth   = prop.FindPropertyRelative("m_BarZebraWidth");
            SerializedProperty m_BarZebraGap     = prop.FindPropertyRelative("m_BarZebraGap");
            SerializedProperty m_AreaStyle       = prop.FindPropertyRelative("m_AreaStyle");
            SerializedProperty m_Symbol          = prop.FindPropertyRelative("m_Symbol");
            SerializedProperty m_RoseType        = prop.FindPropertyRelative("m_RoseType");
            SerializedProperty m_Space           = prop.FindPropertyRelative("m_Space");
            SerializedProperty m_Center          = prop.FindPropertyRelative("m_Center");
            SerializedProperty m_Radius          = prop.FindPropertyRelative("m_Radius");
            SerializedProperty m_Label           = prop.FindPropertyRelative("m_Label");
            SerializedProperty m_Emphasis        = prop.FindPropertyRelative("m_Emphasis");
            SerializedProperty m_Animation       = prop.FindPropertyRelative("m_Animation");
            SerializedProperty m_DataDimension   = prop.FindPropertyRelative("m_ShowDataDimension");
            SerializedProperty m_ShowDataName    = prop.FindPropertyRelative("m_ShowDataName");
            SerializedProperty m_ShowDataIcon    = prop.FindPropertyRelative("m_ShowDataIcon");
            SerializedProperty m_Min             = prop.FindPropertyRelative("m_Min");
            SerializedProperty m_Max             = prop.FindPropertyRelative("m_Max");
            SerializedProperty m_StartAngle      = prop.FindPropertyRelative("m_StartAngle");
            SerializedProperty m_EndAngle        = prop.FindPropertyRelative("m_EndAngle");
            SerializedProperty m_RingGap         = prop.FindPropertyRelative("m_RingGap");
            SerializedProperty m_SplitNumber     = prop.FindPropertyRelative("m_SplitNumber");
            SerializedProperty m_Clockwise       = prop.FindPropertyRelative("m_Clockwise");
            SerializedProperty m_RoundCap        = prop.FindPropertyRelative("m_RoundCap");
            SerializedProperty m_GaugeType       = prop.FindPropertyRelative("m_GaugeType");
            SerializedProperty m_GaugeAxis       = prop.FindPropertyRelative("m_GaugeAxis");
            SerializedProperty m_GaugePointer    = prop.FindPropertyRelative("m_GaugePointer");
            SerializedProperty m_TitleStyle      = prop.FindPropertyRelative("m_TitleStyle");
            SerializedProperty m_Clip            = prop.FindPropertyRelative("m_Clip");
            SerializedProperty m_Ignore          = prop.FindPropertyRelative("m_Ignore");
            SerializedProperty m_IgnoreValue     = prop.FindPropertyRelative("m_IgnoreValue");
            SerializedProperty m_Datas           = prop.FindPropertyRelative("m_Data");

            int    index      = InitToggle(prop);
            string moduleName = "Serie " + index;
            var    toggle     = ChartEditorHelper.MakeFoldout(ref drawRect, ref m_SerieModuleToggle, prop, moduleName, show);

            if (!toggle)
            {
                var orderButton = 46;
                var gap         = 4;
                drawRect.x    += EditorGUIUtility.labelWidth + gap;
                drawRect.width = pos.width - drawRect.x + ChartEditorHelper.BOOL_WIDTH - orderButton;
                EditorGUI.PropertyField(drawRect, type, GUIContent.none);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
            }
            else
            {
                var serieType = (SerieType)type.enumValueIndex;

                ++EditorGUI.indentLevel;
                drawRect.x     = pos.x;
                drawRect.width = pos.width;
                drawRect.y    += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                EditorGUI.PropertyField(drawRect, type);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                EditorGUI.PropertyField(drawRect, name);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;

                switch (serieType)
                {
                case SerieType.Line:
                    EditorGUI.PropertyField(drawRect, stack);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_AxisIndex);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_MinShow);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_MaxShow);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_MaxCache);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    if (m_MinShow.intValue < 0)
                    {
                        m_MinShow.intValue = 0;
                    }
                    if (m_MinShow.intValue < 0)
                    {
                        m_MinShow.intValue = 0;
                    }
                    if (m_MaxCache.intValue < 0)
                    {
                        m_MaxCache.intValue = 0;
                    }
                    EditorGUI.PropertyField(drawRect, m_LineType);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_SampleDist);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_SampleType);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_SampleAverage);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_Clip);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_Ignore);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_IgnoreValue);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_Symbol);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_Symbol);
                    EditorGUI.PropertyField(drawRect, m_LineStyle);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_LineStyle);
                    EditorGUI.PropertyField(drawRect, m_LineArrow);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_LineArrow);
                    EditorGUI.PropertyField(drawRect, m_ItemStyle);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_ItemStyle);
                    EditorGUI.PropertyField(drawRect, m_AreaStyle);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_AreaStyle);
                    EditorGUI.PropertyField(drawRect, m_Label);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_Label);
                    EditorGUI.PropertyField(drawRect, m_Emphasis);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_Emphasis);
                    break;

                case SerieType.Bar:
                    EditorGUI.PropertyField(drawRect, stack);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_AxisIndex);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_MinShow);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_MaxShow);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_MaxCache);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    if (m_MinShow.intValue < 0)
                    {
                        m_MinShow.intValue = 0;
                    }
                    if (m_MinShow.intValue < 0)
                    {
                        m_MinShow.intValue = 0;
                    }
                    if (m_MaxCache.intValue < 0)
                    {
                        m_MaxCache.intValue = 0;
                    }
                    EditorGUI.PropertyField(drawRect, m_BarType);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_BarPercentStack);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_BarWidth);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_BarGap);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_BarZebraWidth);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_BarZebraGap);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_Clip);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_Ignore);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_IgnoreValue);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_ItemStyle);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_ItemStyle);
                    EditorGUI.PropertyField(drawRect, m_Label);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_Label);
                    EditorGUI.PropertyField(drawRect, m_Emphasis);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_Emphasis);
                    break;

                case SerieType.Pie:
                    EditorGUI.PropertyField(drawRect, m_RoseType);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_Space);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    ChartEditorHelper.MakeTwoField(ref drawRect, pos.width, m_Center, "Center");
                    ChartEditorHelper.MakeTwoField(ref drawRect, pos.width, m_Radius, "Radius");
                    EditorGUI.PropertyField(drawRect, m_RoundCap);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_Label);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_Label);
                    EditorGUI.PropertyField(drawRect, m_Emphasis);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_Emphasis);
                    break;

                case SerieType.Ring:
                    ChartEditorHelper.MakeTwoField(ref drawRect, pos.width, m_Center, "Center");
                    ChartEditorHelper.MakeTwoField(ref drawRect, pos.width, m_Radius, "Radius");
                    EditorGUI.PropertyField(drawRect, m_StartAngle);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_RingGap);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_RoundCap);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_Clockwise);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_TitleStyle);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_TitleStyle);
                    EditorGUI.PropertyField(drawRect, m_ItemStyle);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_ItemStyle);
                    EditorGUI.PropertyField(drawRect, m_Label);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_Label);
                    EditorGUI.PropertyField(drawRect, m_Emphasis);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_Emphasis);
                    break;

                case SerieType.Radar:
                    EditorGUI.PropertyField(drawRect, m_RadarType);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_RadarIndex);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_Symbol);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_Symbol);
                    EditorGUI.PropertyField(drawRect, m_LineStyle);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_LineStyle);
                    EditorGUI.PropertyField(drawRect, m_ItemStyle);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_ItemStyle);
                    EditorGUI.PropertyField(drawRect, m_AreaStyle);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_AreaStyle);
                    EditorGUI.PropertyField(drawRect, m_Label);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_Label);
                    EditorGUI.PropertyField(drawRect, m_Emphasis);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_Emphasis);
                    break;

                case SerieType.Scatter:
                case SerieType.EffectScatter:
                    EditorGUI.PropertyField(drawRect, m_Clip);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_Symbol);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_Symbol);
                    EditorGUI.PropertyField(drawRect, m_ItemStyle);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_ItemStyle);
                    EditorGUI.PropertyField(drawRect, m_Label);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_Label);
                    EditorGUI.PropertyField(drawRect, m_Emphasis);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_Emphasis);
                    break;

                case SerieType.Heatmap:
                    EditorGUI.PropertyField(drawRect, m_Ignore);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_IgnoreValue);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_ItemStyle);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_ItemStyle);
                    EditorGUI.PropertyField(drawRect, m_Label);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_Label);
                    EditorGUI.PropertyField(drawRect, m_Emphasis);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_Emphasis);
                    break;

                case SerieType.Gauge:
                    EditorGUI.PropertyField(drawRect, m_GaugeType);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    ChartEditorHelper.MakeTwoField(ref drawRect, pos.width, m_Center, "Center");
                    //ChartEditorHelper.MakeTwoField(ref drawRect, pos.width, m_Radius, "Radius");
                    EditorGUI.PropertyField(drawRect, m_Radius.GetArrayElementAtIndex(0), new GUIContent("Radius"));
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_Min);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_Max);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_StartAngle);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_EndAngle);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_SplitNumber);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    if (m_SplitNumber.intValue > 36)
                    {
                        m_SplitNumber.intValue = 36;
                    }
                    EditorGUI.PropertyField(drawRect, m_RoundCap);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_TitleStyle);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_TitleStyle);
                    EditorGUI.PropertyField(drawRect, m_GaugeAxis);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_GaugeAxis);
                    EditorGUI.PropertyField(drawRect, m_GaugePointer);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_GaugePointer);
                    EditorGUI.PropertyField(drawRect, m_ItemStyle);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_ItemStyle);
                    EditorGUI.PropertyField(drawRect, m_Label);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_Label);
                    EditorGUI.PropertyField(drawRect, m_Emphasis);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_Emphasis);
                    break;
                }
                EditorGUI.PropertyField(drawRect, m_Animation);
                drawRect.y          += EditorGUI.GetPropertyHeight(m_Animation);
                drawRect.width       = EditorGUIUtility.labelWidth + 10;
                m_DataFoldout[index] = EditorGUI.Foldout(drawRect, m_DataFoldout[index], "Data");
                ChartEditorHelper.MakeJsonData(ref drawRect, ref m_ShowJsonDataArea, ref m_JsonDataAreaText, prop, pos.width);
                drawRect.width = pos.width;
                if (m_DataFoldout[index])
                {
                    EditorGUI.indentLevel++;

                    float nameWid = 45;
#if UNITY_2019_3_OR_NEWER
                    var gap     = 2;
                    var namegap = 3;
#else
                    var gap     = 0;
                    var namegap = 0;
#endif
                    EditorGUI.PropertyField(new Rect(drawRect.x, drawRect.y, pos.width - 2 * nameWid - 2, pos.height), m_DataDimension);
                    var nameRect = new Rect(pos.width - 2 * nameWid + 14 + gap, drawRect.y, nameWid - gap, pos.height);
                    if (GUI.Button(nameRect, new GUIContent("Name")))
                    {
                        m_ShowDataName.boolValue = !m_ShowDataName.boolValue;
                    }
                    var iconRect = new Rect(pos.width - nameWid + 14, drawRect.y, nameWid + namegap, pos.height);
                    if (GUI.Button(iconRect, new GUIContent("More...")))
                    {
                        m_ShowDataIcon.boolValue = !m_ShowDataIcon.boolValue;
                    }
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;

                    var listSize = m_Datas.arraySize;
                    listSize    = EditorGUI.IntField(drawRect, "Size", listSize);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;

                    if (listSize < 0)
                    {
                        listSize = 0;
                    }
                    if (m_DataDimension.intValue < 1)
                    {
                        m_DataDimension.intValue = 1;
                    }
                    int  dimension    = m_DataDimension.intValue;
                    bool showName     = m_ShowDataName.boolValue;
                    bool showIcon     = m_ShowDataIcon.boolValue;
                    bool showSelected = (serieType == SerieType.Pie);
                    if (listSize != m_Datas.arraySize)
                    {
                        while (listSize > m_Datas.arraySize)
                        {
                            m_Datas.InsertArrayElementAtIndex(m_Datas.arraySize);
                        }
                        while (listSize < m_Datas.arraySize)
                        {
                            m_Datas.DeleteArrayElementAtIndex(m_Datas.arraySize - 1);
                        }
                    }
                    if (listSize > 30)
                    {
                        int num = listSize > 10 ? 10 : listSize;
                        for (int i = 0; i < num; i++)
                        {
                            DrawDataElement(ref drawRect, dimension, m_Datas, showName, showIcon, showSelected, i, pos.width);
                        }
                        if (num >= 10)
                        {
                            EditorGUI.LabelField(drawRect, "...");
                            drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                            DrawDataElement(ref drawRect, dimension, m_Datas, showName, showIcon, showSelected, listSize - 1, pos.width);
                        }
                    }
                    else
                    {
                        for (int i = 0; i < m_Datas.arraySize; i++)
                        {
                            DrawDataElement(ref drawRect, dimension, m_Datas, showName, showIcon, showSelected, i, pos.width);
                        }
                    }
                    drawRect.y += EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.indentLevel--;
                }
                --EditorGUI.indentLevel;
            }
        }
Пример #7
0
        public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label)
        {
            Rect drawRect = pos;

            drawRect.height = EditorGUIUtility.singleLineHeight;
            SerializedProperty show            = prop.FindPropertyRelative("m_Show");
            SerializedProperty type            = prop.FindPropertyRelative("m_Type");
            SerializedProperty name            = prop.FindPropertyRelative("m_Name");
            SerializedProperty stack           = prop.FindPropertyRelative("m_Stack");
            SerializedProperty m_AxisIndex     = prop.FindPropertyRelative("m_AxisIndex");
            SerializedProperty m_Symbol        = prop.FindPropertyRelative("m_Symbol");
            SerializedProperty m_DataDimension = prop.FindPropertyRelative("m_ShowDataDimension");
            SerializedProperty m_ShowDataName  = prop.FindPropertyRelative("m_ShowDataName");
            SerializedProperty m_Datas         = prop.FindPropertyRelative("m_Data");

            int    index      = InitToggle(prop);
            string moduleName = "Serie " + index;
            bool   toggle     = m_SerieModuleToggle[index];

            m_SerieModuleToggle[index] = ChartEditorHelper.MakeFoldout(ref drawRect, ref toggle, moduleName, show);
            drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
            if (m_SerieModuleToggle[index])
            {
                ++EditorGUI.indentLevel;
                EditorGUI.PropertyField(drawRect, type);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                EditorGUI.PropertyField(drawRect, name);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                EditorGUI.PropertyField(drawRect, stack);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                EditorGUI.PropertyField(drawRect, m_AxisIndex);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                if (type.enumValueIndex == (int)SerieType.Line ||
                    type.enumValueIndex == (int)SerieType.Scatter ||
                    type.enumValueIndex == (int)SerieType.EffectScatter)
                {
                    EditorGUI.PropertyField(drawRect, m_Symbol);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_Symbol);
                }

                drawRect.width       = EditorGUIUtility.labelWidth + 10;
                m_DataFoldout[index] = EditorGUI.Foldout(drawRect, m_DataFoldout[index], "Data");
                ChartEditorHelper.MakeJsonData(ref drawRect, ref m_ShowJsonDataArea, ref m_JsonDataAreaText, prop);
                drawRect.width = pos.width;
                if (m_DataFoldout[index])
                {
                    EditorGUI.indentLevel++;
                    EditorGUI.PropertyField(drawRect, m_ShowDataName);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_DataDimension);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;

                    var listSize = m_Datas.arraySize;
                    listSize    = EditorGUI.IntField(drawRect, "Size", listSize);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;

                    if (listSize < 0)
                    {
                        listSize = 0;
                    }
                    if (m_DataDimension.intValue < 1)
                    {
                        m_DataDimension.intValue = 1;
                    }
                    int  dimension = m_DataDimension.intValue;
                    bool showName  = m_ShowDataName.boolValue;
                    if (listSize != m_Datas.arraySize)
                    {
                        while (listSize > m_Datas.arraySize)
                        {
                            m_Datas.InsertArrayElementAtIndex(m_Datas.arraySize);
                        }
                        while (listSize < m_Datas.arraySize)
                        {
                            m_Datas.DeleteArrayElementAtIndex(m_Datas.arraySize - 1);
                        }
                    }
                    if (listSize > 30)
                    {
                        int num = listSize > 10 ? 10 : listSize;
                        for (int i = 0; i < num; i++)
                        {
                            DrawDataElement(ref drawRect, dimension, m_Datas, showName, i);
                        }
                        if (num >= 10)
                        {
                            EditorGUI.LabelField(drawRect, "...");
                            drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                            DrawDataElement(ref drawRect, dimension, m_Datas, showName, listSize - 1);
                        }
                    }
                    else
                    {
                        for (int i = 0; i < m_Datas.arraySize; i++)
                        {
                            DrawDataElement(ref drawRect, dimension, m_Datas, showName, i);
                        }
                    }
                    EditorGUI.indentLevel--;
                }
                --EditorGUI.indentLevel;
            }
        }
Пример #8
0
        public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label)
        {
            Rect drawRect = pos;

            drawRect.height = EditorGUIUtility.singleLineHeight;

            SerializedProperty m_Show        = prop.FindPropertyRelative("m_Show");
            SerializedProperty m_Type        = prop.FindPropertyRelative("m_Type");
            SerializedProperty m_LogBaseE    = prop.FindPropertyRelative("m_LogBaseE");
            SerializedProperty m_LogBase     = prop.FindPropertyRelative("m_LogBase");
            SerializedProperty m_SplitNumber = prop.FindPropertyRelative("m_SplitNumber");
            SerializedProperty m_Interval    = prop.FindPropertyRelative("m_Interval");
            SerializedProperty m_AxisLabel   = prop.FindPropertyRelative("m_AxisLabel");
            SerializedProperty m_BoundaryGap = prop.FindPropertyRelative("m_BoundaryGap");
            SerializedProperty m_Data        = prop.FindPropertyRelative("m_Data");
            SerializedProperty m_AxisLine    = prop.FindPropertyRelative("m_AxisLine");
            SerializedProperty m_AxisName    = prop.FindPropertyRelative("m_AxisName");
            SerializedProperty m_AxisTick    = prop.FindPropertyRelative("m_AxisTick");
            SerializedProperty m_SplitArea   = prop.FindPropertyRelative("m_SplitArea");
            SerializedProperty m_SplitLine   = prop.FindPropertyRelative("m_SplitLine");
            SerializedProperty m_MinMaxType  = prop.FindPropertyRelative("m_MinMaxType");
            SerializedProperty m_Min         = prop.FindPropertyRelative("m_Min");
            SerializedProperty m_Max         = prop.FindPropertyRelative("m_Max");
            SerializedProperty m_CeilRate    = prop.FindPropertyRelative("m_CeilRate");
            SerializedProperty m_Inverse     = prop.FindPropertyRelative("m_Inverse");

            int  index  = InitToggle(prop);
            bool toggle = m_AxisModuleToggle[index];

            m_AxisModuleToggle[index] = ChartEditorHelper.MakeFoldout(ref drawRect, ref toggle,
                                                                      GetDisplayName(prop.displayName), m_Show);
            drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
            if (m_AxisModuleToggle[index])
            {
                Axis.AxisType type = (Axis.AxisType)m_Type.enumValueIndex;
                EditorGUI.indentLevel++;
                EditorGUI.PropertyField(drawRect, m_Type);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                if (type == Axis.AxisType.Log)
                {
                    EditorGUI.PropertyField(drawRect, m_LogBaseE);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.BeginChangeCheck();
                    EditorGUI.PropertyField(drawRect, m_LogBase);
                    if (m_LogBase.floatValue <= 0 || m_LogBase.floatValue == 1)
                    {
                        m_LogBase.floatValue = 10;
                    }
                    EditorGUI.EndChangeCheck();
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                }
                if (type == Axis.AxisType.Value)
                {
                    EditorGUI.PropertyField(drawRect, m_MinMaxType);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    Axis.AxisMinMaxType minMaxType = (Axis.AxisMinMaxType)m_MinMaxType.enumValueIndex;
                    switch (minMaxType)
                    {
                    case Axis.AxisMinMaxType.Default:
                        break;

                    case Axis.AxisMinMaxType.MinMax:
                        break;

                    case Axis.AxisMinMaxType.Custom:
                        EditorGUI.indentLevel++;
                        EditorGUI.PropertyField(drawRect, m_Min);
                        drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                        EditorGUI.PropertyField(drawRect, m_Max);
                        drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                        EditorGUI.indentLevel--;
                        break;
                    }
                    EditorGUI.PropertyField(drawRect, m_CeilRate);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_Inverse);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                }
                EditorGUI.PropertyField(drawRect, m_SplitNumber);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                if (type == Axis.AxisType.Category)
                {
                    EditorGUI.PropertyField(drawRect, m_BoundaryGap);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                }
                else
                {
                    EditorGUI.PropertyField(drawRect, m_Interval);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                }
                DrawExtended(ref drawRect, prop);
                EditorGUI.PropertyField(drawRect, m_AxisLine);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                drawRect.y += EditorGUI.GetPropertyHeight(m_AxisLine);
                EditorGUI.PropertyField(drawRect, m_AxisName);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                drawRect.y += EditorGUI.GetPropertyHeight(m_AxisName);
                EditorGUI.PropertyField(drawRect, m_AxisTick);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                drawRect.y += EditorGUI.GetPropertyHeight(m_AxisTick);
                EditorGUI.PropertyField(drawRect, m_AxisLabel);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                drawRect.y += EditorGUI.GetPropertyHeight(m_AxisLabel);
                EditorGUI.PropertyField(drawRect, m_SplitLine);
                drawRect.y += EditorGUI.GetPropertyHeight(m_SplitLine);
                EditorGUI.PropertyField(drawRect, m_SplitArea);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                drawRect.y += EditorGUI.GetPropertyHeight(m_SplitArea);

                if (type == Axis.AxisType.Category)
                {
                    drawRect.width       = EditorGUIUtility.labelWidth + 10;
                    m_DataFoldout[index] = EditorGUI.Foldout(drawRect, m_DataFoldout[index], "Data");
                    ChartEditorHelper.MakeJsonData(ref drawRect, ref m_ShowJsonDataArea, ref m_JsonDataAreaText, prop, pos.width);
                    drawRect.width = pos.width;
                    if (m_DataFoldout[index])
                    {
                        ChartEditorHelper.MakeList(ref drawRect, ref m_DataSize, m_Data);
                    }
                }
                EditorGUI.indentLevel--;
            }
        }
Пример #9
0
        public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label)
        {
            Rect drawRect = pos;

            drawRect.height = EditorGUIUtility.singleLineHeight;
            SerializedProperty show             = prop.FindPropertyRelative("m_Show");
            SerializedProperty type             = prop.FindPropertyRelative("m_Type");
            SerializedProperty name             = prop.FindPropertyRelative("m_Name");
            SerializedProperty stack            = prop.FindPropertyRelative("m_Stack");
            SerializedProperty m_AxisIndex      = prop.FindPropertyRelative("m_AxisIndex");
            SerializedProperty m_RadarIndex     = prop.FindPropertyRelative("m_RadarIndex");
            SerializedProperty m_LineStyle      = prop.FindPropertyRelative("m_LineStyle");
            SerializedProperty m_LineType       = prop.FindPropertyRelative("m_LineType");
            SerializedProperty m_BarWidth       = prop.FindPropertyRelative("m_BarWidth");
            SerializedProperty m_BarGap         = prop.FindPropertyRelative("m_BarGap");
            SerializedProperty m_BarCategoryGap = prop.FindPropertyRelative("m_BarCategoryGap");
            SerializedProperty m_AreaStyle      = prop.FindPropertyRelative("m_AreaStyle");
            SerializedProperty m_Symbol         = prop.FindPropertyRelative("m_Symbol");
            SerializedProperty m_RoseType       = prop.FindPropertyRelative("m_RoseType");
            SerializedProperty m_ClickOffset    = prop.FindPropertyRelative("m_ClickOffset");
            SerializedProperty m_Space          = prop.FindPropertyRelative("m_Space");
            SerializedProperty m_Center         = prop.FindPropertyRelative("m_Center");
            SerializedProperty m_Radius         = prop.FindPropertyRelative("m_Radius");
            SerializedProperty m_Label          = prop.FindPropertyRelative("m_Label");
            SerializedProperty m_HighlightLabel = prop.FindPropertyRelative("m_HighlightLabel");
            SerializedProperty m_DataDimension  = prop.FindPropertyRelative("m_ShowDataDimension");
            SerializedProperty m_ShowDataName   = prop.FindPropertyRelative("m_ShowDataName");
            SerializedProperty m_Datas          = prop.FindPropertyRelative("m_Data");

            int    index      = InitToggle(prop);
            string moduleName = "Serie " + index;
            var    toggle     = ChartEditorHelper.MakeFoldout(ref drawRect, ref m_SerieModuleToggle, prop, moduleName, show);

            if (!toggle)
            {
                drawRect.x     = EditorGUIUtility.labelWidth - (EditorGUI.indentLevel - 1) * 15 - 2 + 20;
                drawRect.width = pos.width - drawRect.x + 15;
                EditorGUI.PropertyField(drawRect, type, GUIContent.none);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
            }
            else
            {
                var serieType = (SerieType)type.enumValueIndex;

                ++EditorGUI.indentLevel;
                drawRect.x     = pos.x;
                drawRect.width = pos.width;
                drawRect.y    += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                EditorGUI.PropertyField(drawRect, type);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                EditorGUI.PropertyField(drawRect, name);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                EditorGUI.PropertyField(drawRect, stack);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                if (serieType == SerieType.Radar)
                {
                    EditorGUI.PropertyField(drawRect, m_RadarIndex);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                }
                else
                {
                    EditorGUI.PropertyField(drawRect, m_AxisIndex);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                }
                if (serieType == SerieType.Line)
                {
                    EditorGUI.PropertyField(drawRect, m_LineType);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                }
                if (serieType == SerieType.Line ||
                    serieType == SerieType.Scatter ||
                    serieType == SerieType.EffectScatter ||
                    serieType == SerieType.Radar)
                {
                    EditorGUI.PropertyField(drawRect, m_Symbol);
                    drawRect.y += EditorGUI.GetPropertyHeight(m_Symbol);
                }
                if (serieType == SerieType.Bar)
                {
                    EditorGUI.PropertyField(drawRect, m_BarWidth);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_BarGap);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                }
                if (serieType == SerieType.Pie)
                {
                    EditorGUI.PropertyField(drawRect, m_RoseType);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_Space);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;

                    EditorGUI.LabelField(drawRect, "Center");
                    var startX      = drawRect.x + EditorGUIUtility.labelWidth - EditorGUI.indentLevel * 15;
                    var tempWidth   = (pos.width - startX + 35) / 2;
                    var centerXRect = new Rect(startX, drawRect.y, tempWidth, drawRect.height);
                    var centerYRect = new Rect(centerXRect.x + tempWidth - 20, drawRect.y, tempWidth, drawRect.height);
                    while (m_Center.arraySize < 2)
                    {
                        m_Center.InsertArrayElementAtIndex(m_Center.arraySize);
                    }
                    EditorGUI.PropertyField(centerXRect, m_Center.GetArrayElementAtIndex(0), GUIContent.none);
                    EditorGUI.PropertyField(centerYRect, m_Center.GetArrayElementAtIndex(1), GUIContent.none);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;

                    centerXRect = new Rect(startX, drawRect.y, tempWidth, drawRect.height);
                    centerYRect = new Rect(centerXRect.x + tempWidth - 20, drawRect.y, tempWidth, drawRect.height);
                    EditorGUI.LabelField(drawRect, "Radius");
                    while (m_Radius.arraySize < 2)
                    {
                        m_Radius.InsertArrayElementAtIndex(m_Radius.arraySize);
                    }
                    EditorGUI.PropertyField(centerXRect, m_Radius.GetArrayElementAtIndex(0), GUIContent.none);
                    EditorGUI.PropertyField(centerYRect, m_Radius.GetArrayElementAtIndex(1), GUIContent.none);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                    EditorGUI.PropertyField(drawRect, m_ClickOffset);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                }

                EditorGUI.PropertyField(drawRect, m_LineStyle);
                drawRect.y += EditorGUI.GetPropertyHeight(m_LineStyle);
                EditorGUI.PropertyField(drawRect, m_AreaStyle);
                drawRect.y += EditorGUI.GetPropertyHeight(m_AreaStyle);
                EditorGUI.PropertyField(drawRect, m_Label, new GUIContent("Normal Label"));
                drawRect.y += EditorGUI.GetPropertyHeight(m_Label);
                EditorGUI.PropertyField(drawRect, m_HighlightLabel, new GUIContent("Highlight Label"));
                drawRect.y          += EditorGUI.GetPropertyHeight(m_HighlightLabel);
                drawRect.width       = EditorGUIUtility.labelWidth + 10;
                m_DataFoldout[index] = EditorGUI.Foldout(drawRect, m_DataFoldout[index], "Data");
                ChartEditorHelper.MakeJsonData(ref drawRect, ref m_ShowJsonDataArea, ref m_JsonDataAreaText, prop, pos.width);
                drawRect.width = pos.width;
                if (m_DataFoldout[index])
                {
                    EditorGUI.indentLevel++;

                    float nameWid = 76;
                    EditorGUI.PropertyField(new Rect(drawRect.x, drawRect.y, pos.width - nameWid - 2, pos.height), m_DataDimension);
                    var nameRect = new Rect(pos.width - nameWid + 14, drawRect.y, nameWid, pos.height);
                    var btnName  = m_ShowDataName.boolValue ? "Hide Name" : "Show Name";
                    if (GUI.Button(nameRect, new GUIContent(btnName)))
                    {
                        m_ShowDataName.boolValue = !m_ShowDataName.boolValue;
                    }
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;

                    var listSize = m_Datas.arraySize;
                    listSize    = EditorGUI.IntField(drawRect, "Size", listSize);
                    drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;

                    if (listSize < 0)
                    {
                        listSize = 0;
                    }
                    if (m_DataDimension.intValue < 1)
                    {
                        m_DataDimension.intValue = 1;
                    }
                    int  dimension    = m_DataDimension.intValue;
                    bool showName     = m_ShowDataName.boolValue;
                    bool showSelected = (serieType == SerieType.Pie);
                    if (listSize != m_Datas.arraySize)
                    {
                        while (listSize > m_Datas.arraySize)
                        {
                            m_Datas.InsertArrayElementAtIndex(m_Datas.arraySize);
                        }
                        while (listSize < m_Datas.arraySize)
                        {
                            m_Datas.DeleteArrayElementAtIndex(m_Datas.arraySize - 1);
                        }
                    }
                    if (listSize > 30)
                    {
                        int num = listSize > 10 ? 10 : listSize;
                        for (int i = 0; i < num; i++)
                        {
                            DrawDataElement(ref drawRect, dimension, m_Datas, showName, showSelected, i, pos.width);
                        }
                        if (num >= 10)
                        {
                            EditorGUI.LabelField(drawRect, "...");
                            drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                            DrawDataElement(ref drawRect, dimension, m_Datas, showName, showSelected, listSize - 1, pos.width);
                        }
                    }
                    else
                    {
                        for (int i = 0; i < m_Datas.arraySize; i++)
                        {
                            DrawDataElement(ref drawRect, dimension, m_Datas, showName, showSelected, i, pos.width);
                        }
                    }
                    EditorGUI.indentLevel--;
                }
                --EditorGUI.indentLevel;
            }
        }
Пример #10
0
        public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label)
        {
            InitProperty(prop);
            Rect  drawRect          = pos;
            float defaultLabelWidth = EditorGUIUtility.labelWidth;
            float defaultFieldWidth = EditorGUIUtility.fieldWidth;

            drawRect.height = EditorGUIUtility.singleLineHeight;

            ChartEditorHelper.MakeFoldout(ref drawRect, ref m_RadarModuleToggle, "Radar");
            drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
            if (m_RadarModuleToggle)
            {
                ++EditorGUI.indentLevel;

                EditorGUIUtility.fieldWidth = 10;

                EditorGUIUtility.labelWidth = 50;
                drawRect.width = 60;
                EditorGUI.PropertyField(drawRect, m_Cricle);

                EditorGUIUtility.labelWidth = 45;
                drawRect.x += 60;
                EditorGUI.PropertyField(drawRect, m_Area);

                EditorGUIUtility.labelWidth = 70;
                drawRect.x    += 55;
                drawRect.width = 80;
                EditorGUI.PropertyField(drawRect, m_Indicator);
                drawRect.y    += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                drawRect.x     = pos.x;
                drawRect.width = pos.width;
                EditorGUIUtility.labelWidth = defaultLabelWidth;
                EditorGUIUtility.fieldWidth = defaultFieldWidth;
                EditorGUI.PropertyField(drawRect, m_Radius);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                EditorGUI.PropertyField(drawRect, m_SplitNumber);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                EditorGUI.PropertyField(drawRect, m_Left);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                EditorGUI.PropertyField(drawRect, m_Right);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                EditorGUI.PropertyField(drawRect, m_Top);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                EditorGUI.PropertyField(drawRect, m_Bottom);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                EditorGUI.PropertyField(drawRect, m_LineTickness);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                EditorGUI.PropertyField(drawRect, m_LinePointSize);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                EditorGUI.PropertyField(drawRect, m_AreaAlpha);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                EditorGUI.PropertyField(drawRect, m_LineColor);
                drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;

                m_BackgroundColorToggle = EditorGUI.Foldout(drawRect, m_BackgroundColorToggle, "BackgroundColors");
                drawRect.y    += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                drawRect.width = pos.width;
                if (m_BackgroundColorToggle)
                {
                    ChartEditorHelper.MakeList(ref drawRect, ref m_BackgroundColorSize, m_BackgroundColorList);
                }
                drawRect.width    = EditorGUIUtility.labelWidth + 10;
                m_IndicatorToggle = EditorGUI.Foldout(drawRect, m_IndicatorToggle, "Indicators");
                ChartEditorHelper.MakeJsonData(ref drawRect, ref m_IndicatorJsonAreaToggle, ref m_IndicatorJsonAreaText, prop);
                drawRect.width = pos.width;
                if (m_IndicatorToggle)
                {
                    ChartEditorHelper.MakeList(ref drawRect, ref m_IndicatorSize, m_IndicatorList);
                }
                --EditorGUI.indentLevel;
            }
        }