using System;
using ImGuiNET;
namespace GlitchyEngine.Extensions;
public static class ImGuiDataTypeExtension
{
public static ImGuiDataType GetImGuiDataType(Type type)
{
if (type == typeof(byte))
return ImGuiDataType.U8;
if (type == typeof(ushort))
return ImGuiDataType.U16;
if (type == typeof(uint))
return ImGuiDataType.U32;
if (type == typeof(ulong))
return ImGuiDataType.U64;
if (type == typeof(sbyte))
return ImGuiDataType.S8;
if (type == typeof(short))
return ImGuiDataType.S16;
if (type == typeof(int))
return ImGuiDataType.S32;
if (type == typeof(long))
return ImGuiDataType.S64;
if (type == typeof(float))
return ImGuiDataType.Float;
if (type == typeof(double))
return ImGuiDataType.Double;
throw new ArgumentException("The type must be an integer or float type.", nameof(type));
}
}
public static class ImGuiExtension
{
///
/// A helper function to attach a tooltip to the previous item. It automatically checks IsItemHovered before showing a tooltip with the given text.
///
/// The text to be displayed in the tooltip.
public static void AttachTooltip(string tooltip)
{
if (!ImGui.IsItemHovered())
return;
ImGui.BeginTooltip();
ImGui.TextUnformatted(tooltip);
ImGui.EndTooltip();
}
///
/// A helper function to attach a tooltip to the previous item. It automatically checks IsItemHovered before showing a tooltip with the given content.
///
/// A method that will be called to show the content of the tooltip.
public static void AttachTooltip(Action tooltipContent)
{
if (!ImGui.IsItemHovered())
return;
ImGui.BeginTooltip();
tooltipContent();
ImGui.EndTooltip();
}
}