Releases: Nelarius/imnodes
0.5
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()
!
- Just one function call is required:
- 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
andImNodesMiniMapNodeHoveringCallbackUserData
added toimnodes.h
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
- Namespace renamed to
0.4
New features
-
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
andShutdown
removed in favor ofCreateContext
andDestroyContext
.
Known issues
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
, andEndStaticAttribute
. 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
)
-
Links snap to cursor when a modifier is pressed (configurable via IO::link_detach_with_modifier_click.modifier`)
-
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
)
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
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 theSetNodeName
function.
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
.
- Pins can now be offset from the node, controlled by the new
imnodes::Style::pin_offset
value.
-
Breaking change: removes
StyleFlags_PinOutline
andColorStyle_PinOutline
. -
Breaking change: replaces
SetNodePos
with two functions:SetNodeScreenSpacePos
andSetNodeGridSpacePos
. -
New editor panning utility functions:
EditorContextResetPanning
andEditorContextMoveToNode
. -
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 🎉
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