Files
SDL3-TestingSuite/SDL3/ImGuiUserData.cs
T
2026-05-18 23:19:40 -05:00

35 lines
768 B
C#

using System.Runtime.InteropServices;
namespace SDL3_TestingSuite.SDL3;
public unsafe static class ImGuiUserData<T> where T : class
{
public static void* Store(T value)
{
if (value == null)
return null;
GCHandle handle = GCHandle.Alloc(value, GCHandleType.Normal);
return (void*)GCHandle.ToIntPtr(handle);
}
public static T? Get(void* ptr)
{
if (ptr == null)
return null;
GCHandle handle = GCHandle.FromIntPtr((nint)ptr);
return (T?)handle.Target;
}
public static void Free(void* ptr)
{
if (ptr == null)
return;
GCHandle handle = GCHandle.FromIntPtr((nint)ptr);
if (handle.IsAllocated)
handle.Free();
}
}