// On Load of Window public override void OnActivate(System.String searchContext, VisualElement rootElement) { base.OnActivate(searchContext, rootElement); if (settings == null) { settings = HierarchyDecorator.GetOrCreateSettings(); serializedSettings = HierarchyDecorator.GetSerializedSettings(); } }
private void DrawSetting(string label, ref int selection, string[] selectionArray, SerializedProperty property) { int localSelection = selection; if (property.arraySize == 0) { HierarchyDecoratorGUI.ButtonAction("Add New", EditorStyles.toolbarButton, () => { property.InsertArrayElementAtIndex(property.arraySize); serializedObject.ApplyModifiedProperties(); serializedObject.Update(); GetSettingNames(); HierarchyDecorator.GetSettings(); localSelection = property.arraySize - 1; }); selection = localSelection; } EditorGUILayout.BeginVertical(GUI.skin.box); { //Draw buttons EditorGUILayout.BeginHorizontal(); { EditorGUILayout.LabelField(label, EditorStyles.largeLabel); EditorGUI.BeginChangeCheck(); { HierarchyDecoratorGUI.ButtonAction("Add New", EditorStyles.miniButton, () => { property.InsertArrayElementAtIndex(property.arraySize); serializedObject.ApplyModifiedProperties(); serializedObject.Update(); GetSettingNames(); HierarchyDecorator.GetSettings(); localSelection = property.arraySize - 1; }); HierarchyDecoratorGUI.ButtonAction("Remove Current", EditorStyles.miniButton, () => { property.DeleteArrayElementAtIndex(localSelection); serializedObject.ApplyModifiedProperties(); serializedObject.Update(); GetSettingNames(); HierarchyDecorator.GetSettings(); localSelection--; }); } if (EditorGUI.EndChangeCheck()) { selection = localSelection; } } EditorGUILayout.EndHorizontal(); //Draw current setting, and update when changed EditorGUI.BeginChangeCheck(); { EditorGUILayout.PropertyField(property.GetArrayElementAtIndex(selection)); } if (EditorGUI.EndChangeCheck()) { EditorApplication.RepaintHierarchyWindow(); property.serializedObject.ApplyModifiedProperties(); } } EditorGUILayout.EndVertical(); }