Example #1
0
        // 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();
        }