public static string GetPresetsLocation() { EditorMenuCreatorSettings settings = GetEditorMenuCreatorSettings(); string result; if (settings.HasCustomPresetFolder) { result = settings.CustomPresetFolderFull; } else { MenuCreatorPreset[] menuCreatorPresets = Resources.LoadAll <MenuCreatorPreset>(""); if (menuCreatorPresets != null && menuCreatorPresets.Length >= 0) { string assetPath = AssetDatabase.GetAssetPath(menuCreatorPresets[0]); // Remove the Assets/ part. This is also included in the dataPath. string subString = assetPath.Substring(7); result = Path.GetDirectoryName(Path.Combine(Application.dataPath, subString)); } else { // We don't have any presets and no customPresetFolder is set. Return the default relative folder. result = Path.Combine(MenuControllerSharedProps.RESOURCE_PATH, "Presets"); // TODO: check if we should use 'result' here in CreateDirectory or not Directory.CreateDirectory(MenuControllerSharedProps.RESOURCE_PATH); } } return(string.Format("Assets{0}", result.Replace(Application.dataPath, "").Replace('\\', '/'))); }
/// <summary> /// Returns the settings object. /// If no settings object can be found, a new one is made. /// </summary> /// <returns></returns> public static EditorMenuCreatorSettings GetEditorMenuCreatorSettings() { EditorMenuCreatorSettings[] findObjectsOfTypeAll = Resources.LoadAll <EditorMenuCreatorSettings>(""); if (findObjectsOfTypeAll == null || findObjectsOfTypeAll.Length <= 0) { Debug.LogError("You seem to have deleted the <EditorMenuCreatorSettings> file from the Resources folder. A new one will be generated, you can move this one around as long as its in a <Resources> folder."); Directory.CreateDirectory(MenuControllerSharedProps.RESOURCE_PATH); string path = Path.Combine(MenuControllerSharedProps.RESOURCE_PATH, "EditorMenuCreatorSettings.asset"); Debug.Log(string.Format("Creating settingsobject in: {0}", path)); EditorMenuCreatorSettings settingsAsset = CreateInstance <EditorMenuCreatorSettings>(); AssetDatabase.CreateAsset(settingsAsset, path); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); return(settingsAsset); } if (findObjectsOfTypeAll.Length > 1) { Debug.LogError("You seem to have multiple <EditorMenuCreatorSettings> files in your Resources folder. The first one found is used, please delete the others."); for (int i = 0; i < findObjectsOfTypeAll.Length; i++) { Debug.Log("Found one at: " + AssetDatabase.GetAssetPath(findObjectsOfTypeAll[i])); } } return(findObjectsOfTypeAll[0]); }
/// <summary> /// After calling this, you can be sure that <see cref="_editorMenuCreatorSettings"/> has a value. /// </summary> private void EnsureSettingsObject() { if (_editorMenuCreatorSettings) { return; } _editorMenuCreatorSettings = EditorMenuCreatorSettings.GetEditorMenuCreatorSettings(); }
/// <summary> /// Loads all presets of menus. /// </summary> /// <returns>True if it found any presets, false if not.</returns> private bool CheckPresets() { if (_presets == null) { _presets = EditorMenuCreatorSettings.GetAllPresets(); } // Update tooltips and titles. _presetTitles = new string[_presets.Length]; _presetDescriptions = new string[_presets.Length]; for (int i = 0; i < _presets.Length; i++) { _presetTitles[i] = _presets[i].Title; _presetDescriptions[i] = _presets[i].Description; } return(_presets != null && _presets.Length > 0); }
/// <summary> /// Create a new preset. /// </summary> /// <param name="newFileName"></param> /// <returns></returns> private MenuCreatorPreset CreatePreset(string newFileName) { if (string.IsNullOrEmpty(newFileName)) { CreatePreset("newPreset"); } string path = string.Format("{0}/{1}.asset", EditorMenuCreatorSettings.GetPresetsLocation(), newFileName); Debug.Log("Creating at: " + path); if (AssetDatabase.LoadAssetAtPath(path, typeof(MenuCreatorPreset))) { return(CreatePreset(newFileName + "_")); } MenuCreatorPreset menuCreatorPreset = CreateInstance <MenuCreatorPreset>(); menuCreatorPreset.Title = newFileName; AssetDatabase.CreateAsset(menuCreatorPreset, path); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); return(menuCreatorPreset); }
public static MenuCreatorPreset[] GetAllPresets() { EditorMenuCreatorSettings settings = GetEditorMenuCreatorSettings(); if (settings.HasCustomPresetFolder) { List <MenuCreatorPreset> result = new List <MenuCreatorPreset>(); string[] aMaterialFiles = Directory.GetFiles(settings.CustomPresetFolderFull, "*.asset", SearchOption.AllDirectories); foreach (string matFile in aMaterialFiles) { string assetPath = string.Format("Assets{0}", matFile.Replace(Application.dataPath, "").Replace('\\', '/')); MenuCreatorPreset menuCreatorPreset = AssetDatabase.LoadAssetAtPath <MenuCreatorPreset>(assetPath); result.Add(menuCreatorPreset); } return(result.ToArray()); } else { return(Resources.LoadAll <MenuCreatorPreset>("")); } }