#if (UNITY_EDITOR && !UNITY_EDITOR_LINUX) namespace ECE { using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; public class VHACDScriptableSettings : ScriptableObject { [SerializeField] VHACDParameters _vhacdParameters; public VHACDParameters GetParameters() { return _vhacdParameters; } public void SetParameters(VHACDParameters parameters) { VHACDParameters copy = new VHACDParameters(parameters); _vhacdParameters = copy; } /// /// Saves the current parameters after popping up a save file panel asking where to save. /// /// public static void Save(VHACDParameters vhacdParamsToSave) { string firstAssetPath = FindFirstSOAssetPath(); string path = EditorUtility.SaveFilePanel("Select where to save the current VHACD Settings.", firstAssetPath, "VHACDSettings", "asset"); if (path.Contains(Application.dataPath)) { path = path.Replace(Application.dataPath, "Assets"); if (!string.IsNullOrEmpty(path)) { VHACDScriptableSettings settingstoSave = ScriptableObject.CreateInstance(); settingstoSave.SetParameters(vhacdParamsToSave); AssetDatabase.CreateAsset(settingstoSave, path); AssetDatabase.SaveAssets(); } } } /// /// Pops open a file panel and loads /// /// public static VHACDScriptableSettings Load() { string firstAssetPath = FindFirstSOAssetPath(); // probably just better to load wherever it finds a vhacd settings object. string path = EditorUtility.OpenFilePanel("Select VHACD Settings to Load", firstAssetPath, "asset"); path = path.Replace(Application.dataPath, "Assets"); VHACDScriptableSettings settings = AssetDatabase.LoadAssetAtPath(path); return settings; } public static string FindFirstSOAssetPath() { string[] ecp = AssetDatabase.FindAssets("t:VHACDScriptableSettings"); string assetPath = ""; if (ecp.Length > 0) { assetPath = AssetDatabase.GUIDToAssetPath(ecp[0]); } if (!string.IsNullOrEmpty(assetPath)) { int index = assetPath.LastIndexOf("/"); if (index >= 0) { assetPath = assetPath.Remove(index, assetPath.Length - index); } } return assetPath; } } } #endif