Editor/ShaderGraphPlus/Widgets/ControlWidgets/NamedRerouteReferenceControlWidget.cs
using Editor;
using ShaderGraphPlus.Nodes;
using static ShaderGraphPlus.ShaderGraphPlusGlobals;
namespace ShaderGraphPlus;
[CustomEditor( typeof( string ), NamedEditor = ControlWidgetCustomEditors.NamedRerouteReferenceEditor )]
internal sealed class NamedRerouteReferenceControlWidget : DropdownControlWidget<string>
{
ShaderGraphPlus Graph;
NamedRerouteNode Node;
public NamedRerouteReferenceControlWidget( SerializedProperty property ) : base( property )
{
Node = property.Parent.Targets.OfType<NamedRerouteNode>().FirstOrDefault();
Graph = (ShaderGraphPlus)Node.Graph;
if ( Graph is null ) return;
if ( string.IsNullOrWhiteSpace( SerializedProperty.GetValue<string>() ) )
{
SerializedProperty.SetValue<string>( "None" );
}
}
protected override IEnumerable<object> GetDropdownValues()
{
List<object> list = new();
list.Add( "None" );
foreach ( var namedRerouteDeclaration in Graph.Nodes.OfType<NamedRerouteDeclarationNode>() )
{
var entry = new Entry();
entry.Value = namedRerouteDeclaration.Name;
entry.Label = namedRerouteDeclaration.Name;
entry.Description = "";
list.Add( entry );
}
return list;
}
protected override void OnPaint()
{
base.OnPaint();
}
}