summaryrefslogtreecommitdiff
path: root/Other/NodeEditorExamples/Assets/xNode-examples/Examples/LogicToy/Editor/LogicNodeEditor.cs
blob: 24a8d6033ea39455d2eea188ae836563a3f25274 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
using UnityEditor;
using UnityEngine;
using XNode;
using XNode.Examples.LogicToy;

namespace XNodeEditor.Examples.LogicToy {
	[CustomNodeEditor(typeof(LogicNode))]
	public class LogicNodeEditor : NodeEditor {
		private LogicNode node;
		private LogicGraphEditor graphEditor;

		public override void OnHeaderGUI() {
			// Initialization
			if (node == null) {
				node = target as LogicNode;
				graphEditor = NodeGraphEditor.GetEditor(target.graph, window) as LogicGraphEditor;
			}

			base.OnHeaderGUI();
			Rect dotRect = GUILayoutUtility.GetLastRect();
			dotRect.size = new Vector2(16, 16);
			dotRect.y += 6;

			GUI.color = graphEditor.GetLerpColor(Color.red, Color.green, node, node.led);
			GUI.DrawTexture(dotRect, NodeEditorResources.dot);
			GUI.color = Color.white;
		}

		public override void OnBodyGUI() {
			if (target == null) {
				Debug.LogWarning("Null target node for node editor!");
				return;
			}
			NodePort input = target.GetPort("input");
			NodePort output = target.GetPort("output");

			GUILayout.BeginHorizontal();
			if (input != null) NodeEditorGUILayout.PortField(GUIContent.none, input, GUILayout.MinWidth(0));
			if (output != null) NodeEditorGUILayout.PortField(GUIContent.none, output, GUILayout.MinWidth(0));
			GUILayout.EndHorizontal();
			EditorGUIUtility.labelWidth = 60;
			base.OnBodyGUI();
		}
	}
}