internal static HierarchySettings GetAssets()
        {
            if (instance != null)
            {
                return(instance);
            }

            var guids = AssetDatabase.FindAssets(string.Format("t:{0}", typeof(HierarchySettings).Name));

            for (int i = 0; i < guids.Length; i++)
            {
                instance = AssetDatabase.LoadAssetAtPath <HierarchySettings>(AssetDatabase.GUIDToAssetPath(guids[i]));
                if (instance != null)
                {
                    return(instance);
                }
            }

            // Settings file doesn't exist, create one
            const string settingsSavePath = "Assets/Hierarchy 2/Editor/Settings.asset";

            Directory.CreateDirectory(Path.GetDirectoryName(settingsSavePath));

            AssetDatabase.CreateAsset(CreateInstance <HierarchySettings>(), settingsSavePath);
            AssetDatabase.SaveAssets();
            instance = AssetDatabase.LoadAssetAtPath <HierarchySettings>(settingsSavePath);

            Debug.Log("Created Hierarchy 2 settings file at " + settingsSavePath + ". You can move this file around freely.", instance);

            return(instance);
        }
        internal static HierarchySettings CreateAssets()
        {
            String path = EditorUtility.SaveFilePanelInProject("Save as...", "Settings", "asset", "");

            if (path.Length > 0)
            {
                HierarchySettings settings = ScriptableObject.CreateInstance <HierarchySettings>();
                AssetDatabase.CreateAsset(settings, path);
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();
                EditorUtility.FocusProjectWindow();
                Selection.activeObject = settings;
                return(settings);
            }
            return(null);
        }
        internal static HierarchySettings GetAssets()
        {
            if (instance != null)
            {
                return(instance);
            }

            var guids = AssetDatabase.FindAssets(string.Format("t:{0}", typeof(HierarchySettings).Name));

            for (int i = 0; i < guids.Length; i++)
            {
                instance = AssetDatabase.LoadAssetAtPath <HierarchySettings>(AssetDatabase.GUIDToAssetPath(guids[i]));
                if (instance != null)
                {
                    return(instance);
                }
            }

            return(instance = CreateAssets());
        }
 void OnEnable() => settings = target as HierarchySettings;