Skip to content

Instantly share code, notes, and snippets.

@mhalber
Last active September 2, 2023 19:56
Show Gist options
  • Save mhalber/4f0921dfa31a89037c113c34987591e1 to your computer and use it in GitHub Desktop.
Save mhalber/4f0921dfa31a89037c113c34987591e1 to your computer and use it in GitHub Desktop.
This note simply gathers some info and thoughts on building Node Editor, especially in an
immediate mode setting.
Q: How does imgui render rounded rects?
Check imgui AddRectFilled
Imgui drawing api is closer to nanoVG
- Path is kept
- Contents are modified based on path
RESOURCES
==========================
Node editor code examples:
https://github.com/CedricGuillemet/Imogen
This is quite full fledged editor, supports things like deletion, copy and undo.
Interestingly, the undo redo is done with lambdas.
However it does seem a bit complex.
https://github.com/Nelarius/imnodes
Decent rendering. Does not support copying. Does not support zooming
Can select multiple nodes
Q: How they perform panning?
https://github.com/rokups/ImNodes
Eh, no building script... Would need a working imgui app.
Example seems to have std::vector of connections, so already bad.
Codewise I like the idea of
if( createNewConnection( node_idx, prop_idx, mouse_pos ) { create_link() } // Or maybe not. Seems like some thin retained state would be better
This one is similar to mine in a sense that it has a bit of state
Imguis:
https://github.com/rxi/microui\
+ dear imgui / nuklear obviously
Blog posts:
http://carlivan.com/engine-tools/visual-scripting/
http://carlivan.com/engine-tools/blueprints/
http://sol.gfxile.net/imgui/index.html
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment