Skip to content

Added callback functions for Grab/Release Node events handling#186

Open
xahon wants to merge 1 commit into
Nelarius:masterfrom
xahon:feature/grab-release-node-events
Open

Added callback functions for Grab/Release Node events handling#186
xahon wants to merge 1 commit into
Nelarius:masterfrom
xahon:feature/grab-release-node-events

Conversation

@xahon

@xahon xahon commented May 27, 2023

Copy link
Copy Markdown

Fixes #168

Usage:

ImNodes::BeginNodeEditor();

// ...

// Creating nodes each frame from state arrays
for (int i = 0; i < graph.nodes.size(); i++)
{
    const int id = graph.nodes[i];
    const float node_x = graph.nodes_x[i];
    const float node_y = graph.nodes_y[i];

    ImNodes::BeginNode(id);
    ImNodes::SetNodeGridSpacePos(id, ImVec2(node_x, node_y));
    ImNodes::EndNode();
}

// ...

int num_selected_nodes;

if (ImNodes::IsNodesDragStarted(&num_selected_nodes))
{
    std::vector<int> selected_nodes(num_selected_nodes);
    ImNodes::GetSelectedNodes(selected_nodes.data());

    for (int i = 0; i < selected_nodes.size(); i++)
    {
        const int id = selected_nodes[i];
        printf("Node was just grabbed %d\n", id);
    }
}

if (ImNodes::IsNodesDragStopped(&num_selected_nodes))
{
    std::vector<int> selected_nodes(num_selected_nodes);
    ImNodes::GetSelectedNodes(selected_nodes.data());

    for (int i = 0; i < selected_nodes.size(); i++)
    {
        const int id = selected_nodes[i];
        printf("Node was just released %d\n", id);
        // Store nodes changed positions here
        // const ImVec2 &new_node_pos = ImNodes::GetNodeGridSpacePos(id);
    }
}

// ...

ImNodes::EndNodeEditor();

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Callback on node translation

1 participant