Skip to content

Releases: Nelarius/imnodes

0.5

09 Mar 07:52
Compare
Choose a tag to compare

Special thanks to everyone who contributed to this release with a pr!

New features

  • Introduced the minimap #99
    • Just one function call is required: MiniMap()!
  • Programmatic interface to handle node and link selections #107 Introduces the functions
    • SelectNode
    • ClearNodeSelection
    • IsNodeSelected
    • SelectLink
    • ClearLinkSelection
    • IsLinkSelected
  • Auto-panning pans the editor automatically if the mouse goes outside the editor canvas while dragging nodes or links #120
  • Add ImGui-like user defined callbacks for minimap node hovering events #127
    • ImNodesMiniMapNodeHoveringCallback and ImNodesMiniMapNodeHoveringCallbackUserData added to imnodes.h

Screenshot 2022-03-09 at 9 42 03

The minimap in action!

Other changes

  • Render canvas gridlines by default in the light color scheme to be more consistent with ImGui.

Fixes

  • Prevent interaction with node graph if an ImGui widget is active. Fixes problems where the nodes underneath a color wheel move while manipulating the wheel.
  • Fixing some unresponsive UI issues arising from the reuse of internal ids #124
  • Prevents links from being hovered if a pin is hovered #126

Breaking changes

  • The code was reformatted to be more consistent with ImGui #95
    • Namespace renamed to ImNodes
    • The namespace is configurable, by defining IMNODES_NAMESPACE
    • All internal functions now CamelCase
    • Enums constants prefixed with ImNodes

0.4

02 Apr 18:37
Compare
Choose a tag to compare
0.4

New features

depth-stacking

  • New depth sorting of nodes. Selection of overlapping nodes now handled correctly -- clicking on a node will place it on top of other overlapping nodes.

  • New querying functions

    • GetNodeGridSpacePos;
    • GetNodeScreenSpacePos
    • IsLinkCreated
  • Functions for clearing selections

    • ClearNodeSelection
    • ClearLinkSelection
  • DLL support was added. Library initialization and shutdown now resembles ImGui.

    • SetImGuiContext
    • CreateContext
    • DestroyContext
    • GetCurrentContext
    • SetCurrentContext

Fixes

  • Some recangle-line overlap edge casess were fixed
  • Hovering, dragging, and middle click selection bugs were fixed. Only single pins, links, and nodes can be interacted with at the same time.
  • Solved an id issue causing node selection bugs
  • Render nodes on top of links, solving #56
  • Fixed #55
  • Fixed #54

Breaking changes

  • Removed imnodes::IO::emulate_three_button_mouse::modifier.
  • Initialize and Shutdown removed in favor of CreateContext and DestroyContext.

Known issues

  • Overlapping ImGui widgets can interact #90
  • There are some issues with reusing ids #91

0.3

13 Jul 11:00
Compare
Choose a tag to compare
0.3

Huge thanks to everyone who contributed to items in this release!

New features

  • Links snap to pins when close
  • Added EditorContextGetPanning() to access the current panning state of the editor
  • Added static attributes for node attributes which don't have a pin, along with EndInputAttribute(), EndOutputAttribute, and EndStaticAttribute.
  • EndAttribute() was deprecated with a compiler warning.
  • Enable editor panning with a pressed modifier to better support trackpads (enable via IO::emulate_three_button_mouse)
  • Added IsEditorHovered() to better detect when the mouse is over the node editor canvas.
  • Added IsLinkDestroyed(int*) to signal to the user that the editor has deleted a link. This was added so that the user can detach an existing link from a pin.

Three new ways of interacting with links have been added:

  • Detach link from pin by clicking and dragging (configurable via the attribute flag AttributeFlags_EnableLinkDetachWithDragClick)
    detach_from_pin

  • Links snap to cursor when a modifier is pressed (configurable via IO::link_detach_with_modifier_click.modifier`)
    snap_to_cursor

  • Links can be configured to be created when snapping to the pin, instead of when the left mouse button is released (configurable via AttributeFlags_EnableLinkCreationOnSnap)
    create_on_snap

Fixes

  • Fixed #26
  • Fixed a bug in detecting when the mouse hovered near a link
  • Selecting a link deselects all selected nodes
  • Prevent interacting with the canvas when the mouse is not directly over the editor canvas
  • Prevent links from snapping to pins of the same type

0.2

02 Mar 07:38
Compare
Choose a tag to compare
0.2

New features and breaking changes

  • Breaking change: node title bars can now be fully customized as any ImGui content can now be placed between the new BeginNodeTitleBar/EndNodeTitleBar function calls. This change also removes the SetNodeName function.

image

Calculator icon by DinosoftLabs from Flaticon

  • Pins now come in different shapes: circle, quad, and triangle, in both filled and unfilled variants. The desired shape flag is passed as a function argument to BeginInputAttribute/BeginOutputAttribute.

image

  • Pins can now be offset from the node, controlled by the new imnodes::Style::pin_offset value.

image

  • Breaking change: removes StyleFlags_PinOutline and ColorStyle_PinOutline.

  • Breaking change: replaces SetNodePos with two functions: SetNodeScreenSpacePos and SetNodeGridSpacePos.

  • New editor panning utility functions: EditorContextResetPanningand EditorContextMoveToNode.

  • Added a multi-editor example! Check out example/multi_editor.cpp

Fixes

  • Selected nodes and links are now only deselected when clicking inside the same node editor window.
  • Overlapping node UIs and backgrounds don't glitch out anymore.

A huge thanks to everyone who contributed to imnodes!

0.1 🎉

24 Dec 10:45
11177fc
Compare
Choose a tag to compare

The basic features of a node editor are now implemented:

  • Create nodes, links, and pins in an immediate-mode style
  • Use regular dear imgui widgets inside the nodes
  • Multiple node and link selection with a box selector
  • Nodes, links, and pins are fully customizable, from color style to layout
  • The editor canvas can be customized
  • Node movement and new link creation handled internally
  • The node editor state can be saved and loaded to and from a INI file