using UnityEngine; using UnityEditor; using UnityEditor.Callbacks; namespace Fungus { namespace EditorUtils { /// /// Shows Fungus section in the Edit->Preferences in unity allows you to configure Fungus behaviour /// /// ref https://docs.unity3d.com/ScriptReference/PreferenceItem.html /// [InitializeOnLoad] public static class FungusEditorPreferences { // Have we loaded the prefs yet private static bool prefsLoaded = false; const string HIDE_MUSH_KEY = "hideMushroomInHierarchy"; const string USE_LEGACY_MENUS = "useLegacyMenus"; public static bool hideMushroomInHierarchy; public static bool useLegacyMenus; static FungusEditorPreferences() { LoadOnScriptLoad(); } [SettingsProvider] public static SettingsProvider CreateFungusSettingsProvider() { // First parameter is the path in the Settings window. // Second parameter is the scope of this setting: it only appears in the Project Settings window. var provider = new SettingsProvider("Project/Fungus", SettingsScope.Project) { // Create the SettingsProvider and initialize its drawing (IMGUI) function in place: guiHandler = (searchContext) => { // Load the preferences if (!prefsLoaded) { LoadOnScriptLoad(); } // Preferences GUI hideMushroomInHierarchy = EditorGUILayout.Toggle("Hide Mushroom Flowchart Icon", hideMushroomInHierarchy); useLegacyMenus = EditorGUILayout.Toggle(new GUIContent("Legacy Menus", "Force Legacy menus for Event, Add Variable and Add Command menus"), useLegacyMenus); // Save the preferences if (GUI.changed) { EditorPrefs.SetBool(HIDE_MUSH_KEY, hideMushroomInHierarchy); EditorPrefs.SetBool(USE_LEGACY_MENUS, useLegacyMenus); } }, // // Populate the search keywords to enable smart search filtering and label highlighting: // keywords = new HashSet(new[] { "Number", "Some String" }) }; return provider; } public static void LoadOnScriptLoad() { hideMushroomInHierarchy = EditorPrefs.GetBool(HIDE_MUSH_KEY, false); useLegacyMenus = EditorPrefs.GetBool(USE_LEGACY_MENUS, false); prefsLoaded = true; } } } }