summaryrefslogtreecommitdiff
path: root/Other/NodeEditorExamples/Assets/Editor/NodeEditor.cs
blob: 5d05072ea0bf27ffc0352bff713e3cfada4dc0e6 (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
46
47
48
49
50
using UnityEngine;
using UnityEditor;

public class NodeEditor : EditorWindow
{

	Rect window1;
	Rect window2;

	[MenuItem("Window/Node editor")]
	static void ShowEditor()
	{
		NodeEditor editor = EditorWindow.GetWindow<NodeEditor>();
		editor.Init();
	}

	public void Init()
	{
		window1 = new Rect(10, 10, 100, 100);
		window2 = new Rect(210, 210, 100, 100);
	}

	void OnGUI()
	{
		DrawNodeCurve(window1, window2); // Here the curve is drawn under the windows

		BeginWindows();
		window1 = GUI.Window(1, window1, DrawNodeWindow, "Window 1");   // Updates the Rect's when these are dragged
		window2 = GUI.Window(2, window2, DrawNodeWindow, "Window 2");
		EndWindows();
	}

	void DrawNodeWindow(int id)
	{
		GUI.DragWindow();
	}

	void DrawNodeCurve(Rect start, Rect end)
	{
		Vector3 startPos = new Vector3(start.x + start.width, start.y + start.height / 2, 0);
		Vector3 endPos = new Vector3(end.x, end.y + end.height / 2, 0);
		Vector3 startTan = startPos + Vector3.right * 50;
		Vector3 endTan = endPos + Vector3.left * 50;
		Color shadowCol = new Color(0, 0, 0, 0.06f);
		for (int i = 0; i < 3; i++) // Draw a shadow
			Handles.DrawBezier(startPos, endPos, startTan, endTan, shadowCol, null, (i + 1) * 5);
		Handles.DrawBezier(startPos, endPos, startTan, endTan, Color.black, null, 1);
	}
}