Connection Line Styles

How connections are drawn is a per-asset, swappable line drawing policy - an Instanced object on GraphConfig.LineDrawingPolicy. All policies share the line colors, thickness, brush, and default start/end anchors, honor per-edge color overrides, and render identically in the editor preview and at runtime.

PolicyLook
USkillTreeLineDrawingPolicy_StraightLineDirect line between anchors (default)
USkillTreeLineDrawingPolicy_ElbowLineThree-segment vertical->horizontal->vertical elbow
UCrimsonSkillTreeWidget_LineDrawingPolicy_SplineDesigner-authored cubic-bezier curves with material support

Anchors (every line style)

Every connection attaches to its two nodes at an anchor. The policy's Default Start Anchor / Default End Anchor set the default for all connections; override either end per connection by clicking the line in the Visual graph. Anchors work the same for straight, elbow, and spline.

ModeWhere the line attaches
CenterNode centre
NearestThe point on the node's shape facing the other node
Top / Bottom / Left / RightThat edge of the node's shape
CustomNode centre plus an offset

Anchors attach to the node's shape, not its bounding box, so lines meet round, hexagonal, and triangular nodes cleanly. When a node widget's art doesn't fill its slot, the per-widget Connection Anchor Inset pulls the attach point in to the visible edge. The editor preview and the in-game line use the same anchor maths, so what you place is what ships.

Edit by selecting the line
Click a connection line to select it (it highlights) - the Details panel then shows that connection's anchors, custom offsets, and material override, with or without control points. See How-To: Style Connections.

The Spline policy

The Spline policy gives complete control over each connection's shape and look. A connection's path is authored on the Visual graph as a chain of control points and compiled into UCrimsonSkillTree::ConnectionPaths (GUID-keyed by parent/child) - mirroring how node layout compiles into NodePresentations.

AspectModel
CurveCubic bezier through FCrimsonSkillTree_SplineControlPoints; tangents per the Curve-Editor model (Auto / User / Break / Weighted / Linear)
MaterialDrawn via a UV-mapped triangle strip with continuous arc-length UVs, so a flowing material runs end-to-end; color-only fallback when no brush resource is set
WYSIWYGEditor preview and runtime call the same tessellation + strip-builder, so they match pixel for pixel

At runtime each connection is painted by a UCrimsonSkillTreeWidget_SplineConnection widget (one per edge). Control points are authored as draggable Visual-graph nodes, so the editor reuses native drag / select / grid-snap / undo, plus a per-asset snap size and reroute-style align/distribute actions for lining points up. Connections without authored points fall back to a clean anchor-to-anchor curve.

Authoring lives in the Visual graph
Because the Visual graph is the player-facing layout, control points (and their compiled positions) share the same space as the node layout - so what you shape is exactly what ships. See How-To: Style Connections.