using UnityEngine; #if UNITY_EDITOR using UnityEditor; #endif namespace Obi { public class ObiEditorSettings : ScriptableObject { public const string m_ObiEditorSettingsPath = "Assets/ObiEditorSettings.asset"; [SerializeField] private Color m_ParticleBrush; [SerializeField] private Color m_BrushWireframe; [SerializeField] private Color m_Particle; [SerializeField] private Color m_SelectedParticle; [SerializeField] private Color m_ActiveParticle; [SerializeField] private Gradient m_PropertyGradient; [SerializeField] private bool m_ParticlePicking; public Color brushColor { get { return m_ParticleBrush; } } public Color brushWireframeColor { get { return m_BrushWireframe; } } public Color particleColor { get { return m_Particle; } } public Color selectedParticleColor { get { return m_SelectedParticle; } } public Color activeParticleColor { get { return m_ActiveParticle; } } public Gradient propertyGradient { get { return m_PropertyGradient; } } public bool sceneViewParticlePicking { get { return m_ParticlePicking; } } #if UNITY_EDITOR public static ObiEditorSettings GetOrCreateSettings() { var settings = AssetDatabase.LoadAssetAtPath(m_ObiEditorSettingsPath); if (settings == null) { settings = ScriptableObject.CreateInstance(); settings.m_ParticleBrush = new Color32(243, 77, 43, 255); settings.m_BrushWireframe = new Color32(0, 0, 0, 128); settings.m_Particle = new Color32(240, 240, 240, 255); settings.m_SelectedParticle = new Color32(243, 77, 43, 255); settings.m_ActiveParticle = new Color32(243, 243, 43, 255); settings.m_PropertyGradient = new Gradient(); settings.m_ParticlePicking = true; // Populate the color keys at the relative time 0 and 1 (0 and 100%) var colorKey = new GradientColorKey[2]; colorKey[0].color = Color.grey * 0.7f; colorKey[0].time = 0.0f; colorKey[1].color = Color.white; colorKey[1].time = 1.0f; // Populate the alpha keys at relative time 0 and 1 (0 and 100%) var alphaKey = new GradientAlphaKey[2]; alphaKey[0].alpha = 1.0f; alphaKey[0].time = 0.0f; alphaKey[1].alpha = 1.0f; alphaKey[1].time = 1.0f; settings.m_PropertyGradient.SetKeys(colorKey, alphaKey); AssetDatabase.CreateAsset(settings, m_ObiEditorSettingsPath); AssetDatabase.SaveAssets(); } return settings; } public static SerializedObject GetSerializedSettings() { return new SerializedObject(GetOrCreateSettings()); } #endif } }