using System.Collections.Generic; using System.Reflection; using UnityEditor.PackageManager; using UnityEditor.PackageManager.Requests; using UnityEngine; using UnityEngine.Rendering; using UnityEngine.Rendering.HighDefinition; namespace UnityEditor.Rendering.HighDefinition.Core { static class PackageManagerHelper { public static void OpenPackageManagerToPackage(string packageName) { var packageManagerUI = typeof(Editor).Assembly .GetType("UnityEditor.PackageManager.UI.Window"); if (packageManagerUI != null) { var openMethod = packageManagerUI.GetMethod("Open", BindingFlags.Public | BindingFlags.Static); openMethod?.Invoke(null, new object[] { packageName }); } else { Debug.LogWarning("Could not find PackageManager UI type. Package Manager may have changed."); } } } /// /// Editor Preferences for HDRP /// [DisplayInfo(name = "High Definition Render Pipeline", order = 200)] public class HDRenderPipelinePreferencesProvider : ICoreRenderPipelinePreferencesProvider { class Styles { public static readonly GUIContent configPackageLabel = new("Config Package", "Choose whether to embed or sync with registry version."); public static readonly GUIContent viewInPackageManagerLabel = new("View in Package Manager", ""); public static readonly GUIContent hdrpProjectSettingsPathLabel = EditorGUIUtility.TrTextContent("Resources Folder Name", "Resources Folder will be the one where to get project elements related to HDRP as default scene and default settings."); public static readonly GUIContent matcapViewMixAlbedoLabel = EditorGUIUtility.TrTextContent("MatCap Mode Mix Albedo", "Enable to make HDRP mix the albedo of the Material with its material capture."); public static readonly GUIContent matcapViewScaleLabel = EditorGUIUtility.TrTextContent("MatCap Mode Intensity Scale", "Set the intensity of the material capture. This increases the brightness of the Scene. This is useful if the albedo darkens the Scene considerably."); } static List s_SearchKeywords = new() { "MatCap Mode", "Intensity scale", "Mix Albedo", "Default Resources Folder", "Config Package" }; /// /// Keyworks for the preferences /// public List keywords => s_SearchKeywords; /// /// UI for the preferences. /// public void PreferenceGUI() { EditorGUI.indentLevel++; HDProjectSettings.projectSettingsFolderPath = EditorGUILayout.TextField(Styles.hdrpProjectSettingsPathLabel, HDProjectSettings.projectSettingsFolderPath); DrawConfigPackageDropdown(); DrawMatCapDefaults(); EditorGUI.indentLevel--; } void DrawMatCapDefaults() { var matCapMode = HDRenderPipelinePreferences.matCapMode; matCapMode.mixAlbedo.value = EditorGUILayout.Toggle(Styles.matcapViewMixAlbedoLabel, matCapMode.mixAlbedo.value); if (matCapMode.mixAlbedo.value) matCapMode.viewScale.value = EditorGUILayout.FloatField(Styles.matcapViewScaleLabel, matCapMode.viewScale.value); } private const string k_PackageName = "com.unity.render-pipelines.high-definition-config"; void DrawConfigPackageDropdown() { GUILayout.BeginHorizontal(); EditorGUILayout.LabelField(Styles.configPackageLabel, GUILayout.Width(EditorGUIUtility.labelWidth)); if (GUILayout.Button(Styles.viewInPackageManagerLabel, GUILayout.Width(200))) { PackageManagerHelper.OpenPackageManagerToPackage(k_PackageName); } GUILayout.EndHorizontal(); } } }