study/first_study/Library/PackageCache/com.unity.render-pipelines.universal@d10049dfa479/Editor/Converter/RenderPipelineConverterItemVisualElement.cs
jh04010421 739d49f1a0 Unity | 2026.01.20
수업 실습 파일
2026-01-20 11:01:57 +09:00

78 lines
2.8 KiB
C#

using System;
using UnityEngine;
using UnityEngine.UIElements;
namespace UnityEditor.Rendering.Universal
{
internal class RenderPipelineConverterItemVisualElement : VisualElement
{
const string k_Uxml = "Packages/com.unity.render-pipelines.universal/Editor/Converter/converter_widget_item.uxml";
static Lazy<VisualTreeAsset> s_VisualTreeAsset = new Lazy<VisualTreeAsset>(() => AssetDatabase.LoadAssetAtPath<VisualTreeAsset>(k_Uxml));
VisualElement m_RootVisualElement;
Toggle m_ItemSelectedToggle;
ConverterItemState m_ConverterItemState;
public Action itemSelectionChanged;
public RenderPipelineConverterItemVisualElement()
{
m_RootVisualElement = new VisualElement();
s_VisualTreeAsset.Value.CloneTree(m_RootVisualElement);
m_ItemSelectedToggle = m_RootVisualElement.Q<Toggle>("converterItemActive");
m_ItemSelectedToggle.RegisterCallback<ClickEvent>(evt =>
{
if (m_ConverterItemState != null)
{
m_ConverterItemState.isActive = !m_ConverterItemState.isActive;
itemSelectionChanged?.Invoke();
}
});
Add(m_RootVisualElement);
}
public void Bind(ConverterItemState itemState)
{
m_ConverterItemState = itemState;
m_ItemSelectedToggle.SetValueWithoutNotify(m_ConverterItemState.isActive);
var desc = m_ConverterItemState.descriptor;
m_RootVisualElement.Q<Label>("converterItemName").text = desc.name;
m_RootVisualElement.Q<Label>("converterItemPath").text = desc.info;
if (!string.IsNullOrEmpty(desc.helpLink))
{
m_RootVisualElement.Q<Image>("converterItemHelpIcon").image = CoreEditorStyles.iconHelp;
m_RootVisualElement.Q<Image>("converterItemHelpIcon").tooltip = desc.helpLink;
}
// Changing the icon here depending on the status.
Texture2D icon = null;
Status status = m_ConverterItemState.status;
switch (status)
{
case Status.Pending:
icon = CoreEditorStyles.iconPending;
break;
case Status.Error:
icon = CoreEditorStyles.iconFail;
break;
case Status.Warning:
icon = CoreEditorStyles.iconWarn;
break;
case Status.Success:
icon = CoreEditorStyles.iconComplete;
break;
}
m_RootVisualElement.Q<Image>("converterItemStatusIcon").image = icon;
m_RootVisualElement.Q<Image>("converterItemStatusIcon").tooltip = m_ConverterItemState.message;
}
}
}