12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- using UnityEngine;
- using UnityEditor;
- using UnityEditor.UIElements;
- using UnityEngine.UIElements;
- using UnityEditor.Experimental.GraphView;
- namespace GraphProcessor
- {
- public class NodeBadgeView : IconBadge
- {
- Label label;
- Texture icon;
- Color color;
- bool isCustom;
- public NodeBadgeView(string message, NodeMessageType messageType)
- {
- switch (messageType)
- {
- case NodeMessageType.Warning:
- CreateCustom(message, EditorGUIUtility.IconContent("Collab.Warning").image, Color.yellow);
- break ;
- case NodeMessageType.Error:
- CreateCustom(message, EditorGUIUtility.IconContent("Collab.Warning").image, Color.red);
- break ;
- case NodeMessageType.Info:
- CreateCustom(message, EditorGUIUtility.IconContent("console.infoicon").image, Color.white);
- break ;
- default:
- case NodeMessageType.None:
- CreateCustom(message, null, Color.grey);
- break ;
- }
- }
- public NodeBadgeView(string message, Texture icon, Color color)
- {
- CreateCustom(message, icon, color);
- }
- void CreateCustom(string message, Texture icon, Color color)
- {
- badgeText = message;
- this.color = color;
-
- var image = this.Q< Image >("icon");
- image.image = icon;
- image.style.backgroundColor = color;
- style.color = color;
- // This will set a class name containing the hash code of the string
- // We use this little trick to retrieve the label once it is added to the graph
- visualStyle = badgeText.GetHashCode().ToString();
- }
- protected override void ExecuteDefaultAction(EventBase evt)
- {
- // When the mouse enter the icon, this will add the label to the hierarchy
- base.ExecuteDefaultAction(evt);
- if (evt.eventTypeId == MouseEnterEvent.TypeId())
- {
- // And then we can fetch it here:
- GraphView gv = GetFirstAncestorOfType<GraphView>();
- var label = gv.Q<Label>(classes: new string[]{"icon-badge__text--" + badgeText.GetHashCode()});
- if (label != null)
- label.style.color = color;
- }
- }
- }
- }
|