summaryrefslogtreecommitdiff
path: root/Other/NodeEditorExamples/Assets/Editor/NodeEditor.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Other/NodeEditorExamples/Assets/Editor/NodeEditor.cs')
-rw-r--r--Other/NodeEditorExamples/Assets/Editor/NodeEditor.cs50
1 files changed, 50 insertions, 0 deletions
diff --git a/Other/NodeEditorExamples/Assets/Editor/NodeEditor.cs b/Other/NodeEditorExamples/Assets/Editor/NodeEditor.cs
new file mode 100644
index 00000000..5d05072e
--- /dev/null
+++ b/Other/NodeEditorExamples/Assets/Editor/NodeEditor.cs
@@ -0,0 +1,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);
+ }
+}
+