Пример #1
0
        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('\\', '/')));
        }
Пример #2
0
        /// <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]);
        }
Пример #3
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();
 }
Пример #4
0
        /// <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);
        }
Пример #5
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);
        }
Пример #6
0
        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>(""));
            }
        }