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++) {