Example #1
0
        private void DrawDataElement(ref Rect drawRect, int dimension, SerializedProperty m_Datas, bool showName,
                                     bool showDetail, bool showSelected, int index, float currentWidth)
        {
            var lastX        = drawRect.x;
            var lastWid      = drawRect.width;
            var lastFieldWid = EditorGUIUtility.fieldWidth;
            var lastLabelWid = EditorGUIUtility.labelWidth;
            var serieData    = m_Datas.GetArrayElementAtIndex(index);
            var sereName     = serieData.FindPropertyRelative("m_Name");
            var selected     = serieData.FindPropertyRelative("m_Selected");

            var data       = serieData.FindPropertyRelative("m_Data");
            var fieldCount = dimension + (showName ? 1 : 0);

            if (fieldCount <= 1)
            {
                while (2 > data.arraySize)
                {
                    var value = data.arraySize == 0 ? index : 0;
                    data.arraySize++;
                    data.GetArrayElementAtIndex(data.arraySize - 1).floatValue = value;
                }
                SerializedProperty element = data.GetArrayElementAtIndex(1);
                if (showSelected)
                {
                    drawRect.width = drawRect.width - 18;
                    EditorGUI.PropertyField(drawRect, element, new GUIContent("Element " + index));
                    drawRect.x = currentWidth - 45;
                    EditorGUI.PropertyField(drawRect, selected, GUIContent.none);
                    drawRect.x     = lastX;
                    drawRect.width = lastWid;
                }
                else
                {
                    EditorGUI.PropertyField(drawRect, element, new GUIContent("Element " + index));
                }
                AddHeight(EditorGUI.GetPropertyHeight(element));
            }
            else
            {
#if UNITY_2019_3_OR_NEWER
                var gap     = 2;
                var namegap = 3;
#else
                var gap     = 0;
                var namegap = 0;
#endif
                EditorGUI.LabelField(drawRect, "Element " + index);
                var startX       = drawRect.x + EditorGUIUtility.labelWidth - EditorGUI.indentLevel * 15 + gap;
                var dataWidTotal = (currentWidth - (startX + 20.5f + 1));
                var dataWid      = dataWidTotal / fieldCount;
                var xWid         = dataWid - 4;
                for (int i = 0; i < dimension; i++)
                {
                    var dataCount = i < 1 ? 2 : i + 1;
                    while (dataCount > data.arraySize)
                    {
                        var value = data.arraySize == 0 ? index : 0;
                        data.arraySize++;
                        data.GetArrayElementAtIndex(data.arraySize - 1).floatValue = value;
                    }
                    drawRect.x     = startX + i * xWid;
                    drawRect.width = dataWid + 40;
                    SerializedProperty element = data.GetArrayElementAtIndex(dimension <= 1 ? 1 : i);
                    EditorGUI.PropertyField(drawRect, element, GUIContent.none);
                }
                if (showName)
                {
                    drawRect.x     = startX + (fieldCount - 1) * xWid;
                    drawRect.width = dataWid + 40 + dimension * namegap;
                    EditorGUI.PropertyField(drawRect, sereName, GUIContent.none);
                }
                AddSingleLineHeight();
                drawRect.x     = lastX;
                drawRect.width = lastWid;
                EditorGUIUtility.fieldWidth = lastFieldWid;
                EditorGUIUtility.labelWidth = lastLabelWid;
            }
            if (showDetail)
            {
                EditorGUI.indentLevel += 2;
                var m_Icon            = serieData.FindPropertyRelative("m_IconStyle");
                var m_EnableLabel     = serieData.FindPropertyRelative("m_EnableLabel");
                var m_Label           = serieData.FindPropertyRelative("m_Label");
                var m_EnableItemStyle = serieData.FindPropertyRelative("m_EnableItemStyle");
                var m_ItemStyle       = serieData.FindPropertyRelative("m_ItemStyle");
                var m_EnableEmphasis  = serieData.FindPropertyRelative("m_EnableEmphasis");
                var m_Emphasis        = serieData.FindPropertyRelative("m_Emphasis");
                var m_EnableSymbol    = serieData.FindPropertyRelative("m_EnableSymbol");
                var m_Symbol          = serieData.FindPropertyRelative("m_Symbol");
                EditorGUI.PropertyField(drawRect, m_Icon);
                AddHeight(EditorGUI.GetPropertyHeight(m_Icon));
                EditorGUI.PropertyField(drawRect, m_Symbol);
                ChartEditorHelper.MakeBool(drawRect, m_EnableSymbol, 1, "(enable)");
                AddHeight(EditorGUI.GetPropertyHeight(m_Symbol));
                EditorGUI.PropertyField(drawRect, m_Label);
                ChartEditorHelper.MakeBool(drawRect, m_EnableLabel, 1, "(enable)");
                AddHeight(EditorGUI.GetPropertyHeight(m_Label));
                EditorGUI.PropertyField(drawRect, m_ItemStyle);
                ChartEditorHelper.MakeBool(drawRect, m_EnableItemStyle, 1, "(enable)");
                AddHeight(EditorGUI.GetPropertyHeight(m_ItemStyle));
                EditorGUI.PropertyField(drawRect, m_Emphasis);
                ChartEditorHelper.MakeBool(drawRect, m_EnableEmphasis, 1, "(enable)");
                AddHeight(EditorGUI.GetPropertyHeight(m_Emphasis));
                EditorGUI.indentLevel -= 2;
            }
        }
Example #2
0
        private void DrawDataElement(ref Rect drawRect, int dimension, SerializedProperty m_Datas, bool showName,
                                     bool showDetail, bool showSelected, int index, float currentWidth)
        {
            var lastX        = drawRect.x;
            var lastWid      = drawRect.width;
            var lastFieldWid = EditorGUIUtility.fieldWidth;
            var lastLabelWid = EditorGUIUtility.labelWidth;
            var serieData    = m_Datas.GetArrayElementAtIndex(index);
            var sereName     = serieData.FindPropertyRelative("m_Name");
            var selected     = serieData.FindPropertyRelative("m_Selected");

            var data       = serieData.FindPropertyRelative("m_Data");
            var fieldCount = dimension + (showName ? 1 : 0);

            if (fieldCount <= 1)
            {
                while (2 > data.arraySize)
                {
                    data.InsertArrayElementAtIndex(data.arraySize);
                }
                SerializedProperty element = data.GetArrayElementAtIndex(1);
                if (showSelected)
                {
                    drawRect.width = drawRect.width - 18;
                    EditorGUI.PropertyField(drawRect, element, new GUIContent("Element " + index));
                    drawRect.x = currentWidth - 45;
                    EditorGUI.PropertyField(drawRect, selected, GUIContent.none);
                    drawRect.x     = lastX;
                    drawRect.width = lastWid;
                }
                else
                {
                    EditorGUI.PropertyField(drawRect, element, new GUIContent("Element " + index));
                }
                drawRect.y += EditorGUI.GetPropertyHeight(element) + EditorGUIUtility.standardVerticalSpacing;
            }
            else
            {
                EditorGUI.LabelField(drawRect, "Element " + index);
                var startX       = drawRect.x + EditorGUIUtility.labelWidth - EditorGUI.indentLevel * 15;
                var dataWidTotal = (currentWidth - (startX + 20.5f + 1));
                var dataWid      = dataWidTotal / fieldCount;
                var xWid         = dataWid - 4;
                for (int i = 0; i < dimension; i++)
                {
                    while (i >= data.arraySize - 1)
                    {
                        data.InsertArrayElementAtIndex(data.arraySize);
                    }
                    drawRect.x     = startX + i * xWid;
                    drawRect.width = dataWid + 40;
                    SerializedProperty element = data.GetArrayElementAtIndex(dimension <= 1 ? 1 : i);
                    EditorGUI.PropertyField(drawRect, element, GUIContent.none);
                }
                if (showName)
                {
                    drawRect.x     = startX + (fieldCount - 1) * xWid;
                    drawRect.width = dataWid + 40;
                    EditorGUI.PropertyField(drawRect, sereName, GUIContent.none);
                }

                drawRect.y    += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
                drawRect.x     = lastX;
                drawRect.width = lastWid;
                EditorGUIUtility.fieldWidth = lastFieldWid;
                EditorGUIUtility.labelWidth = lastLabelWid;
            }
            if (showDetail)
            {
                EditorGUI.indentLevel += 2;
                var m_Icon        = serieData.FindPropertyRelative("m_IconStyle");
                var m_EnableLabel = serieData.FindPropertyRelative("m_EnableLabel");
                var m_Label       = serieData.FindPropertyRelative("m_Label");
                EditorGUI.PropertyField(drawRect, m_Icon);
                drawRect.y += EditorGUI.GetPropertyHeight(m_Icon);
                EditorGUI.PropertyField(drawRect, m_Label);
                ChartEditorHelper.MakeBool(ref drawRect, m_EnableLabel, 1, "(enable)");
                drawRect.y += EditorGUI.GetPropertyHeight(m_Label);

                EditorGUI.indentLevel -= 2;
            }
        }