FAB Plugin  ·  Unreal Engine 5.6 – 5.7

Gridline
Blueprints

Orthogonal wire routing, intelligent node alignment, fuzzy context-menu search, and named reroute improvements, all in one plugin.

0ms Runtime Cost
4 Modules
50+ Settings
3 Platforms

Wire Routing

Six-phase orthogonal routing pipeline with corners, U-turns, wire spacing, node avoidance, and junction indicators.

Named Reroutes

Seamless visual bridging between Named Reroute declaration and usage nodes, with inline label display along the wire.

Context Menu

Typo-tolerant node search with acronym lookup, auto-expanding categories, resizable menu window, and recent node history.

Node Alignment

One-key graph alignment that handles execution trees, data chains, branches, and wire straightening.

Installation

Gridline Blueprints is a FAB marketplace plugin. All four modules install together and can be individually toggled from Project Settings.

1

Purchase & Download

Add Gridline Blueprints to your FAB library. In the Epic Games Launcher, open the FAB tab, locate the plugin, and click Install to Engine for your Unreal Engine version (5.6 or 5.7).

2

Enable the Plugin

Open your project in UE, navigate to Edit → Plugins, search for Gridline, and enable all four plugin entries. Restart when prompted.

3

Configure Settings

All settings live under Edit → Project Settings → Plugins. Four independent categories are available: Gridline Wire Routing, Gridline Nodes, and Gridline Context Menu. Settings are saved per-project and per-user.

Edit → Project Settings → Plugins → Gridline Wire Routing
4

Open a Blueprint

Open any Blueprint or Animation Blueprint. Orthogonal routing, fuzzy search, and alignment activate immediately. Press F in any graph editor to trigger node alignment on selected nodes.

Settings are stored in EditorPerProjectUserSettings, meaning they are per-user and per-project. They will not affect other developers on your team unless they configure them individually.

Wire Routing

Replaces Unreal's default spline connections with a fully orthogonal (right-angle) routing system. Wires are processed through an ordered pipeline of independent phases, each of which can be configured or disabled independently.

Routing Pipeline

Every frame, each wire passes sequentially through the following phases. Phases operate on the wire's segment array in-place, allowing later phases to build on earlier corrections.

Basic Path

Generate 3-segment H-V-H orthogonal path from source to dest pins

U-Turn Resolution

Detect backward wires and convert to 5-segment U-turn paths

Wire Spacing

Offset parallel overlapping segments and convert eligible wires to U-turns

Node Avoidance

Reroute segments around unrelated nodes using Simple or Complex strategy

Corner Processing

Apply Fillet / Eased / Chamfer corners and handle tight-turn segments

Junction Phase

Detect T-intersections and insert visual Break / Jump / Ring / Disc markers

The factory class FGridlineBlueprintConnectionDrawingPolicyFactory injects into Unreal's FEdGraphUtilities pin connection registry, replacing the default blueprint connection drawing policy without modifying engine source.
General Settings
SettingTypeDefaultDescription
Enable Plugin bool true Global on/off switch. Disabling this reverts all Blueprint graphs to Unreal's default spline rendering instantly.
Enable for Blueprint Graphs bool true Apply orthogonal routing in Blueprint event graphs and function editors.
Enable for Animation Graphs bool true Apply orthogonal routing in Animation Blueprint state machines and blend graphs.
Routing Settings
SettingTypeDefaultDescription
Wire Routing Bias enum
SourceDestination
Destination Determines which pin the vertical turn segment is anchored to. Source places the bend near the output pin; Destination places it near the input. This affects the visual balance of wires in graphs where nodes are spread horizontally.
Pin Length int32 [12–64] 28 The horizontal stub length (in pixels) that exits the biased pin before the wire makes its first 90° turn. Must be ≥ Corner Size to avoid invalid geometry, the engine clamps Corner Size to Pin Length automatically.
Wire Thickness float [0.5–5.0] 1.0 Thickness multiplier for all wires. 1.0 matches Unreal's default weight. Values above 2.0 are noticeable; values above 3.5 are very heavy. This also scales junction and animation element sizes.
Hide Reroute Nodes bool false When enabled, reroute nodes become invisible along the wire. They reappear when hovered so they remain interactive. Useful for very clean-looking graphs; pairs well with Named Reroutes, which display their label inline.
U-Turn Settings

A U-turn occurs when a wire's destination pin is to the left of its source pin (backward connection). The router generates a 5-segment path that exits the source, makes a detour above or below both nodes, and re-enters from the correct side.

SettingTypeDefaultDescription
Clearance Style enum
Clear ClosestClear DestinationClear Source
Clear Closest Controls how the U-turn bridge calculates vertical clearance when nodes partially overlap. Clear Closest automatically routes around whichever bound is nearest to the bridge, above the source top, destination top, destination bottom, or source bottom depending on the geometry. Clear Destination and Clear Source always route around the specified node's bounds.
Enable Grid Snapping bool true Snaps U-turn horizontal bridge lengths to the nearest blueprint grid unit (default 64px). This ensures wire corners land on grid positions, producing cleaner-looking graphs when Grid Snapping is also enabled in the viewport.
Short Wire Settings

Very short wires, where source and destination pins are close together, benefit from a different routing strategy. Fully orthogonal paths can look awkward or produce very tight corners in this case.

SettingTypeDefaultDescription
Short Wire Threshold int32 [0–500] 120 The pin-to-pin distance below which a wire uses Short Wire Style instead of full orthogonal routing. Set to 0 to disable short-wire handling entirely and use the standard pipeline for all wires.
Short Wire Style enum
SplineStraightOrtho
Ortho Spline: draws a smooth cubic Bézier between the pin stubs, mimics Unreal's default style for close nodes. Straight: direct diagonal line. Ortho: standard orthogonal path but using the shorter ShortWirePinLength stub.
Short Wire Pin Length int32 [0–64] 12 The horizontal stub length used specifically for short wires in Spline, Straight, or Ortho style. Smaller than the standard Pin Length to avoid over-extending on compact connections.
Corner Settings

Corners replace the sharp right-angle bends of raw orthogonal routing with smoothed curves or cuts, applied during the Corner Processing Phase.

SettingTypeDefaultDescription
Corner Size int32 [0–32] 8 The radius (in pixels) of corner smoothing. 0 produces perfectly sharp right angles. Higher values produce more pronounced curves. Automatically clamped to be ≤ Pin Length so corners always fit within their containing segment.
Corner Style enum
EasedFilletChamfer
Fillet Eased: cubic Bézier arc using a 4(√2−1) tangent multiplier, approximating a circular arc asymptotically. Produces slightly softer curves than Fillet.
Fillet: true quarter-circle arc using a π tangent multiplier. Mathematically precise circular corner.
Chamfer: a straight diagonal cut replacing the corner, angular, engineering-style look.
Enable Tight Turn Handling bool false Activates special rendering for vertical segments that are too short to fit standard corners at both ends. Without this, the engine clips corners into each other, producing visual artifacts. When enabled, these segments use Tight Turn Style instead.
Tight Turn Threshold float [2–16] 2.0 Vertical segments shorter than Corner Size × Threshold are treated as tight turns. A value of 2.0 means any segment shorter than two full corner radii triggers tight-turn handling. Increase this to apply special handling more aggressively.
Tight Turn Style enum
SplineStraight
Spline Spline: replaces the tight vertical segment with a smooth cubic Bézier that flows naturally from the adjacent horizontal segments. Straight: replaces it with a direct diagonal line, creating a crisp angular shortcut.
Tight Turn Offset float [0–2] 2.0 How far (in corner-radius units) the segment after a tight turn is pushed back to make room for the spline or diagonal. 2.0 provides one full corner radius of clearance between the tight turn and the next corner.
Wire Spacing Settings

When multiple wires travel in parallel along the same axis, they naturally overlap and become indistinguishable. Wire Spacing detects these overlapping segments and offsets them so each wire is individually visible. This phase also converts eligible standard paths to U-turn paths when spacing pushes them out of range.

SettingTypeDefaultDescription
Enable Wire Spacing bool true Enables the wire spacing phase. Disabling this allows wires to fully overlap on parallel runs.
Wire Spacing int32 [8–64] 16 The pixel distance between adjacent parallel wire segments. Larger values create more visual breathing room but can push wires further from their natural paths. 16px is a good balance at 1:1 zoom.
Space Shared Source Wires bool false When enabled, wires that share the same output pin are spaced apart from one another. By default these are allowed to overlap at the source since they are clearly related. Enable this when you have many wires leaving a single pin and want each path individually distinguishable.
Space Shared Destination Wires bool false Same as Space Shared Source Wires, but applies to wires sharing the same input pin. Useful when multiple wires converge into one node and you want to trace each path independently.
Node Avoidance Settings

Node avoidance detects when a wire segment passes through an unrelated node's bounds and reroutes it around the obstacle. The phase distinguishes source and destination nodes (which are always allowed to be crossed) from all others. Comment nodes are also excluded.

SettingTypeDefaultDescription
Enable Node Avoidance bool true Enables automatic rerouting around unrelated nodes. When disabled, wires will pass through nodes as in standard Unreal routing.
Node Avoidance Style enum
SimpleComplex
Complex Simple: shifts the vertical segment sideways to clear the obstacle, fast and deterministic but only works for single-obstacle scenarios that don't require new segments.
Complex: iteratively inserts new detour segments around each obstacle in turn, fully routing the wire around multiple stacked or offset nodes.
Node Avoidance Padding int32 [0–64] 16 Minimum pixel clearance maintained between the rerouted wire and the edges of any obstacle node. Larger values give visually clean separation but may push wires further.
Junction Settings

When a horizontal wire crosses a vertical wire from a different connection, the junction phase draws a visual indicator at the intersection. Junctions are never drawn for wires that share a pin. The phase uses spatial bucketing (64px buckets) for efficient O(n) intersection detection.

SettingTypeDefaultDescription
Enable Junctions bool true Enables junction indicators at wire crossing points. Without this, crossing wires are visually ambiguous.
Junction Style enum
BreakJumpRingDisc
Jump Break: a gap in the horizontal wire where it crosses the vertical, classic PCB style.
Jump: a small arc drawn over the crossing point, schematic style.
Ring: a circle outline drawn at the intersection.
Disc: a filled circle drawn at the intersection, highest visibility.
Junction Size int32 [8–32] 12 Diameter in pixels of the junction indicator. Scales with the flow animation size. 12px is clearly visible at 1:1 zoom without being overwhelming.
Flow Animation Settings

Flow animation renders moving indicators along wires to show data flow direction, useful when presenting graphs or debugging complex wiring.

SettingTypeDefaultDescription
Enable Flow Animation bool false Enables animated flow indicators along wires. Disabled by default for performance.
Animation Style enum
DotPulse
Dot Dot: discrete circular dots travel along the wire. Pulse: a traveling brightness wave that brightens the wire along its length without adding separate geometry.
Animated Wire Types enum
Exec OnlyData OnlyAll WiresSelected Only
Execution Only Limits animation to execution (white) wires, data (colored) wires, all wires, or only wires connected to currently selected nodes. Selected Only is useful for tracing specific connection paths without visual noise from the rest of the graph.
Animation Spacing int32 [16–256] 64 Distance between consecutive animated elements. For Pulse style, the pulse length is 60% of this value. Smaller values create denser packing; larger values give more separation between indicators.
Animation Speed int32 [32–512] 64 Travel speed in pixels per second. Higher values create fast-moving indicators. 64px/s feels comfortable for most graph sizes.
Animation Size float [0.1–1.0] 0.2 Size of each dot element relative to wire thickness. 0.2 produces a subtle, small indicator; 1.0 fills the full wire width.
Pulse Brightness float [0.5–3.0] 1.5 Brightness multiplier for the Pulse style peak. 1.0 matches the wire's base color; values above 1.0 create a glowing highlight. Only active when Animation Style is set to Pulse.

Named Reroutes

Gridline Blueprints extends Unreal's built-in named reroute nodes to work cleanly within the orthogonal routing system, with hidden node rendering and visual bridging.

Named Reroute Bridging

When a Named Reroute Declaration and its Usage counterpart are both present, the drawing policy collects bridge information (input and output positions, connection parameters, layer IDs) per reroute node and draws a seamless wire across the gap, suppressing the node widget entirely while retaining full interactivity on hover. The named label is displayed inline along the bridge wire.

Flipped Reroute Detection

Part of the Wire Routing system. Reroute nodes placed between a forward and backward connection produce a geometric flip. The drawing policy maintains a FlippedRerouteNodes set to track which reroutes involve a directional reversal, and passes this into the FWirePhaseContext so the U-turn phase can correctly resolve clearance direction for bridged wires.

Named Reroute Declaration nodes (UK2Node_NamedRerouteDeclaration) and their Usage counterparts are both detected. The bridge system stores per-node input/output position data accumulated during the initial DrawConnection pass, then resolved during the final segment draw.

Context Menu

Upgrades the Blueprint node context menu with fuzzy search, category auto-expansion, resizable dimensions, and a recent-node cycling system. Each feature is a self-contained module that activates on engine init and responds to settings changes at runtime.

Context menu features use FSlateApplication::OnFocusChanging to detect when the context menu window opens. A recursive widget walk locates the SGraphActionMenu inside the menu window, giving each feature a stable reference for the duration of the menu's lifetime.
Fuzzy Search

Rather than replacing Unreal's built-in search, Fuzzy Search pre-enriches the keyword field of every UBlueprintNodeSpawner in the action database. This means the standard search pipeline picks up the generated terms automatically, with zero runtime overhead per keystroke.

Keyword Generation

For each spawner, the system tokenizes the display name into lowercase alpha-numeric words. From these tokens it generates:

  • Spaceless concatenation, e.g. GetPlayerControllergetplayercontroller
  • Acronym, e.g. GetPlayerControllergpc
  • Adjacent transpositions, all single character swap variants (e.g. getplayercontrlloer)
  • Single deletions, all variants with one character removed (tolerates mistyped letters)
Batch Processing

Patching is done in batches of 200 spawners per tick via a core ticker delegate, preventing any frame-rate impact at startup. New spawners registered via FBlueprintActionDatabase::OnEntryUpdated are patched immediately. When Fuzzy Search is disabled at runtime, all original keyword values are restored from a shared cache.

Batch size: 200 spawners / tick
Strategy: pre-enrich, zero keystroke overhead
Context Menu Settings
Search Features
SettingTypeDefaultDescription
Enable Fuzzy Search bool true Enriches all Blueprint node spawner keywords with spaceless concatenations, acronyms, transposition variants, and deletion variants. Enables searching "gpc" to find "Get Player Controller", or "getplayrcontroller" to tolerate a typo.
Enable Auto-Expand Categories bool false Automatically expands all top-level categories when the context menu first opens, so the full action list is immediately visible without requiring extra clicks.
Menu Appearance
SettingTypeDefaultDescription
Enable Menu Resize bool false Allows the Blueprint context menu width and height to be configured. When disabled, the menu uses Unreal's default dimensions.
Menu Width int32 [100–4000] 400 Width of the context menu in pixels. Automatically snapped to the nearest 10-pixel increment on save. Only shown when Enable Menu Resize is active.
Menu Height int32 [100–4000] 400 Height of the context menu in pixels. Automatically snapped to the nearest 10-pixel increment. Only shown when Enable Menu Resize is active.
Recent Nodes

The Recent Nodes feature listens to UEdGraph::OnGraphChanged across all open Blueprints and records node titles as they're placed. While the context menu is open, the Cycle Key inserts the most recent entry into the search field, cycling through the history with each press.

SettingTypeDefaultDescription
Enable Recent Nodes bool false Tracks recently placed node names and displays a "Recently Used" section at the top of the context menu. While the menu is open, the Cycle Key populates the search field with past node names.
Cycle Key FKey F1 Key pressed while the context menu is open to cycle forward through recently placed nodes. The key is consumed by a registered input pre-processor and will not reach other handlers. Hold Shift to cycle backward.
Cycle Key (Reverse) FKey F2 Dedicated key for cycling backward through recent nodes, as an alternative to Shift + Cycle Key. Both work simultaneously.
Max Recent Nodes int32 [1–50] 20 Maximum number of node names retained in the recent history. When full, the oldest entry is dropped (LIFO queue). Duplicate entries are de-duplicated and moved to the front of the list.

Node Alignment

A graph-aware layout engine that arranges selected nodes into a clean, readable structure. It traverses the execution graph, places data chains, resolves overlaps, straightens wires, and aligns branches, all in one keypress.

How It Works

When triggered, the alignment system performs a flood-fill across the selected nodes using execution pin connections, discovering all independent execution graphs. Each graph is processed separately so disconnected subgraphs don't interfere with each other.

An anchor node is identified for each graph (typically the leftmost or highest-priority execution root). The anchor is snapped to the blueprint grid, then the recursive layout begins.

The engine uses a ClaimedGridCells set to prevent node overlap. Each node claims its grid cells after placement, and subsequent placements are pushed downward or rightward to avoid already-claimed space.

Execution Layout

Each execution node is placed right of its predecessor. Its output execution pins are sorted by pin index, then branches are laid out top-to-bottom with Y-tracking to prevent stacking. Recursion continues depth-first through the execution chain.

Data Chain Layout

For each data input pin on an execution node, the system traverses backward through connected data nodes (those without execution pins), placing them in a "data rib" to the left of the execution node. Child data chains cascade recursively.

Alignment Settings
General
SettingTypeDefaultDescription
Enable Plugin bool true Global toggle for all Gridline Nodes features. Disabling this suppresses all keybinds and processing.
Enable for Blueprint Graphs bool true Restrict node alignment to Blueprint event graphs and function editors only.
Enable for Animation Graphs bool true Allow node alignment to run in Animation Blueprint graphs as well.
Node Alignment
SettingTypeDefaultDescription
Enable Node Alignment bool true Enables the alignment keybind and processing pipeline. When disabled, the keybind has no effect.
Alignment Keybind FInputChord F The key combination used to trigger full alignment on selected nodes and their connected graphs. Expands the selection outward through all execution and data connections before aligning.
Selected-Only Alignment Keybind FInputChord G Aligns only the currently selected nodes without expanding to their full connected execution graph. Useful for nudging a subset of a larger graph without disturbing other nodes.
Straighten Execution Wires bool true When placing the first output execution node, aligns it vertically so its input execution pin matches the Y-position of the predecessor's output execution pin, producing a perfectly straight horizontal wire between the two. Subsequent branches establish their own Y anchors.
Group Alignment Mode enum
Right of PredecessorLeft with Predecessor
Right of Predecessor Right of Predecessor: places the entire node group (exec node + its data rib) strictly to the right of the preceding execution node's right edge.
Left with Predecessor: aligns the left edge of the group with the predecessor's left edge, then shifts right only as needed to clear overlap. Results in a more compact vertical layout.

Architecture

Gridline Blueprints is structured as four independent Unreal Engine modules, each with a focused responsibility. Modules communicate only through shared interfaces and Unreal's settings infrastructure.

GridlineWireRouting
Editor Module

Owns the FGridlineBlueprintConnectionDrawingPolicy and its factory. Registers the policy via FEdGraphUtilities::RegisterVisualPinConnectionFactory on startup. Manages all six wire phases as IWireRoutingPhase instances stored on the drawing policy object. Settings live in UGridlineWireRoutingSettings.

GridlineNodes
Editor Module

Owns FGridlineBlueprintNodeProcessingPolicy and the keybind registration. The policy stores a list of INodeLayoutPhase instances (currently FNodeAlignmentPhase). Layout is triggered by a custom graph editor command handler. Settings live in UGridlineNodesSettings.

GridlineContextMenu
Editor Module

Manages a list of IGridlineFeature instances, each activated by its own IsEnabled predicate read from UGridlineContextMenuSettings. Features are registered in FGridlineContextMenuModule::InitializeContextMenuFeatures and respond to live settings changes via FOnGridlineContextMenuSettingsChanged.

GridlineBlueprints (Root)
Plugin Descriptor

The .uplugin descriptor that declares all sub-modules, author metadata, version information, and marketplace categorization. Contains no runtime code, all functionality lives in the child modules.

IWireRoutingPhase
Interface

Pure virtual interface with a single Execute(TArray<FWireData>&, const FWirePhaseContext&) method. Each concrete phase (UTurnResolution, WireSpacing, NodeAvoidance, CornerProcessing, JunctionPhase) implements this interface and operates exclusively on the FWireData array.

INodeLayoutPhase
Interface

Pure virtual interface with a single Execute(FNodePhaseContext&) method. The FNodePhaseContext carries the selected node set, anchor node, grid size, graph panel reference, and claimed-cell tracking. The processing policy iterates all phases in sequence per graph.

No engine source modification is required. Gridline Blueprints hooks into Unreal using only public extension APIs: FEdGraphUtilities::RegisterVisualPinConnectionFactory, FSlateApplication::OnFocusChanging, FBlueprintActionDatabase::OnEntryUpdated, and UDeveloperSettings. This makes the plugin forward-compatible with future engine updates.

Platform & Version Support

Gridline Blueprints is an Editor-only plugin. It does not affect packaged game builds and has zero runtime overhead in shipped products.

Blueprint Graphs

Event graphs, function editors, macro libraries, and animation Blueprint graphs

Animation Blueprints

State machines and blend graphs, all three Gridline modules work in AnimBP editors

Unreal Engine 5.6

Fully supported. The plugin targets the 5.6 public API surface.

Unreal Engine 5.7

Fully supported and tested against the 5.7 release.

Windows

Win64 development and shipping editor targets fully supported.

macOS

Mac editor targets supported. ARM (Apple Silicon) and x64.

Linux

Linux editor targets supported for development pipelines.

Blueprint Assist

Designed to co-exist with the Blueprint Assist plugin. Wire routing and node alignment operate independently without conflicts.

Gridline Blueprints is an Editor Module only, it is never compiled into packaged builds. Your game's runtime performance is completely unaffected.

FAQ

No. Gridline Blueprints is an Editor-only plugin. It is never compiled into packaged builds. All modules are declared with Editor loading phase and will not appear in a shipping or development game build. Your runtime performance is completely unaffected.
Yes. Gridline Blueprints is designed to co-exist with Blueprint Assist. The two plugins use separate extension points, Gridline hooks the pin connection factory for wire rendering and uses its own keybind command for alignment, while Blueprint Assist operates through its own systems. There are no known conflicts. If you experience unexpected behavior with both enabled, try toggling each plugin's features to identify the interaction.
No. All settings use EditorPerProjectUserSettings, which stores values in a local Saved/ directory that is typically excluded from source control. Each developer configures their own preferences independently. The plugin will work with its default settings for any team member who hasn't configured it yet.
Navigate to Edit → Project Settings → Plugins → Gridline Wire Routing and uncheck Enable Plugin. This immediately reverts all Blueprint graphs to Unreal's default cubic Bézier spline rendering. You do not need to restart the editor. Alternatively, you can disable specific features (node avoidance, corners, junctions, etc.) while keeping orthogonal routing active.
Unreal's Blueprint context menu search operates directly on the Keywords field of each UBlueprintNodeSpawner. Hooking the search UI would require either modifying engine source or re-implementing the entire search pipeline. By pre-enriching keywords at startup, Gridline Fuzzy Search integrates with Unreal's existing search at zero per-keystroke cost, the engine's standard substring matching does the rest.
Yes. Wire Spacing, Node Avoidance, Junctions, and Flow Animation each have their own enable toggle. Corners can be disabled by setting Corner Size to 0. The U-turn system is always active when the plugin is enabled (it handles backward connections). Each phase operates independently, you can mix and match configurations freely.
W When you disable the plugin, you’ll be prompted to convert all Named Reroute nodes into standard Reroute nodes. If you choose not to convert them, they will disappear while the plugin is disabled. As long as the blueprint isn’t saved during this time, the Named Reroute nodes will reappear once the plugin is re-enabled.
Yes. Pressing the Alignment Keybind (F by default) expands your selection through all connected execution and data pins before aligning, it effectively selects the full connected graph from your selection and processes it. The Selected-Only Keybind (G) aligns only the nodes you have explicitly selected, without expanding. This is useful for fine-tuning a portion of a larger graph without disturbing other nodes.
Currently Gridline Blueprints targets Blueprint and Animation Blueprint graph editors. The architecture is designed with extensibility in mind, the IsEnabledForCurrentGraph check in the drawing policy could be extended for other graph types in future updates. Follow the FAB listing for update notes.