The Two-Graph Editor

One UCrimsonSkillTree asset, two independent UEdGraphs (editor-only). The Logic Graph is the source of truth for gameplay; the Visual Graph is the source of truth for player-facing layout. They share one Details panel and one Validation panel.

ModeOwnsHas wires?
LogicSkills, dependencies, sub-nodes (conditions/events/costs)Yes - parent->child
VisualLayout, per-node widget overrides, decorations, spline control pointsNo - layout-only

Mirror-on-create

The Visual graph mirrors Logic Skills 1:1 by FGuid. The mapping is one-directional after creation:

EventEffect
Add Logic SkillA Visual mirror auto-spawns at the same position
Move Logic SkillMirror does not move (use Reset Visual Layout from Logic to re-snap)
Move Visual SkillLogic position is unaffected - layout is independent
Delete Logic SkillMirror is cascade-deleted
Live preview is safe
Each Visual mirror renders a real UCrimsonSkillTreeWidget_Node with bIsEditorPreview = true, so it skips owning-player paths (input, manager RPCs) and renders without a runtime context.

Toolbar commands

CommandWhat it does
Save (Ctrl+S)Run the compile pipeline, then write to disk
CompileRun the compile pipeline + auto-run validators (no disk write)
Validate GraphRun all 9 validators; results in the Validation panel
Zoom to FitFrame every node in the active graph
Reset Visual Layout from LogicOne-shot copy of logic positions into matching visual mirrors
Toggle Ghost WiresFaint wires in the Visual graph mirroring logic topology (default off)