You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.2 KiB
47 lines
1.2 KiB
using System; |
|
using System.Reflection; |
|
using UnityEditor.UIElements; |
|
using UnityEngine; |
|
using UnityEngine.UIElements; |
|
|
|
namespace UnityEditor.ShaderGraph.Drawing.Controls |
|
{ |
|
[AttributeUsage(AttributeTargets.Property)] |
|
class ButtonControlAttribute : Attribute, IControlAttribute |
|
{ |
|
public ButtonControlAttribute() |
|
{ |
|
} |
|
|
|
public VisualElement InstantiateControl(AbstractMaterialNode node, PropertyInfo propertyInfo) |
|
{ |
|
return new ButtonControlView(node, propertyInfo); |
|
} |
|
} |
|
|
|
[Serializable] |
|
struct ButtonConfig |
|
{ |
|
public string text; |
|
public Action action; |
|
} |
|
|
|
class ButtonControlView : VisualElement |
|
{ |
|
public ButtonControlView(AbstractMaterialNode node, PropertyInfo propertyInfo) |
|
{ |
|
AbstractMaterialNode m_Node; |
|
|
|
m_Node = node; |
|
|
|
Type type = propertyInfo.PropertyType; |
|
if (type != typeof(ButtonConfig)) |
|
{ |
|
throw new ArgumentException("Property must be a ButtonConfig.", "propertyInfo"); |
|
} |
|
var value = (ButtonConfig)propertyInfo.GetValue(m_Node, null); |
|
|
|
Add(new Button(value.action) { text = value.text }); |
|
} |
|
} |
|
}
|
|
|