Compile Pipeline
On Save or Compile, the editor rebuilds the runtime mirror from the graphs inside one scoped transaction. The UEdGraphs are authoritative; the runtime state on UCrimsonSkillTree is reconstructed from them.
RebuildLogicDataFromGraph
- Auto-create
RootNodeif missing; clear staleAllNodes/ parent / child / edge arrays. - Walk every Skill/Bridge/Root
Outpin through reroute chains to find terminal targets. - Create a
UCrimsonSkillTree_Edgeper connection and register parent/child + the edge map. - Copy sub-node payloads into
ActivationConditions,OnLevelChangedEvents,NodeCosts; resolveFromParentGuidfor edge-scoped sub-nodes onto the matching edge. - Stable-sort children/parents by editor X for deterministic traversal.
RebuildVisualDataFromGraph
- Reset
NodePresentations,Decorations, andConnectionPaths. - For each Visual Skill mirror -> add a
FCrimsonSkillTree_NodePresentation(Guid, GamePosition, widget override, preview level). - For each Decoration -> add a
FCrimsonSkillTree_VisualDecoration. - Build a
FCrimsonSkillTree_ConnectionPathper connection: per-connection anchors/material are preserved as authored; interior points are rebuilt from the control-point handles (deterministically re-indexed; tangents read from spawned tangent handles or stored values).
One direction only
There is no
RebuildGraphsFromAsset. User actions mutate the graphs directly (the schema creates runtime + graph nodes together), so the graphs never drift from the asset. A repair pass re-spawns spline handles from ConnectionPaths if a path exists without them (e.g. data authored on another machine).