Ein Toggle in der Graph-Kopfzeile lässt gezogene Nodes auf dem 24er-Raster einrasten – derselben Größe, die den Hintergrund zeichnet. Einschalten bewegt nichts; die Regel greift erst beim nächsten Zug. Bei Mehrfachauswahl richtet sich jeder Node für sich aus, statt einem gemeinsamen Versatz zu folgen, der die alten krummen Abstände mitschleppen würde. Die Entscheidung liegt als reine Funktion in framing.ts, wo die übrige Graph-Geometrie schon wohnt, und ist dort wie im Browser gepinnt.
1.2 KiB
beim graph bräuchte ich einen toggle der grid snapping aktiviert. alle vorhandenen nodes soll da bleiben wo sie sind, erst wenn man ein node bewegt soll es greifen die grid-größe kannst du selbst entscheiden, am besten ein sinnvoller wert
Gebaut. Zwei Dinge, die weder oben stehen noch aus dem Commit hervorgehen:
Die Rastergröße ist 24 px – dieselbe Zahl, die den Hintergrund zeichnet (GRID_STEP). Es gibt
also keinen zweiten, unsichtbaren Raster: was einrastet, rastet auf einer Linie ein, die man sieht.
Bei starkem Herauszoomen blendet das Raster aus (MIN_GRID_STEP), der Snap-Schritt bleibt aber
derselbe – er hängt an Weltkoordinaten, nicht am Zoom.
Bei Mehrfachauswahl richtet sich jeder Node für sich aus (Nachtrag des Users während der
Arbeit). Die erste Fassung verschob die Auswahl um einen gemeinsamen Versatz, was ihre alten,
krummen Abstände mitschleppte: nur der Ankerknoten landete auf einer Linie. Jetzt ist dragOffset
pro Node definiert – jeder bekommt seinen eigenen Versatz, die Auswahl fluchtet danach wirklich.
Der Preis ist bewusst: die relativen Abstände innerhalb der Auswahl können sich um bis zu einen
halben Schritt ändern.