private void DrawChildrenInspecter(NestedGenerator ng) { if (ng.ChildGenerators == null || ng.ChildGenerators.Length == 0) { EditorGUILayout.LabelField("No childern"); } else { EditorGUILayout.LabelField(ng.name + " Children Inspecter Begin", EditorStyles.boldLabel); int index = 0; foreach (var child in ng.ChildGenerators) { //change color and store previous Color prevLabelColor = EditorStyles.label.normal.textColor; Color prevFontColor = EditorStyles.boldLabel.normal.textColor; EditorStyles.label.normal.textColor = SelectColor(index); EditorStyles.boldLabel.normal.textColor = SelectColor(index); if (child == null) { EditorGUILayout.LabelField((index) + "- Field is null"); } else { //ask to show inspecter if ((showChildrenInspecters[index] = EditorGUILayout.Toggle("Show " + child.name + " Inspecter", showChildrenInspecters[index]))) { EditorGUILayout.Space(); EditorGUI.BeginDisabledGroup(true); EditorGUILayout.ObjectField("Object source", child, typeof(Generator), true); EditorGUI.EndDisabledGroup(); Editor drawer = CreateEditor(child); drawer.OnInspectorGUI(); EditorGUILayout.Space(); } } EditorStyles.label.normal.textColor = prevLabelColor; EditorStyles.boldLabel.normal.textColor = prevFontColor; ++index; } EditorGUILayout.LabelField(ng.name + " Children Inspecter End", EditorStyles.boldLabel); } }
private void DrawNestedChildren(NestedGenerator ng) { //int prev = showChildrenInspecters?.Length?? 0; int sizeValue = EditorGUILayout.IntField("Children size", ng.ChildGenerators?.Length ?? 0); if (sizeValue <= 0) { sizeValue = 0; showChildrenInspecters = new bool[0]; ng.ChildGenerators = new Generator[0]; } //size changed if (sizeValue != (showChildrenInspecters?.Length ?? 0)) { serializedObject.Update(); Generator[] prevArray = ng.ChildGenerators; //bool[] prevShow = showChildrenInspecters; ng.ChildGenerators = new Generator[sizeValue]; showChildrenInspecters = new bool[sizeValue]; for (int j = 0; j < sizeValue && j < prevArray.Length; j++) { ng.ChildGenerators[j] = prevArray[j]; showChildrenInspecters[j] = false; } serializedObject.ApplyModifiedProperties(); } //draw children int i = 0; if (sizeValue > 0) { foreach (var item in ng.ChildGenerators) { ng.ChildGenerators[i] = (Generator)EditorGUILayout.ObjectField("Generator " + i, ng.ChildGenerators[i], typeof(Generator), true); i++; } serializedObject.ApplyModifiedProperties(); } }