mirror of
https://github.com/goatcorp/Dalamud.git
synced 2026-02-23 00:07:49 +01:00
Use ImGuiWindow from gen, support AddCallback
This commit is contained in:
parent
f7749237ee
commit
1a15600a8f
9 changed files with 91 additions and 87 deletions
15
imgui/Dalamud.Bindings.ImGui/Custom/ImDrawCallbackEnum.cs
Normal file
15
imgui/Dalamud.Bindings.ImGui/Custom/ImDrawCallbackEnum.cs
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
namespace Dalamud.Bindings.ImGui;
|
||||
|
||||
public enum ImDrawCallbackEnum
|
||||
{
|
||||
Empty,
|
||||
|
||||
/// <summary>
|
||||
/// Special Draw callback value to request renderer backend to reset the graphics/render state.
|
||||
/// The renderer backend needs to handle this special value, otherwise it will crash trying to call a function at
|
||||
/// this address. This is useful for example if you submitted callbacks which you know have altered the render
|
||||
/// state, and you want it to be restored. It is not done by default because they are many perfectly useful way of
|
||||
/// altering render state for imgui contents (e.g. changing shader/blending settings before an Image call).
|
||||
/// </summary>
|
||||
ResetRenderState = -1,
|
||||
}
|
||||
|
|
@ -1,6 +1,3 @@
|
|||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace Dalamud.Bindings.ImGui;
|
||||
|
||||
public unsafe partial class ImGui
|
||||
|
|
|
|||
|
|
@ -6,6 +6,26 @@ namespace Dalamud.Bindings.ImGui;
|
|||
[SuppressMessage("ReSharper", "InconsistentNaming")]
|
||||
public static unsafe partial class ImGui
|
||||
{
|
||||
public static void AddCallback(
|
||||
ImDrawListPtr self, delegate*<ImDrawList*, ImDrawCmd*, void> callback, void* callbackData = null) =>
|
||||
((delegate* unmanaged[Cdecl]<ImDrawList*, delegate*<ImDrawList*, ImDrawCmd*, void>, void*, void>)funcTable
|
||||
[540])(self, callback, callbackData);
|
||||
|
||||
public static void AddCallback(
|
||||
ImDrawListPtr self, delegate*<ImDrawListPtr, ImDrawCmdPtr, void> callback, void* callbackData = null) =>
|
||||
AddCallback(self, (delegate*<ImDrawList*, ImDrawCmd*, void>)callback, callbackData);
|
||||
|
||||
public static void AddCallback(
|
||||
ImDrawListPtr self, delegate*<ref ImDrawList, ref ImDrawCmd, void> callback, void* callbackData = null) =>
|
||||
AddCallback(self, (delegate*<ImDrawList*, ImDrawCmd*, void>)callback, callbackData);
|
||||
|
||||
public static void AddCallback(ImDrawListPtr self, ImDrawCallbackEnum presetCallback)
|
||||
{
|
||||
if (!Enum.IsDefined(presetCallback))
|
||||
throw new ArgumentOutOfRangeException(nameof(presetCallback), presetCallback, null);
|
||||
AddCallback(self, (delegate*<ImDrawList*, ImDrawCmd*, void>)(nint)presetCallback);
|
||||
}
|
||||
|
||||
public static ImGuiPayloadPtr AcceptDragDropPayload(
|
||||
ImU8String type, ImGuiDragDropFlags flags = ImGuiDragDropFlags.None)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue