1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- 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});
- }
- }
- }
|