ImAnim.NET
1.0.0
dotnet add package ImAnim.NET --version 1.0.0
NuGet\Install-Package ImAnim.NET -Version 1.0.0
<PackageReference Include="ImAnim.NET" Version="1.0.0" />
<PackageVersion Include="ImAnim.NET" Version="1.0.0" />
<PackageReference Include="ImAnim.NET" />
paket add ImAnim.NET --version 1.0.0
#r "nuget: ImAnim.NET, 1.0.0"
#:package ImAnim.NET@1.0.0
#addin nuget:?package=ImAnim.NET&version=1.0.0
#tool nuget:?package=ImAnim.NET&version=1.0.0
ImAnim.NET
Animation Engine for Hexa.NET.ImGui
ImAnim.NET is a C# port of ImAnim, bringing the same animation toolkit to applications built on Hexa.NET.ImGui. Tweens, clips, easing curves, and procedural effects from the original C++ library are available here with a familiar .NET-style API.
Version 1.0.0 — First Official Release
This is the first stable release of ImAnim.NET, mirroring the feature set of ImAnim 1.0.0.
// Animate anything in one line
float alpha = ImAnim.TweenFloat(id, channel, hovered ? 1.0f : 0.5f, 0.3f, ease, policy, dt);
Why ImAnim.NET?
- Immediate-mode friendly — Drops straight into your existing Hexa.NET.ImGui loop
- Zero extra native dependencies — Pure managed C#, only requires Hexa.NET.ImGui
- Large easing collection — 30+ easing functions, including spring physics
- Perceptual color blending — OKLAB and OKLCH support
- Responsive layouts — Anchor-relative animations that survive window resizing
- .NET-native ergonomics — Nullable-aware API,
Span<T>-friendly overloads, and no manual memory management
Features at a Glance
| Category | Capabilities |
|---|---|
| Tweens | Float, Vector2, Vector4, Int, Color with crossfade/cut/queue policies |
| Clips | Timeline keyframes, looping, callbacks, chaining, stagger, variations |
| Easing | Quad to Bounce presets, cubic-bezier, steps, spring physics, per-axis |
| Paths | Bezier curves, Catmull-Rom splines, path morphing, text along paths |
| Transforms | Position, rotation, scale with rotation modes |
| Procedural | Oscillators, shake, wiggle, Perlin/Simplex noise |
| Colors | Gradients, style interpolation, OKLAB/OKLCH blending |
| Advanced | Layering/blending, resolved tweens, drag feedback, scroll animation |
| Tools | Debug inspector, profiler, save/load, memory management |
Quick Integration
Step 1: Install the NuGet package.
dotnet add package ImAnim.NET
Step 2: Add two lines after ImGui.NewFrame():
using Hexa.NET.ImGui;
using ImAnimNET;
ImGui.NewFrame();
// Add these two lines
ImAnim.UpdateBeginFrame();
ImAnim.ClipUpdate(ImGui.GetIO().DeltaTime);
// Your UI code...
Step 3: Animate! Here's a hover effect:
bool hovered = ImGui.IsItemHovered();
float scale = ImAnim.TweenFloat(
ImGui.GetID("btn"), ImAnim.HashStr("scale"),
hovered ? 1.1f : 1.0f, 0.2f,
ImAnim.EasePreset(EaseType.OutBack),
TweenPolicy.Crossfade,
ImGui.GetIO().DeltaTime
);
No native build step, no interop headaches — just add the package reference and start animating.
Note: None of the original ImAnim example projects have been ported. Instead, a standalone sample using GLFW + OpenGL 4.6 is included to demonstrate integration with Hexa.NET.ImGui.
Documentation
Full API and feature documentation is built with DocFX directly from the XML doc comments in the source, plus hand-written conceptual guides. It covers every category from the feature table above (tweens, clips, easing, paths, transforms, procedural effects, colors, and advanced/debug tools) with C# code examples and API references.
Interactive Demo
ImAnim ships built-in playground windows for exploring every feature. Call them directly from your UI code:
ImAnim.ImAnimDemoWindow();
Two additional windows are also available (present upstream in ImAnim as well, just not mentioned in its README):
// A gallery of UI use cases (buttons, cards, stagger lists, etc.)
ImAnim.ImAnimUsecaseWindow();
// An in-app reference for the API, shown right inside your application
ImAnim.ImAnimDocWindow();
Demo Categories
| Category | What You'll Find |
|---|---|
| Easing & Tweens | Easing gallery, custom bezier editor, spring physics, per-axis easing |
| Interactive Widgets | Animated buttons, toggle switches, hover cards, progress indicators |
| Clip-Based Animations | Timeline keyframes, looping, callbacks, chaining, layering system |
| Procedural Animations | Oscillators, shake/wiggle effects, Perlin/Simplex noise |
| Motion Paths | Bezier curves, Catmull-Rom splines, path morphing, text along paths |
| Advanced Interpolation | Gradients, transforms, style interpolation, text stagger |
| Utilities | ImDrawList animations, resize-aware helpers, scroll animation, drag feedback |
| Debug Tools | Inspector, profiler, memory stats |
| Stress Test | Performance benchmarks with thousands of concurrent animations |
Use Cases
The demo showcases practical UI patterns you can adapt directly in your own C# application:
- Animated Buttons — Hover scaling, press feedback, icon animations
- Toggle Switches — Smooth state transitions with easing
- Hover Cards — Expand/collapse with spring physics
- List Stagger — Cascading item reveal animations
- Grid Reveal — Wave-based grid animations
- Dropping Cards — Physics-inspired card animations
- Health Bars — Color gradient health indicators
- Loading Indicators — Pulsing rings, spinning elements
- Error Feedback — Shake effects for invalid input
- Scroll Navigation — Smooth scroll-to-section animations
Relationship to ImAnim
ImAnim.NET is an independent, community-maintained C# port of the original ImAnim by Soufiane KHIAT, adapted for Hexa.NET.ImGui instead of the native C++ Dear ImGui bindings. API names follow .NET conventions (PascalCase methods, Vector2/Vector4 from System.Numerics, etc.) but map one-to-one onto the original library's concepts, so the upstream documentation and design notes remain a useful reference. Please support the original project if you rely on this port.
Contributing
Issues and pull requests are welcome. If you're adding a new feature, please check whether it exists upstream in ImAnim first so the two projects stay in sync.
Acknowledgments
- Soufiane KHIAT — creator of the original ImAnim, the library this project ports and builds on
- Hexa.NET.ImGui — the C# Dear ImGui bindings this port targets
- Dear ImGui by Omar Cornut — the immediate-mode GUI library the whole ecosystem is built on
- Everyone who files issues, sends pull requests, or otherwise helps keep this port in sync with upstream
License
MIT License — see LICENSE for details. ImAnim.NET is a derivative work of ImAnim, also MIT-licensed; see NOTICE for attribution.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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 was computed. 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 was computed. 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. |
-
net8.0
- Hexa.NET.ImGui (>= 3.1.0-experimental)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on ImAnim.NET:
| Package | Downloads |
|---|---|
|
C.ImGuiGLFW
C# class library that simplifies the creation of ImGui-rendered windows. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 0 | 9/20/2026 |