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; } }
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; } }