TedToolkit.Hexa.Raii.ImNodes
2026.4.8
dotnet add package TedToolkit.Hexa.Raii.ImNodes --version 2026.4.8
NuGet\Install-Package TedToolkit.Hexa.Raii.ImNodes -Version 2026.4.8
<PackageReference Include="TedToolkit.Hexa.Raii.ImNodes" Version="2026.4.8" />
<PackageVersion Include="TedToolkit.Hexa.Raii.ImNodes" Version="2026.4.8" />
<PackageReference Include="TedToolkit.Hexa.Raii.ImNodes" />
paket add TedToolkit.Hexa.Raii.ImNodes --version 2026.4.8
#r "nuget: TedToolkit.Hexa.Raii.ImNodes, 2026.4.8"
#:package TedToolkit.Hexa.Raii.ImNodes@2026.4.8
#addin nuget:?package=TedToolkit.Hexa.Raii.ImNodes&version=2026.4.8
#tool nuget:?package=TedToolkit.Hexa.Raii.ImNodes&version=2026.4.8
TedToolkit.Hexa.Raii.ImNodes
RAII-style scope wrappers for Hexa.NET.ImNodes, enabling safe and ergonomic use of ImNodes' Begin/End and Push/Pop API pairs via C# using statements.
Part of the TedToolkit.Hexa.Raii project.
Installation
dotnet add package TedToolkit.Hexa.Raii.ImNodes
Overview
ImNodes requires paired calls such as BeginNodeEditor/EndNodeEditor, BeginNode/EndNode, PushColorStyle/PopColorStyle, etc. These wrappers guarantee the matching cleanup function is always invoked when a scope exits, using readonly ref struct types that implement IDisposable.
Each wrapper:
- Returns a stack-allocated
readonly ref struct— zero heap allocation - Exposes a
Succeedproperty (andbooloperators) for conditional content rendering - Accepts an optional
enableparameter to skip theBegin/Endpair entirely - Is marked
AggressiveInliningfor zero overhead
Usage
using TedToolkit.Hexa.Raii;
// Node editor with nodes
using (ImNodesRaii.NodeEditor())
{
using (ImNodesRaii.Node(nodeId))
{
using (ImNodesRaii.NodeTitleBar())
{
ImGui.Text("My Node");
}
using (ImNodesRaii.InputAttribute(pinId))
{
ImGui.Text("Input");
}
using (ImNodesRaii.OutputAttribute(outPinId))
{
ImGui.Text("Output");
}
}
}
// Conditional rendering via enable parameter
using (ImNodesRaii.NodeEditor(enable: showEditor))
{
// Only rendered when showEditor is true
}
// Style push/pop
using (ImNodesRaii.ColorStyle(ImNodesCol.NodeBackground, 0xFF2255AA))
{
// Nodes rendered here use the custom background color
}
Available Scopes
| Method | Wraps | Cleanup |
|---|---|---|
NodeEditor |
ImNodes.BeginNodeEditor |
ImNodes.EndNodeEditor |
Node |
ImNodes.BeginNode |
ImNodes.EndNode |
NodeTitleBar |
ImNodes.BeginNodeTitleBar |
ImNodes.EndNodeTitleBar |
InputAttribute |
ImNodes.BeginInputAttribute |
ImNodes.EndInputAttribute |
OutputAttribute |
ImNodes.BeginOutputAttribute |
ImNodes.EndOutputAttribute |
StaticAttribute |
ImNodes.BeginStaticAttribute |
ImNodes.EndStaticAttribute |
ColorStyle |
ImNodes.PushColorStyle |
ImNodes.PopColorStyle |
StyleVar |
ImNodes.PushStyleVar |
ImNodes.PopStyleVar |
AttributeFlag |
ImNodes.PushAttributeFlag |
ImNodes.PopAttributeFlag |
Target Frameworks
net6.0 · net7.0 · net8.0 · net9.0 · net10.0 · netstandard2.0 · netstandard2.1
License
Licensed under the GNU Lesser General Public License v3.0.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Hexa.NET.ImNodes (>= 2.2.9)
- System.Runtime.CompilerServices.Unsafe (>= 6.1.2)
-
.NETStandard 2.1
- Hexa.NET.ImNodes (>= 2.2.9)
- System.Runtime.CompilerServices.Unsafe (>= 6.1.2)
-
net10.0
- Hexa.NET.ImNodes (>= 2.2.9)
-
net6.0
- Hexa.NET.ImNodes (>= 2.2.9)
-
net7.0
- Hexa.NET.ImNodes (>= 2.2.9)
-
net8.0
- Hexa.NET.ImNodes (>= 2.2.9)
-
net9.0
- Hexa.NET.ImNodes (>= 2.2.9)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2026.4.8 | 81 | 4/8/2026 |
| 2026.4.4 | 83 | 4/4/2026 |
| 2026.1.30.2 | 110 | 1/30/2026 |
| 2026.1.30.1 | 94 | 1/30/2026 |
| 2026.1.30 | 100 | 1/30/2026 |
| 2026.1.29.2 | 101 | 1/29/2026 |
| 2026.1.29.1 | 100 | 1/29/2026 |