MCPcopy Create free account
hub / github.com/Fattorino/ImNodeFlow

github.com/Fattorino/ImNodeFlow @v1.2.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.2.2 ↗ · + Follow
110 symbols 154 edges 5 files 73 documented · 66% updated 52d agov1.2.2 · 2024-06-09★ 50012 open issues

Browse by type

Functions 87 Types & classes 23
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

ImNodeFlow

Node-based editor/blueprints for ImGui

Create your custom nodes and their logic... ImNodeFlow will handle connections, editor logic, and rendering.

image

Features

  • Support for Zoom
  • Built-in Input and Output logic
  • Built-in links handling
  • Customizable filters for different connections
  • Built-in customizable pop-up events
  • Appearance 100% customizable

Implementation (CMake project)

CMake FetchContent

  1. Add the following lines to your CMakeLists.txt: 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)

Manually

  1. Download and copy, or clone the repo (or the latest release) inside your project
  2. Add the following lines to your CMakeLists.txt: add_subdirectory(path/to/ImNodeFlow) . . . add_compile_definitions(IMGUI_DEFINE_MATH_OPERATORS) target_link_libraries(YourProject ImNodeFlow)

Requirements

  1. Make sure you have the following dependencies available for find_package():
  2. Dear ImGui

Simple Node example

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;
};

image

Full documentation

For a more detailed explanation please refer to the documentation


Special credits

  • ocornut for Dear ImGui
  • thedmd for imgui_bezier_math.h
  • nem0 for helping with Zoom support

Core symbols most depended-on inside this repo

Shape

Method 84
Class 21
Function 3
Enum 2

Languages

C++100%

Modules by API surface

include/ImNodeFlow.h82 symbols
src/context_wrapper.h11 symbols
src/ImNodeFlow.cpp8 symbols
src/imgui_bezier_math.h7 symbols
src/imgui_extra_math.h2 symbols

For agents

$ claude mcp add ImNodeFlow \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page