From 83843f4bbc063b2a093613596ca7bb3398aa4e06 Mon Sep 17 00:00:00 2001 From: Brice Vandemoortele Date: Wed, 30 Sep 2020 10:48:16 +0200 Subject: [PATCH] applyWindowCulling condition to skip edge rendering --- Scripts/Editor/NodeEditorGUI.cs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/Scripts/Editor/NodeEditorGUI.cs b/Scripts/Editor/NodeEditorGUI.cs index 21d6d0f..fe9279d 100755 --- a/Scripts/Editor/NodeEditorGUI.cs +++ b/Scripts/Editor/NodeEditorGUI.cs @@ -142,11 +142,21 @@ namespace XNodeEditor { } /// Draw a bezier from output to input in grid coordinates - public void DrawNoodle(Gradient gradient, NoodlePath path, NoodleStroke stroke, float thickness, List gridPoints) { + public void DrawNoodle(Gradient gradient, NoodlePath path, NoodleStroke stroke, float thickness, List gridPoints, bool applyWindowCulling = false) { // convert grid points to window points for (int i = 0; i < gridPoints.Count; ++i) gridPoints[i] = GridToWindowPosition(gridPoints[i]); + if (applyWindowCulling) + { + var p0 = gridPoints[0]; + var p1 = gridPoints[1]; + + var windowRect = new Rect(Vector2.zero, new Vector2(position.width, position.height)); + + if (!windowRect.Contains(p0) && !windowRect.Contains(p1)) return; + } + Color originalHandlesColor = Handles.color; Handles.color = gradient.Evaluate(0f); int length = gridPoints.Count; @@ -354,7 +364,7 @@ namespace XNodeEditor { gridPoints.Add(fromRect.center); gridPoints.AddRange(reroutePoints); gridPoints.Add(toRect.center); - DrawNoodle(noodleGradient, noodlePath, noodleStroke, noodleThickness, gridPoints); + DrawNoodle(noodleGradient, noodlePath, noodleStroke, noodleThickness, gridPoints, true); // Loop through reroute points again and draw the points for (int i = 0; i < reroutePoints.Count; i++) {