public void DrawExtensionGUI() { if (Target == null) { return; } EditorGUILayout.Space(); EditorGUILayout.LabelField("Extensions", EditorStyles.boldLabel); using (hGUI.Horizontal()) { ExtensionType selection = Selector.Draw(GUIContent.none); if (GUILayout.Button("Add") && selection != null) { Undo.RecordObject(Target, "Add Extension"); Target.AddExtension(selection.Type); Repaint(); } } foreach (ScriptableObject extension in Target.Extensions.ToArray()) { using (hGUI.Horizontal()) { EditorGUILayout.InspectorTitlebar(true, extension); if (GUILayout.Button(GUIContent.none, "ToggleMixed", GUILayout.Width(15))) { Undo.RecordObject(Target, "Remove Extension"); Target.RemoveExtension(extension); Repaint(); } } EditorGUILayout.Space(); if (extension != null) { CreateEditor(extension).OnInspectorGUI(); } } }