using System; using System.Collections.Generic; using System.Text; using UnityEditor.Categorization; using UnityEditor.Rendering.Converter; using UnityEngine; using UnityEngine.UIElements; namespace UnityEditor.Rendering.Converter { internal class RenderPipelineConverterVisualElement : VisualElement { const string k_Uxml = "Packages/com.unity.render-pipelines.core/Editor-PrivateShared/Tools/Converter/Window/RenderPipelineConverterVisualElement.uxml"; const string k_Uss = "Packages/com.unity.render-pipelines.core/Editor-PrivateShared/Tools/Converter/Window/RenderPipelineConverterVisualElement.uss"; static Lazy s_VisualTreeAsset = new Lazy(() => AssetDatabase.LoadAssetAtPath(k_Uxml)); static Lazy s_StyleSheet = new Lazy(() => AssetDatabase.LoadAssetAtPath(k_Uss)); Node m_ConverterInfo; public string displayName => m_ConverterInfo.name; public string description => m_ConverterInfo.description; public ConverterState state => m_ConverterInfo.data.state; public IRenderPipelineConverter converter => m_ConverterInfo.data.converter as IRenderPipelineConverter; public bool isSelectedAndEnabled => converter.isEnabled && state.isSelected; VisualElement m_RootVisualElement; ListView m_ItemsList; HeaderFoldout m_HeaderFoldout; VisualElement m_ListViewHeader; HelpBox m_NoItemsFound; HelpBox m_PressScan; Label m_PendingLabel; Label m_WarningLabel; Label m_ErrorLabel; Label m_SuccessLabel; public Action showMoreInfo; // TODO Remove with the UX rework public Action converterSelected; public RenderPipelineConverterVisualElement(Node converterInfo) { m_ConverterInfo = converterInfo; m_RootVisualElement = new VisualElement(); s_VisualTreeAsset.Value.CloneTree(m_RootVisualElement); m_RootVisualElement.styleSheets.Add(s_StyleSheet.Value); m_HeaderFoldout = m_RootVisualElement.Q("conveterFoldout"); m_HeaderFoldout.text = displayName; m_HeaderFoldout.tooltip = (converter.isEnabled) ? description : converter.isDisabledMessage; m_HeaderFoldout.SetEnabled(converter.isEnabled); m_HeaderFoldout.value = state.isExpanded; m_HeaderFoldout.RegisterCallback>((evt) => { state.isExpanded = evt.newValue; }); m_HeaderFoldout.showEnableCheckbox = true; m_HeaderFoldout.documentationURL = converterInfo.helpUrl; m_HeaderFoldout.enableToggle.SetValueWithoutNotify(state.isSelected); m_HeaderFoldout.enableToggle.RegisterCallback((evt) => { state.isSelected = !state.isSelected; converterSelected?.Invoke(); UpdateConversionInfo(); }); var allLabel = m_RootVisualElement.Q