예제 #1
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--;
            }
        }
예제 #2
0
        public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label)
        {
            base.OnGUI(pos, prop, label);
            if (MakeFoldout(prop, "m_Show"))
            {
                SerializedProperty m_Type       = prop.FindPropertyRelative("m_Type");
                SerializedProperty m_LogBase    = prop.FindPropertyRelative("m_LogBase");
                SerializedProperty m_MinMaxType = prop.FindPropertyRelative("m_MinMaxType");
                Axis.AxisType      type         = (Axis.AxisType)m_Type.enumValueIndex;
                var chart   = prop.serializedObject.targetObject as BaseChart;
                var isPolar = chart is PolarChart;
                EditorGUI.indentLevel++;
                PropertyField(prop, isPolar ? "m_PolarIndex" : "m_GridIndex");
                PropertyField(prop, "m_Type");
                PropertyField(prop, "m_Position");
                PropertyField(prop, "m_Offset");
                if (type == Axis.AxisType.Log)
                {
                    PropertyField(prop, "m_LogBaseE");
                    EditorGUI.BeginChangeCheck();
                    PropertyField(prop, "m_LogBase");
                    if (m_LogBase.floatValue <= 0 || m_LogBase.floatValue == 1)
                    {
                        m_LogBase.floatValue = 10;
                    }
                    EditorGUI.EndChangeCheck();
                }
                if (type == Axis.AxisType.Value || type == Axis.AxisType.Time)
                {
                    PropertyField(prop, "m_MinMaxType");
                    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++;
                        PropertyField(prop, "m_Min");
                        PropertyField(prop, "m_Max");
                        EditorGUI.indentLevel--;
                        break;
                    }
                    PropertyField(prop, "m_CeilRate");
                    if (type == Axis.AxisType.Value)
                    {
                        PropertyField(prop, "m_Inverse");
                    }
                }
                PropertyField(prop, "m_SplitNumber");
                if (type == Axis.AxisType.Category)
                {
                    PropertyField(prop, "m_InsertDataToHead");
                    PropertyField(prop, "m_MaxCache");
                    PropertyField(prop, "m_BoundaryGap");
                }
                else
                {
                    PropertyField(prop, "m_Interval");
                }
                DrawExtendeds(prop);
                PropertyField(prop, "m_AxisLine");
                PropertyField(prop, "m_AxisName");
                PropertyField(prop, "m_AxisTick");
                PropertyField(prop, "m_AxisLabel");
                PropertyField(prop, "m_SplitLine");
                PropertyField(prop, "m_SplitArea");

                if (type == Axis.AxisType.Category)
                {
                    PropertyListField(prop, "m_Data", true);
                }
                EditorGUI.indentLevel--;
            }
        }
예제 #3
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--;
            }
        }
예제 #4
0
        public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label)
        {
            base.OnGUI(pos, prop, label);
            if (MakeFoldout(prop, "m_Show"))
            {
                SerializedProperty m_Type       = prop.FindPropertyRelative("m_Type");
                SerializedProperty m_LogBase    = prop.FindPropertyRelative("m_LogBase");
                SerializedProperty m_Data       = prop.FindPropertyRelative("m_Data");
                SerializedProperty m_MinMaxType = prop.FindPropertyRelative("m_MinMaxType");
                Axis.AxisType      type         = (Axis.AxisType)m_Type.enumValueIndex;
                var chart   = prop.serializedObject.targetObject as BaseChart;
                var isPolar = chart is PolarChart;
                EditorGUI.indentLevel++;
                PropertyField(prop, isPolar ? "m_PolarIndex" : "m_GridIndex");
                PropertyField(prop, "m_Type");
                PropertyField(prop, "m_Position");
                PropertyField(prop, "m_Offset");
                if (type == Axis.AxisType.Log)
                {
                    PropertyField(prop, "m_LogBaseE");
                    EditorGUI.BeginChangeCheck();
                    PropertyField(prop, "m_LogBase");
                    if (m_LogBase.floatValue <= 0 || m_LogBase.floatValue == 1)
                    {
                        m_LogBase.floatValue = 10;
                    }
                    EditorGUI.EndChangeCheck();
                }
                if (type == Axis.AxisType.Value)
                {
                    PropertyField(prop, "m_MinMaxType");
                    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++;
                        PropertyField(prop, "m_Min");
                        PropertyField(prop, "m_Max");
                        EditorGUI.indentLevel--;
                        break;
                    }
                    PropertyField(prop, "m_CeilRate");
                    PropertyField(prop, "m_Inverse");
                }
                PropertyField(prop, "m_SplitNumber");
                if (type == Axis.AxisType.Category)
                {
                    PropertyField(prop, "m_BoundaryGap");
                }
                else
                {
                    PropertyField(prop, "m_Interval");
                }
                DrawExtendeds(prop);
                PropertyField(prop, "m_AxisLine");
                PropertyField(prop, "m_AxisName");
                PropertyField(prop, "m_AxisTick");
                PropertyField(prop, "m_AxisLabel");
                PropertyField(prop, "m_SplitLine");
                PropertyField(prop, "m_SplitArea");

                if (type == Axis.AxisType.Category)
                {
                    m_DrawRect.width         = EditorGUIUtility.labelWidth + 10;
                    m_DataToggles[m_KeyName] = EditorGUI.Foldout(m_DrawRect, m_DataToggles[m_KeyName], "Data");
                    AddSingleLineHeight();
                    m_DrawRect.width = pos.width;
                    if (m_DataToggles[m_KeyName])
                    {
                        var height = m_Heights[m_KeyName];
                        ChartEditorHelper.MakeList(ref m_DrawRect, ref height, ref m_DataSize, m_Data);
                        m_Heights[m_KeyName] = height;
                    }
                }
                EditorGUI.indentLevel--;
            }
        }
예제 #5
0
        public override void OnInspectorGUI()
        {
            var m_Type       = baseProperty.FindPropertyRelative("m_Type");
            var m_LogBase    = baseProperty.FindPropertyRelative("m_LogBase");
            var m_MinMaxType = baseProperty.FindPropertyRelative("m_MinMaxType");
            var type         = (Axis.AxisType)m_Type.enumValueIndex;

            EditorGUI.indentLevel++;
            if (component is ParallelAxis)
            {
                PropertyField("m_ParallelIndex");
            }
            else if (!(component is SingleAxis))
            {
                PropertyField("m_GridIndex");
                PropertyField("m_PolarIndex");
            }
            PropertyField("m_Type");
            PropertyField("m_Position");
            PropertyField("m_Offset");
            if (type == Axis.AxisType.Log)
            {
                PropertyField("m_LogBaseE");
                EditorGUI.BeginChangeCheck();
                PropertyField("m_LogBase");
                if (m_LogBase.floatValue <= 0 || m_LogBase.floatValue == 1)
                {
                    m_LogBase.floatValue = 10;
                }
                EditorGUI.EndChangeCheck();
            }
            if (type == Axis.AxisType.Value || type == Axis.AxisType.Time)
            {
                PropertyField("m_MinMaxType");
                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++;
                    PropertyField("m_Min");
                    PropertyField("m_Max");
                    EditorGUI.indentLevel--;
                    break;
                }
                PropertyField("m_CeilRate");
                if (type == Axis.AxisType.Value)
                {
                    PropertyField("m_Inverse");
                }
            }
            PropertyField("m_SplitNumber");
            if (type == Axis.AxisType.Category)
            {
                //PropertyField("m_InsertDataToHead");
                PropertyField("m_MaxCache");
                PropertyField("m_BoundaryGap");
            }
            else
            {
                PropertyField("m_Interval");
                PropertyField("m_BoundaryGap");
            }
            DrawExtendeds();
            PropertyField("m_AxisLine");
            PropertyField("m_AxisName");
            PropertyField("m_AxisTick");
            PropertyField("m_AxisLabel");
            PropertyField("m_SplitLine");
            PropertyField("m_SplitArea");
            PropertyListField("m_Icons", true);
            if (type == Axis.AxisType.Category)
            {
                PropertyListField("m_Data", true, new HeaderMenuInfo("Import ECharts Axis Data", () =>
                {
                    PraseExternalDataEditor.UpdateData(chart, null, component as Axis);
                    PraseExternalDataEditor.ShowWindow();
                }));
            }
            EditorGUI.indentLevel--;
        }