using System.Collections.Generic; using UnityEditor; using UnityEngine; using UnityEngine.UIElements; namespace Misaki.HdrpToon.Editor { public class UTSRendererSettingProvider : SettingsProvider { class Styles { public static GUIContent hairShadow = new("Hair Shadow"); public static GUIContent hairBlending = new("Hair Blending"); public static GUIContent outline = new("Outline"); } 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("hairShadowSetting"), Styles.hairShadow); EditorGUILayout.PropertyField(_customSettings.FindProperty("hairBlendingSetting"), Styles.hairBlending); EditorGUILayout.PropertyField(_customSettings.FindProperty("outlineSetting"), Styles.outline); _customSettings.ApplyModifiedPropertiesWithoutUndo(); if (EditorGUI.EndChangeCheck()) { UTSRenderPassRegistrar.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; } } }