From b1462a62743b01f5ade1429a2ff4b6accfe97ae4 Mon Sep 17 00:00:00 2001 From: filtered <176114999+webfiltered@users.noreply.github.com> Date: Mon, 24 Mar 2025 17:10:57 +1100 Subject: [PATCH] [API] Add customisation of reroute bezier controls (#846) Allows globally setting the bezier control point offset from the reroute centre point. This can be increased to allow larger curves on longer links, or set to 0 to completely disable the spline on inter-reroute link segments. --- src/LGraphCanvas.ts | 2 +- src/Reroute.ts | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/LGraphCanvas.ts b/src/LGraphCanvas.ts index 467f86e64..6614236cf 100644 --- a/src/LGraphCanvas.ts +++ b/src/LGraphCanvas.ts @@ -4757,7 +4757,7 @@ export class LGraphCanvas implements ConnectionColorContext { } else { // Calculate start control for the next iter control point const nextPos = reroutes[j + 1]?.pos ?? endPos - const dist = Math.min(80, distance(reroute.pos, nextPos) * 0.25) + const dist = Math.min(Reroute.maxSplineOffset, distance(reroute.pos, nextPos) * 0.25) startControl = [dist * reroute.cos, dist * reroute.sin] } } diff --git a/src/Reroute.ts b/src/Reroute.ts index d5d08578c..17d1106de 100644 --- a/src/Reroute.ts +++ b/src/Reroute.ts @@ -33,6 +33,8 @@ export interface FloatingRerouteSlot { */ export class Reroute implements Positionable, LinkSegment, Serialisable { static radius: number = 10 + /** Maximum distance from reroutes to their bezier curve control points. */ + static maxSplineOffset: number = 80 static drawIdBadge: boolean = false #malloc = new Float32Array(8) @@ -417,7 +419,7 @@ export class Reroute implements Positionable, LinkSegment, Serialisable Math.PI * 0.5) diff += Math.PI - const dist = Math.min(80, distance(linkStart, this.#pos) * 0.25) + const dist = Math.min(Reroute.maxSplineOffset, distance(linkStart, this.#pos) * 0.25) // Store results const originDiff = originToReroute - diff