using System.Collections.Generic; using UnityEditor; using UnityEngine; using UnityEngine.UIElements; namespace Misaki.HdrpToon.Editor { public class UTSRendererSettingProvider : SettingsProvider { class Styles { public static GUIContent outline = new("Outline Setting"); public static GUIContent hairShadow = new("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); if (EditorGUI.EndChangeCheck()) { UTSRenderPassRegistrar.NotifyRendererSettingChanged(); } _customSettings.ApplyModifiedPropertiesWithoutUndo(); } 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; } } }