public static void ShowActions(SerializedProperty actionsArray, SerializedProperty logArray, SerializedProperty archiveArray, StateController controller, EditorArrayOption options = EditorArrayOption.Default) { bool showArrayLabel = (options & EditorArrayOption.ArrayLabel) != 0, showArraySize = (options & EditorArrayOption.ArraySize) != 0; if (showArrayLabel) { EditorGUILayout.PropertyField(actionsArray); EditorGUI.indentLevel += 1; } if (!showArrayLabel || actionsArray.isExpanded) { if (showArraySize) { //EditorGUILayout.PropertyField(actionsArray.FindPropertyRelative("Array.size")); EditorGUILayout.PropertyField(actionsArray.FindPropertyRelative("Array.size")); } ShowElements(actionsArray, logArray, archiveArray, options, controller); } if (showArrayLabel) { EditorGUI.indentLevel -= 1; } }
private static void ShowElements(SerializedProperty actionsArray, SerializedProperty logArray, SerializedProperty archiveArray, EditorArrayOption options, StateController controller) { bool showElementLabels = (options & EditorArrayOption.ElementLabels) != 0, showButtons = (options & EditorArrayOption.Buttons) != 0; EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Action", EditorStyles.boldLabel); EditorGUILayout.LabelField("Arch", EditorStyles.boldLabel, GUILayout.Width(35)); EditorGUILayout.LabelField("Log", EditorStyles.boldLabel, GUILayout.Width(30)); EditorGUILayout.LabelField("", EditorStyles.boldLabel, GUILayout.Width(30)); EditorGUILayout.EndHorizontal(); for (int i = 0; i < actionsArray.arraySize; i++) { if (showButtons) { EditorGUILayout.BeginHorizontal(); } if (showElementLabels) { EditorGUILayout.PropertyField(actionsArray.GetArrayElementAtIndex(i), GUIContent.none); EditorGUILayout.PropertyField(archiveArray.GetArrayElementAtIndex(i), GUIContent.none, GUILayout.Width(20)); EditorGUILayout.PropertyField(logArray.GetArrayElementAtIndex(i), GUIContent.none, GUILayout.Width(20)); } else { EditorGUILayout.PropertyField(actionsArray.GetArrayElementAtIndex(i), GUIContent.none); EditorGUILayout.PropertyField(archiveArray.GetArrayElementAtIndex(i), GUIContent.none, GUILayout.Width(20)); EditorGUILayout.PropertyField(logArray.GetArrayElementAtIndex(i), GUIContent.none, GUILayout.Width(20)); } if (showButtons) { ShowButtons(actionsArray, i, controller); EditorGUILayout.EndHorizontal(); } } }