private void OnGUI()
        {
            Rect rect;

            //var labelWidthCache = EditorGUIUtility.labelWidth;
            //EditorGUIUtility.labelWidth = Mathf.Min(this.position.width - 20f, 300f);

            EditorGUI.BeginChangeCheck();
            bool useSPEditor = EditorGUILayout.ToggleLeft("Use SPEditor as default editor for MonoBehaviour", EditorProjectPrefs.Local.GetBool(BaseSettings.SETTING_SPEDITOR_ISDEFAULT_ACTIVE, true));

            if (EditorGUI.EndChangeCheck())
            {
                EditorProjectPrefs.Local.SetBool(BaseSettings.SETTING_SPEDITOR_ISDEFAULT_ACTIVE, useSPEditor);
            }

            EditorGUI.BeginChangeCheck();
            bool useAdvancedAnimInspector = EditorGUILayout.ToggleLeft("Use Advanced Animation Inspector", EditorProjectPrefs.Local.GetBool(BaseSettings.SETTING_ADVANCEDANIMINSPECTOR_ACTIVE, true));

            if (EditorGUI.EndChangeCheck())
            {
                EditorProjectPrefs.Local.SetBool(BaseSettings.SETTING_ADVANCEDANIMINSPECTOR_ACTIVE, useAdvancedAnimInspector);
            }

            EditorGUI.BeginChangeCheck();
            bool hierarchyDrawerActive = EditorGUILayout.ToggleLeft("Use Hierarchy Drawers", EditorProjectPrefs.Local.GetBool(BaseSettings.SETTING_HIERARCHYDRAWER_ACTIVE, true));

            if (EditorGUI.EndChangeCheck())
            {
                EditorProjectPrefs.Local.SetBool(BaseSettings.SETTING_HIERARCHYDRAWER_ACTIVE, hierarchyDrawerActive);
                EditorHierarchyDrawerEvents.SetActive(hierarchyDrawerActive);
            }

            EditorGUI.BeginChangeCheck();
            bool hierarchCustomContextMenu = EditorGUILayout.ToggleLeft("Use Alternate Hierarchy Context Menu", EditorProjectPrefs.Local.GetBool(BaseSettings.SETTING_HIEARCHYALTERNATECONTEXTMENU_ACTIVE, true));

            if (EditorGUI.EndChangeCheck())
            {
                EditorProjectPrefs.Local.SetBool(BaseSettings.SETTING_HIEARCHYALTERNATECONTEXTMENU_ACTIVE, hierarchCustomContextMenu);
                EditorHierarchyAlternateContextMenuEvents.SetActive(hierarchCustomContextMenu);
            }

            if (_gameSettings == null)
            {
                rect       = EditorGUILayout.GetControlRect();
                rect.width = Mathf.Min(rect.width, BTN_WIDTH);

                if (GUI.Button(rect, "Create Default GameSettings Data Resource"))
                {
                    var tps = (from t in TypeUtil.GetTypesAssignableFrom(typeof(GameSettingsBase)) where !t.IsAbstract && !t.IsInterface select t).ToArray();

                    var menu = new GenericMenu();
                    foreach (var tp in tps)
                    {
                        menu.AddItem(EditorHelper.TempContent(tp.Name), false, () =>
                        {
                            _gameSettings = ScriptableObjectHelper.CreateAsset(tp, GameSettingsBase.PATH_DEFAULTSETTINGS_FULL) as GameSettingsBase;
                        });
                    }
                    menu.ShowAsContext();
                }
            }
            else
            {
                EditorGUILayout.ObjectField("Game Settings", _gameSettings, typeof(GameSettingsBase), false);
            }

            if (_timeLayersData == null)
            {
                rect       = EditorGUILayout.GetControlRect();
                rect.width = Mathf.Min(rect.width, BTN_WIDTH);
                if (GUI.Button(rect, "Create Custom Time Layers Data Resource"))
                {
                    _timeLayersData = ScriptableObjectHelper.CreateAsset <CustomTimeLayersData>(CustomTimeLayersData.PATH_DEFAULTSETTINGS_FULL);
                }
            }
            else
            {
                EditorGUILayout.ObjectField("Custom Time Layers Data", _timeLayersData, typeof(CustomTimeLayersData), false);
            }



            EditorGUILayout.Space();
            EditorGUILayout.Space();

            this.DrawScenes();


            //EditorGUIUtility.labelWidth = labelWidthCache;
        }
Пример #2
0
        private void OnGUI()
        {
            Rect rect;

            var boxStyle = new GUIStyle(GUI.skin.box);

            boxStyle.stretchHeight = false;

            EditorGUILayout.Space();

            EditorGUI.BeginChangeCheck();
            bool storeLocal = EditorGUILayout.ToggleLeft("Store Settings Local", SpacepuppySettings.StoreSettingsLocal);

            if (EditorGUI.EndChangeCheck())
            {
                SpacepuppySettings.StoreSettingsLocal = storeLocal;
            }

            /*
             * Editor Use
             */

            EditorGUILayout.Space();
            GUILayout.BeginVertical("Editor Settings", boxStyle);
            EditorGUILayout.Space();

            EditorGUI.BeginChangeCheck();
            bool useSPEditor = EditorGUILayout.ToggleLeft("Use SPEditor as default editor for MonoBehaviour", SpacepuppySettings.UseSPEditorAsDefaultEditor);

            if (EditorGUI.EndChangeCheck())
            {
                SpacepuppySettings.UseSPEditorAsDefaultEditor = useSPEditor;
            }

            EditorGUI.BeginChangeCheck();
            bool useAdvancedAnimInspector = EditorGUILayout.ToggleLeft("Use Advanced Animation Inspector", SpacepuppySettings.UseAdvancedAnimationInspector);

            if (EditorGUI.EndChangeCheck())
            {
                SpacepuppySettings.UseAdvancedAnimationInspector = useAdvancedAnimInspector;
            }

            EditorGUI.BeginChangeCheck();
            bool hierarchyDrawerActive = EditorGUILayout.ToggleLeft("Use Hierarchy Drawers", SpacepuppySettings.UseHierarchDrawer);

            if (EditorGUI.EndChangeCheck())
            {
                SpacepuppySettings.UseHierarchDrawer = hierarchyDrawerActive;
                EditorHierarchyDrawerEvents.SetActive(hierarchyDrawerActive);
            }

            EditorGUI.BeginChangeCheck();
            bool hierarchCustomContextMenu = EditorGUILayout.ToggleLeft("Use Alternate Hierarchy Context Menu", SpacepuppySettings.UseHierarchyAlternateContextMenu);

            if (EditorGUI.EndChangeCheck())
            {
                SpacepuppySettings.UseHierarchyAlternateContextMenu = hierarchCustomContextMenu;
                EditorHierarchyAlternateContextMenuEvents.SetActive(hierarchCustomContextMenu);
            }

            EditorGUI.BeginChangeCheck();
            bool signalValidateReceiver = EditorGUILayout.ToggleLeft("Signal IValidateReceiver OnValidate Event", SpacepuppySettings.SignalValidateReceiver);

            if (EditorGUI.EndChangeCheck())
            {
                SpacepuppySettings.SignalValidateReceiver = signalValidateReceiver;
            }

            GUILayout.EndVertical();

            /*
             * Material Search Settings
             */

            GUILayout.BeginVertical("Material Settings", boxStyle);
            EditorGUILayout.Space();

            EditorGUI.BeginChangeCheck();
            bool setMaterialSearch = EditorGUILayout.ToggleLeft("Configure Material Settings On Import", SpacepuppySettings.SetMaterialSearchOnImport);

            if (EditorGUI.EndChangeCheck())
            {
                SpacepuppySettings.SetMaterialSearchOnImport = setMaterialSearch;
            }

            EditorGUI.BeginChangeCheck();
            var materialSearch = (ModelImporterMaterialSearch)EditorGUILayout.EnumPopup("Material Search", SpacepuppySettings.MaterialSearch);

            if (EditorGUI.EndChangeCheck())
            {
                SpacepuppySettings.MaterialSearch = materialSearch;
            }

            GUILayout.EndVertical();

            /*
             * Animation Settings
             */

            GUILayout.BeginVertical("Animation Settings", boxStyle);
            EditorGUILayout.Space();

            EditorGUI.BeginChangeCheck();
            bool setAnimSettings = EditorGUILayout.ToggleLeft("Configure Animation Settings On Import", SpacepuppySettings.SetAnimationSettingsOnImport);

            if (EditorGUI.EndChangeCheck())
            {
                SpacepuppySettings.SetAnimationSettingsOnImport = setAnimSettings;
            }

            EditorGUI.BeginChangeCheck();
            var animRigType = (ModelImporterAnimationType)EditorGUILayout.EnumPopup("Aimation Rig Type", SpacepuppySettings.ImportAnimRigType);

            if (EditorGUI.EndChangeCheck())
            {
                SpacepuppySettings.ImportAnimRigType = animRigType;
            }

            GUILayout.EndVertical();

            /*
             * Game Settings
             */

            GUILayout.BeginVertical("Game Settings", boxStyle);
            EditorGUILayout.Space();
            EditorGUILayout.Space();

            if (_gameSettings == null)
            {
                rect       = EditorGUILayout.GetControlRect();
                rect.width = Mathf.Min(rect.width, BTN_WIDTH);

                if (GUI.Button(rect, "Create Default GameSettings Data Resource"))
                {
                    var tps = (from t in TypeUtil.GetTypesAssignableFrom(typeof(GameSettings)) where !t.IsAbstract && !t.IsInterface select t).ToArray();

                    var menu = new GenericMenu();
                    foreach (var tp in tps)
                    {
                        menu.AddItem(EditorHelper.TempContent(tp.Name), false, () =>
                        {
                            _gameSettings = ScriptableObjectHelper.CreateAsset(tp, GameSettings.PATH_DEFAULTSETTINGS_FULL) as GameSettings;
                        });
                    }
                    menu.ShowAsContext();
                }
            }
            else
            {
                EditorGUILayout.ObjectField("Game Settings", _gameSettings, typeof(GameSettings), false);
            }

            EditorGUILayout.Space();

            if (_timeLayersData == null)
            {
                rect       = EditorGUILayout.GetControlRect();
                rect.width = Mathf.Min(rect.width, BTN_WIDTH);
                if (GUI.Button(rect, "Create Custom Time Layers Data Resource"))
                {
                    _timeLayersData = ScriptableObjectHelper.CreateAsset <CustomTimeLayersData>(CustomTimeLayersData.PATH_DEFAULTSETTINGS_FULL);
                }
            }
            else
            {
                EditorGUILayout.ObjectField("Custom Time Layers Data", _timeLayersData, typeof(CustomTimeLayersData), false);
            }

            GUILayout.EndVertical();



            EditorGUILayout.Space();
            EditorGUILayout.Space();
            this.DrawScenes();
        }