Node-based editor/blueprints for ImGui
Create your custom nodes and their logic... ImNodeFlow will handle connections, editor logic, and rendering.
FetchContent
include(FetchContent)
FetchContent_Declare(ImNodeFlow
GIT_REPOSITORY "https://github.com/Fattorino/ImNodeFlow.git"
GIT_TAG "origin/master"
SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}/includes/ImNodeFlow"
)
FetchContent_MakeAvailable(ImNodeFlow)
add_compile_definitions(IMGUI_DEFINE_MATH_OPERATORS)
target_link_libraries(YourProject ImNodeFlow)
add_subdirectory(path/to/ImNodeFlow)
. . .
add_compile_definitions(IMGUI_DEFINE_MATH_OPERATORS)
target_link_libraries(YourProject ImNodeFlow)
find_package()
:
class SimpleSum : public BaseNode
{
public:
SimpleSum()
{
setTitle("Simple sum");
setStyle(NodeStyle::green());
addIN<int>("IN_VAL", 0, ConnectionFilter::SameType());
addOUT<int>("OUT_VAL", ConnectionFilter::SameType())
->behaviour([this](){ return getInVal<int>("IN_VAL") + m_valB; });
}
void draw() override
{
ImGui::SetNextItemWidth(100.f);
ImGui::InputInt("##ValB", &m_valB);
}
private:
int m_valB = 0;
};
For a more detailed explanation please refer to the documentation