ADVANCED NODE EDITOR
A C++20 and ImGui framework for type-checked connections, nested graphs and dependency-ordered evaluation.
WHY I BUILT IT
I kept running into the same interaction problems while prototyping graph-based tools. Node identity had to survive edits, invalid links had to fail clearly, and nested graphs needed to remain navigable. I built one reusable framework so I could solve those problems once instead of rebuilding the editor around every new experiment.
20-SECOND DEMO
This excerpt from my technical reel shows the editor in use, creating and rearranging nodes, drawing connections, navigating a larger graph and inspecting the result. The final frame is held briefly so the completed graph can be read.
CRITICAL INTERACTIONS
- Reject an incompatible link. A connection is created only when its output and input pin types match; otherwise the operation returns without modifying the graph.
- Enter a subgraph. Nested graphs keep their own contents and view state, while a breadcrumb exposes the current location and the path back to the parent graph.
- Evaluate after an edit. Registered node evaluators run in dependency order, allowing the demo to update its final value when a constant or connection changes.
- Keep references stable. UUIDs identify nodes, pins and connections across editing, evaluation and graph-state serialization.
HARDEST DESIGN PROBLEM
The hardest part was not drawing nodes. It was keeping identity and context coherent when a node moved into a subgraph, a connection changed, or an evaluation traversed several dependencies. Separating stable UUIDs from runtime indices prevented editor operations from silently pointing at the wrong object.
CURRENT LIMIT
The public framework does not yet expose a production-ready undo and redo history. Until editing operations can be reversed reliably, I would treat it as a framework and interaction testbed, not as a finished artist tool.
What I learned
I learned that connection validation and graph navigation shape how trustworthy a node tool feels. The reusable part is not the canvas itself; it is the separation between editing, evaluation and extension points, with enough stable state for each layer to agree.
Credits and confidentiality
- Production
- Personal project
- Role
- Project creator — framework, interaction design and C++ implementation
- Work by others
- ImGui, CMake and the C++ toolchain are third-party technologies. No third-party production artwork is shown.
- Confidentiality
- No NDA. The source code is public on GitHub.