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.
| Mode | Owns | Has wires? |
|---|---|---|
| Logic | Skills, dependencies, sub-nodes (conditions/events/costs) | Yes - parent->child |
| Visual | Layout, per-node widget overrides, decorations, spline control points | No - layout-only |
Mirror-on-create
The Visual graph mirrors Logic Skills 1:1 by FGuid. The mapping is one-directional after creation:
| Event | Effect |
|---|---|
| Add Logic Skill | A Visual mirror auto-spawns at the same position |
| Move Logic Skill | Mirror does not move (use Reset Visual Layout from Logic to re-snap) |
| Move Visual Skill | Logic position is unaffected - layout is independent |
| Delete Logic Skill | Mirror is cascade-deleted |
Live preview is safe
Each Visual mirror renders a real instance of your node widget class, driven through the exact same
InitializeSkillNode entry point the game uses - so the preview is WYSIWYG by construction, not by a separate preview code path. The node it is given is a throwaway duplicate stamped with the preview level, so opening a preview never mutates or dirties the asset.Toolbar commands
| Command | What it does |
|---|---|
| Save (Ctrl+S) | Run the compile pipeline, then write to disk |
| Compile | Run the compile pipeline + auto-run validators (no disk write) |
| Validate Graph | Run all 9 validators; results in the Validation panel |
| Zoom to Fit | Frame every node in the active graph |
| Reset Visual Layout from Logic | One-shot copy of logic positions into matching visual mirrors |