diff --git a/Scripts/Editor/NodeEditorGUI.cs b/Scripts/Editor/NodeEditorGUI.cs index 6cb17cb..c41afd0 100644 --- a/Scripts/Editor/NodeEditorGUI.cs +++ b/Scripts/Editor/NodeEditorGUI.cs @@ -116,7 +116,7 @@ namespace XNodeEditor { contextMenu.DropDown(new Rect(Event.current.mousePosition, Vector2.zero)); if (NodeEditorPreferences.GetSettings().autoSave) AssetDatabase.SaveAssets(); } - + static Vector2 CalculateBezierPoint(Vector2 p0, Vector2 p1, Vector2 p2, Vector2 p3, float t) { float u = 1 - t; float tt = t * t, uu = u * u; @@ -135,7 +135,7 @@ namespace XNodeEditor { polyLineTempArray[1].y = p1.y; Handles.DrawAAPolyLine(thickness, polyLineTempArray); } - + /// Draw a bezier from output to input in grid coordinates public void DrawNoodle(Gradient gradient, NoodlePath path, NoodleStroke stroke, float thickness, List gridPoints) { // convert grid points to window points @@ -178,16 +178,16 @@ namespace XNodeEditor { // Coloring and bezier drawing. int draw = 0; Vector2 bezierPrevious = point_a; - for (int j = 1; j <= division; ++j) - { + for (int j = 1; j <= division; ++j) { if (stroke == NoodleStroke.Dashed) { draw++; if (draw >= 2) draw = -2; if (draw < 0) continue; + if (draw == 0) bezierPrevious = CalculateBezierPoint(point_a, tangent_a, tangent_b, point_b, (j - 1f) / (float) division); } if (i == length - 2) Handles.color = gradient.Evaluate((j + 1f) / division); - Vector2 bezierNext = CalculateBezierPoint(point_a, tangent_a, tangent_b, point_b, j / (float)division); + Vector2 bezierNext = CalculateBezierPoint(point_a, tangent_a, tangent_b, point_b, j / (float) division); DrawAAPolyLineNonAlloc(thickness, bezierPrevious, bezierNext); bezierPrevious = bezierNext; }