From cdb08154e2273ac6b4e2ab65dc2a6dc32d35bcde Mon Sep 17 00:00:00 2001 From: MYTNB <1046764532@qq.com> Date: Sun, 9 Aug 2020 11:20:17 +0800 Subject: [PATCH] # add Node header tooltip --- Scripts/Editor/NodeEditorGUI.cs | 14 +++++++++++++- Scripts/Editor/NodeGraphEditor.cs | 4 ++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/Scripts/Editor/NodeEditorGUI.cs b/Scripts/Editor/NodeEditorGUI.cs index a14bf7d..a88e1b0 100755 --- a/Scripts/Editor/NodeEditorGUI.cs +++ b/Scripts/Editor/NodeEditorGUI.cs @@ -556,7 +556,9 @@ namespace XNodeEditor { } private void DrawTooltip() { - if (hoveredPort != null && NodeEditorPreferences.GetSettings().portTooltips && graphEditor != null) { + if (!NodeEditorPreferences.GetSettings().portTooltips && graphEditor != null) + return; + if (hoveredPort != null) { string tooltip = graphEditor.GetPortTooltip(hoveredPort); if (string.IsNullOrEmpty(tooltip)) return; GUIContent content = new GUIContent(tooltip); @@ -566,6 +568,16 @@ namespace XNodeEditor { EditorGUI.LabelField(rect, content, NodeEditorResources.styles.tooltip); Repaint(); } + else if (hoveredNode != null && IsHoveringNode && IsHoveringTitle(hoveredNode)) { + string tooltip = graphEditor.GetNodeTooltip(hoveredNode); + if (string.IsNullOrEmpty(tooltip)) return; + GUIContent content = new GUIContent(tooltip); + Vector2 size = NodeEditorResources.styles.tooltip.CalcSize(content); + size.x += 8; + Rect rect = new Rect(Event.current.mousePosition - (size), size); + EditorGUI.LabelField(rect, content, NodeEditorResources.styles.tooltip); + Repaint(); + } } } } diff --git a/Scripts/Editor/NodeGraphEditor.cs b/Scripts/Editor/NodeGraphEditor.cs index 01de70e..d2bf45c 100644 --- a/Scripts/Editor/NodeGraphEditor.cs +++ b/Scripts/Editor/NodeGraphEditor.cs @@ -158,6 +158,10 @@ namespace XNodeEditor { return tooltip; } + public virtual string GetNodeTooltip(XNode.Node node) { + return null; + } + /// Deal with objects dropped into the graph through DragAndDrop public virtual void OnDropObjects(UnityEngine.Object[] objects) { if (GetType() != typeof(NodeGraphEditor)) Debug.Log("No OnDropObjects override defined for " + GetType());