using System.Collections.Generic; using UnityEditor; using UnityEngine; using UnityEngine.UIElements; namespace Unity.Toonshader.Editor { public class UTSRendererSettingProvider : SettingsProvider { class Styles { public static GUIContent outline = new GUIContent("Outline Setting"); public static GUIContent hairShadow = new GUIContent("Hair Shadow Setting"); } private SerializedObject _customSettings; public UTSRendererSettingProvider(string path, SettingsScope scopes, IEnumerable keywords = null) : base(path, scopes, keywords) { } public override void OnActivate(string searchContext, VisualElement rootElement) { _customSettings = UTSRenderPassSettings.GetSerializedSettings(); } public override void OnGUI(string searchContext) { EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(_customSettings.FindProperty("outlineSetting"), Styles.outline); EditorGUILayout.PropertyField(_customSettings.FindProperty("hairShadowSetting"), Styles.hairShadow); _customSettings.ApplyModifiedPropertiesWithoutUndo(); if (EditorGUI.EndChangeCheck()) { RegisterUTSRenderPass.NotifyRendererSettingChanged(); } } public static bool IsSettingsAvailable() { return EditorBuildSettings.TryGetConfigObject(UTSRenderPassSettings.UTS_RENDERING_SETTINGS_NAME, out _); } [SettingsProvider] public static SettingsProvider Create() { if (IsSettingsAvailable()) { var provider = new UTSRendererSettingProvider("Project/UTS", SettingsScope.Project) { keywords = GetSearchKeywordsFromGUIContentProperties() }; return provider; } return null; } } }