This change overhauls ImGui.NET to be almost entirely auto-generated.
It parses data files from cimgui, which contain pre-processed
information about Dear ImGui's structures, enums, and functions. The
code generator spits out identical C# types and functions, and also
generates a safe, friendly wrapper layer.
--- This is a combination of 22 commits. ---
Initial attempt at auto-generating the native bindings.
More WIP generator stuff.
Mostly-working bindings with some TODO's left.
More WIP stuff for safe wrappers and bindings.
WIP
Update cimgui definitions and even better safe wrappers.
Fix "nonUDT" overloads and add a "RangeAccessor" struct.
Remove constructor methods from wrapper types.
More WIP
Grab latest structs_and_enums.json file
Attempted improvements
Very good state, everything working.
Correct cimgui.dll (win-x64)
Rework how ref/out parameters are marshalled.
Remove problematic string begin/end parameter pairs.
Update native deps to 1.0.65, update ImGui.NET.csproj.
Fix sample program compilation.
Fix up XNA sample program with new binding changes.
Add several more manual ImGui overloads to ease the upgrade.
Add [Flags] to flags enums.
Change version to 1.65.0.
Capitalize "Dear ImGui".
* The drawlist branch includes a bunch of additional wrapper methods for
ImDrawList stuff. As part of that, the DrawList type had some minor
refactoring to it, in a way that closely mirrors other native types.
There is now a "managed" DrawList type, and a "raw" NativeDrawList type.
The DrawList type is a safe convenience wrapper over the native type,
which is still there if needed. Not all ImDrawList functions have
convenience wrappers yet, but there are enough to build quite a few
things with.
* This is also a fairly large reorganization and updating of the build files in
the repository. Given that a stable version of the .NET Core tools have
been release, I've updated all of the project files to use the new
project syntax exclusively. There is now only one project for ImGui,
which targets .NET Standard 1.1 using the new SDK syntax. There is a
single sample project as well, targeting .NET Core 1.0. .NET Framework
is still supported, because the library still targets .NET Standard 1.1.