Decompiled source of OverlayDearImGui Shared v2.0.0
plugins/OverlayDearImGui.Shared/ImGui.NET.dll
Decompiled a month ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Diagnostics; using System.Globalization; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")] [assembly: InternalsVisibleTo("ImPlot.NET")] [assembly: InternalsVisibleTo("ImNodes.NET")] [assembly: AssemblyCompany("Eric Mellino")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyDescription("A .NET wrapper for the Dear ImGui library.")] [assembly: AssemblyFileVersion("1.90.1.1")] [assembly: AssemblyInformationalVersion("1.0.0+94d483978526a3cf3ae9161d5029f1ee00412879")] [assembly: AssemblyProduct("ImGui.NET")] [assembly: AssemblyTitle("ImGui.NET")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.90.1.1")] [module: UnverifiableCode] namespace ImGuiNET; public delegate void Platform_CreateWindow(ImGuiViewportPtr vp); public delegate void Platform_DestroyWindow(ImGuiViewportPtr vp); public delegate void Platform_ShowWindow(ImGuiViewportPtr vp); public delegate void Platform_SetWindowPos(ImGuiViewportPtr vp, Vector2 pos); public unsafe delegate void Platform_GetWindowPos(ImGuiViewportPtr vp, Vector2* outPos); public delegate void Platform_SetWindowSize(ImGuiViewportPtr vp, Vector2 size); public unsafe delegate void Platform_GetWindowSize(ImGuiViewportPtr vp, Vector2* outSize); public delegate void Platform_SetWindowFocus(ImGuiViewportPtr vp); public delegate byte Platform_GetWindowFocus(ImGuiViewportPtr vp); public delegate byte Platform_GetWindowMinimized(ImGuiViewportPtr vp); public delegate void Platform_SetWindowTitle(ImGuiViewportPtr vp, IntPtr title); public struct ImColor { public Vector4 Value; } public struct ImColorPtr { public unsafe ImColor* NativePtr { get; } public unsafe ref Vector4 Value => ref Unsafe.AsRef<Vector4>(&NativePtr->Value); public unsafe ImColorPtr(ImColor* nativePtr) { NativePtr = nativePtr; } public unsafe ImColorPtr(IntPtr nativePtr) { NativePtr = (ImColor*)(void*)nativePtr; } public unsafe static implicit operator ImColorPtr(ImColor* nativePtr) { return new ImColorPtr(nativePtr); } public unsafe static implicit operator ImColor*(ImColorPtr wrappedPtr) { return wrappedPtr.NativePtr; } public static implicit operator ImColorPtr(IntPtr nativePtr) { return new ImColorPtr(nativePtr); } public unsafe void Destroy() { ImGuiNative.ImColor_destroy(NativePtr); } public unsafe ImColor HSV(float h, float s, float v) { float a = 1f; ImColor result = default(ImColor); ImGuiNative.ImColor_HSV(&result, h, s, v, a); return result; } public unsafe ImColor HSV(float h, float s, float v, float a) { ImColor result = default(ImColor); ImGuiNative.ImColor_HSV(&result, h, s, v, a); return result; } public unsafe void SetHSV(float h, float s, float v) { float a = 1f; ImGuiNative.ImColor_SetHSV(NativePtr, h, s, v, a); } public unsafe void SetHSV(float h, float s, float v, float a) { ImGuiNative.ImColor_SetHSV(NativePtr, h, s, v, a); } } public struct ImDrawChannel { public ImVector _CmdBuffer; public ImVector _IdxBuffer; } public struct ImDrawChannelPtr { public unsafe ImDrawChannel* NativePtr { get; } public unsafe ImPtrVector<ImDrawCmdPtr> _CmdBuffer => new ImPtrVector<ImDrawCmdPtr>(NativePtr->_CmdBuffer, Unsafe.SizeOf<ImDrawCmd>()); public unsafe ImVector<ushort> _IdxBuffer => new ImVector<ushort>(NativePtr->_IdxBuffer); public unsafe ImDrawChannelPtr(ImDrawChannel* nativePtr) { NativePtr = nativePtr; } public unsafe ImDrawChannelPtr(IntPtr nativePtr) { NativePtr = (ImDrawChannel*)(void*)nativePtr; } public unsafe static implicit operator ImDrawChannelPtr(ImDrawChannel* nativePtr) { return new ImDrawChannelPtr(nativePtr); } public unsafe static implicit operator ImDrawChannel*(ImDrawChannelPtr wrappedPtr) { return wrappedPtr.NativePtr; } public static implicit operator ImDrawChannelPtr(IntPtr nativePtr) { return new ImDrawChannelPtr(nativePtr); } } public struct ImDrawCmd { public Vector4 ClipRect; public IntPtr TextureId; public uint VtxOffset; public uint IdxOffset; public uint ElemCount; public IntPtr UserCallback; public unsafe void* UserCallbackData; } public struct ImDrawCmdPtr { public unsafe ImDrawCmd* NativePtr { get; } public unsafe ref Vector4 ClipRect => ref Unsafe.AsRef<Vector4>(&NativePtr->ClipRect); public unsafe ref IntPtr TextureId => ref Unsafe.AsRef<IntPtr>(&NativePtr->TextureId); public unsafe ref uint VtxOffset => ref Unsafe.AsRef<uint>(&NativePtr->VtxOffset); public unsafe ref uint IdxOffset => ref Unsafe.AsRef<uint>(&NativePtr->IdxOffset); public unsafe ref uint ElemCount => ref Unsafe.AsRef<uint>(&NativePtr->ElemCount); public unsafe ref IntPtr UserCallback => ref Unsafe.AsRef<IntPtr>(&NativePtr->UserCallback); public unsafe IntPtr UserCallbackData { get { return (IntPtr)NativePtr->UserCallbackData; } set { NativePtr->UserCallbackData = (void*)value; } } public unsafe ImDrawCmdPtr(ImDrawCmd* nativePtr) { NativePtr = nativePtr; } public unsafe ImDrawCmdPtr(IntPtr nativePtr) { NativePtr = (ImDrawCmd*)(void*)nativePtr; } public unsafe static implicit operator ImDrawCmdPtr(ImDrawCmd* nativePtr) { return new ImDrawCmdPtr(nativePtr); } public unsafe static implicit operator ImDrawCmd*(ImDrawCmdPtr wrappedPtr) { return wrappedPtr.NativePtr; } public static implicit operator ImDrawCmdPtr(IntPtr nativePtr) { return new ImDrawCmdPtr(nativePtr); } public unsafe void Destroy() { ImGuiNative.ImDrawCmd_destroy(NativePtr); } public unsafe IntPtr GetTexID() { return ImGuiNative.ImDrawCmd_GetTexID(NativePtr); } } public struct ImDrawCmdHeader { public Vector4 ClipRect; public IntPtr TextureId; public uint VtxOffset; } public struct ImDrawCmdHeaderPtr { public unsafe ImDrawCmdHeader* NativePtr { get; } public unsafe ref Vector4 ClipRect => ref Unsafe.AsRef<Vector4>(&NativePtr->ClipRect); public unsafe ref IntPtr TextureId => ref Unsafe.AsRef<IntPtr>(&NativePtr->TextureId); public unsafe ref uint VtxOffset => ref Unsafe.AsRef<uint>(&NativePtr->VtxOffset); public unsafe ImDrawCmdHeaderPtr(ImDrawCmdHeader* nativePtr) { NativePtr = nativePtr; } public unsafe ImDrawCmdHeaderPtr(IntPtr nativePtr) { NativePtr = (ImDrawCmdHeader*)(void*)nativePtr; } public unsafe static implicit operator ImDrawCmdHeaderPtr(ImDrawCmdHeader* nativePtr) { return new ImDrawCmdHeaderPtr(nativePtr); } public unsafe static implicit operator ImDrawCmdHeader*(ImDrawCmdHeaderPtr wrappedPtr) { return wrappedPtr.NativePtr; } public static implicit operator ImDrawCmdHeaderPtr(IntPtr nativePtr) { return new ImDrawCmdHeaderPtr(nativePtr); } } public struct ImDrawData { public byte Valid; public int CmdListsCount; public int TotalIdxCount; public int TotalVtxCount; public ImVector CmdLists; public Vector2 DisplayPos; public Vector2 DisplaySize; public Vector2 FramebufferScale; public unsafe ImGuiViewport* OwnerViewport; } public struct ImDrawDataPtr { public unsafe ImDrawData* NativePtr { get; } public unsafe ref bool Valid => ref Unsafe.AsRef<bool>(&NativePtr->Valid); public unsafe ref int CmdListsCount => ref Unsafe.AsRef<int>(&NativePtr->CmdListsCount); public unsafe ref int TotalIdxCount => ref Unsafe.AsRef<int>(&NativePtr->TotalIdxCount); public unsafe ref int TotalVtxCount => ref Unsafe.AsRef<int>(&NativePtr->TotalVtxCount); public unsafe ImVector<ImDrawListPtr> CmdLists => new ImVector<ImDrawListPtr>(NativePtr->CmdLists); public unsafe ref Vector2 DisplayPos => ref Unsafe.AsRef<Vector2>(&NativePtr->DisplayPos); public unsafe ref Vector2 DisplaySize => ref Unsafe.AsRef<Vector2>(&NativePtr->DisplaySize); public unsafe ref Vector2 FramebufferScale => ref Unsafe.AsRef<Vector2>(&NativePtr->FramebufferScale); public unsafe ImGuiViewportPtr OwnerViewport => new ImGuiViewportPtr(NativePtr->OwnerViewport); public unsafe ImDrawDataPtr(ImDrawData* nativePtr) { NativePtr = nativePtr; } public unsafe ImDrawDataPtr(IntPtr nativePtr) { NativePtr = (ImDrawData*)(void*)nativePtr; } public unsafe static implicit operator ImDrawDataPtr(ImDrawData* nativePtr) { return new ImDrawDataPtr(nativePtr); } public unsafe static implicit operator ImDrawData*(ImDrawDataPtr wrappedPtr) { return wrappedPtr.NativePtr; } public static implicit operator ImDrawDataPtr(IntPtr nativePtr) { return new ImDrawDataPtr(nativePtr); } public unsafe void AddDrawList(ImDrawListPtr draw_list) { ImDrawList* nativePtr = draw_list.NativePtr; ImGuiNative.ImDrawData_AddDrawList(NativePtr, nativePtr); } public unsafe void Clear() { ImGuiNative.ImDrawData_Clear(NativePtr); } public unsafe void DeIndexAllBuffers() { ImGuiNative.ImDrawData_DeIndexAllBuffers(NativePtr); } public unsafe void Destroy() { ImGuiNative.ImDrawData_destroy(NativePtr); } public unsafe void ScaleClipRects(Vector2 fb_scale) { ImGuiNative.ImDrawData_ScaleClipRects(NativePtr, fb_scale); } } [Flags] public enum ImDrawFlags { None = 0, Closed = 1, RoundCornersTopLeft = 0x10, RoundCornersTopRight = 0x20, RoundCornersBottomLeft = 0x40, RoundCornersBottomRight = 0x80, RoundCornersNone = 0x100, RoundCornersTop = 0x30, RoundCornersBottom = 0xC0, RoundCornersLeft = 0x50, RoundCornersRight = 0xA0, RoundCornersAll = 0xF0, RoundCornersDefault = 0xF0, RoundCornersMask = 0x1F0 } public struct ImDrawList { public ImVector CmdBuffer; public ImVector IdxBuffer; public ImVector VtxBuffer; public ImDrawListFlags Flags; public uint _VtxCurrentIdx; public IntPtr _Data; public unsafe byte* _OwnerName; public unsafe ImDrawVert* _VtxWritePtr; public unsafe ushort* _IdxWritePtr; public ImVector _ClipRectStack; public ImVector _TextureIdStack; public ImVector _Path; public ImDrawCmdHeader _CmdHeader; public ImDrawListSplitter _Splitter; public float _FringeScale; } public struct ImDrawListPtr { public unsafe ImDrawList* NativePtr { get; } public unsafe ImPtrVector<ImDrawCmdPtr> CmdBuffer => new ImPtrVector<ImDrawCmdPtr>(NativePtr->CmdBuffer, Unsafe.SizeOf<ImDrawCmd>()); public unsafe ImVector<ushort> IdxBuffer => new ImVector<ushort>(NativePtr->IdxBuffer); public unsafe ImPtrVector<ImDrawVertPtr> VtxBuffer => new ImPtrVector<ImDrawVertPtr>(NativePtr->VtxBuffer, Unsafe.SizeOf<ImDrawVert>()); public unsafe ref ImDrawListFlags Flags => ref Unsafe.AsRef<ImDrawListFlags>(&NativePtr->Flags); public unsafe ref uint _VtxCurrentIdx => ref Unsafe.AsRef<uint>(&NativePtr->_VtxCurrentIdx); public unsafe ref IntPtr _Data => ref Unsafe.AsRef<IntPtr>(&NativePtr->_Data); public unsafe NullTerminatedString _OwnerName => new NullTerminatedString(NativePtr->_OwnerName); public unsafe ImDrawVertPtr _VtxWritePtr => new ImDrawVertPtr(NativePtr->_VtxWritePtr); public unsafe IntPtr _IdxWritePtr { get { return (IntPtr)NativePtr->_IdxWritePtr; } set { NativePtr->_IdxWritePtr = (ushort*)(void*)value; } } public unsafe ImVector<Vector4> _ClipRectStack => new ImVector<Vector4>(NativePtr->_ClipRectStack); public unsafe ImVector<IntPtr> _TextureIdStack => new ImVector<IntPtr>(NativePtr->_TextureIdStack); public unsafe ImVector<Vector2> _Path => new ImVector<Vector2>(NativePtr->_Path); public unsafe ref ImDrawCmdHeader _CmdHeader => ref Unsafe.AsRef<ImDrawCmdHeader>(&NativePtr->_CmdHeader); public unsafe ref ImDrawListSplitter _Splitter => ref Unsafe.AsRef<ImDrawListSplitter>(&NativePtr->_Splitter); public unsafe ref float _FringeScale => ref Unsafe.AsRef<float>(&NativePtr->_FringeScale); public unsafe ImDrawListPtr(ImDrawList* nativePtr) { NativePtr = nativePtr; } public unsafe ImDrawListPtr(IntPtr nativePtr) { NativePtr = (ImDrawList*)(void*)nativePtr; } public unsafe static implicit operator ImDrawListPtr(ImDrawList* nativePtr) { return new ImDrawListPtr(nativePtr); } public unsafe static implicit operator ImDrawList*(ImDrawListPtr wrappedPtr) { return wrappedPtr.NativePtr; } public static implicit operator ImDrawListPtr(IntPtr nativePtr) { return new ImDrawListPtr(nativePtr); } public unsafe int _CalcCircleAutoSegmentCount(float radius) { return ImGuiNative.ImDrawList__CalcCircleAutoSegmentCount(NativePtr, radius); } public unsafe void _ClearFreeMemory() { ImGuiNative.ImDrawList__ClearFreeMemory(NativePtr); } public unsafe void _OnChangedClipRect() { ImGuiNative.ImDrawList__OnChangedClipRect(NativePtr); } public unsafe void _OnChangedTextureID() { ImGuiNative.ImDrawList__OnChangedTextureID(NativePtr); } public unsafe void _OnChangedVtxOffset() { ImGuiNative.ImDrawList__OnChangedVtxOffset(NativePtr); } public unsafe void _PathArcToFastEx(Vector2 center, float radius, int a_min_sample, int a_max_sample, int a_step) { ImGuiNative.ImDrawList__PathArcToFastEx(NativePtr, center, radius, a_min_sample, a_max_sample, a_step); } public unsafe void _PathArcToN(Vector2 center, float radius, float a_min, float a_max, int num_segments) { ImGuiNative.ImDrawList__PathArcToN(NativePtr, center, radius, a_min, a_max, num_segments); } public unsafe void _PopUnusedDrawCmd() { ImGuiNative.ImDrawList__PopUnusedDrawCmd(NativePtr); } public unsafe void _ResetForNewFrame() { ImGuiNative.ImDrawList__ResetForNewFrame(NativePtr); } public unsafe void _TryMergeDrawCmds() { ImGuiNative.ImDrawList__TryMergeDrawCmds(NativePtr); } public unsafe void AddBezierCubic(Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, uint col, float thickness) { int num_segments = 0; ImGuiNative.ImDrawList_AddBezierCubic(NativePtr, p1, p2, p3, p4, col, thickness, num_segments); } public unsafe void AddBezierCubic(Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, uint col, float thickness, int num_segments) { ImGuiNative.ImDrawList_AddBezierCubic(NativePtr, p1, p2, p3, p4, col, thickness, num_segments); } public unsafe void AddBezierQuadratic(Vector2 p1, Vector2 p2, Vector2 p3, uint col, float thickness) { int num_segments = 0; ImGuiNative.ImDrawList_AddBezierQuadratic(NativePtr, p1, p2, p3, col, thickness, num_segments); } public unsafe void AddBezierQuadratic(Vector2 p1, Vector2 p2, Vector2 p3, uint col, float thickness, int num_segments) { ImGuiNative.ImDrawList_AddBezierQuadratic(NativePtr, p1, p2, p3, col, thickness, num_segments); } public unsafe void AddCallback(IntPtr callback, IntPtr callback_data) { void* callback_data2 = callback_data.ToPointer(); ImGuiNative.ImDrawList_AddCallback(NativePtr, callback, callback_data2); } public unsafe void AddCircle(Vector2 center, float radius, uint col) { int num_segments = 0; float thickness = 1f; ImGuiNative.ImDrawList_AddCircle(NativePtr, center, radius, col, num_segments, thickness); } public unsafe void AddCircle(Vector2 center, float radius, uint col, int num_segments) { float thickness = 1f; ImGuiNative.ImDrawList_AddCircle(NativePtr, center, radius, col, num_segments, thickness); } public unsafe void AddCircle(Vector2 center, float radius, uint col, int num_segments, float thickness) { ImGuiNative.ImDrawList_AddCircle(NativePtr, center, radius, col, num_segments, thickness); } public unsafe void AddCircleFilled(Vector2 center, float radius, uint col) { int num_segments = 0; ImGuiNative.ImDrawList_AddCircleFilled(NativePtr, center, radius, col, num_segments); } public unsafe void AddCircleFilled(Vector2 center, float radius, uint col, int num_segments) { ImGuiNative.ImDrawList_AddCircleFilled(NativePtr, center, radius, col, num_segments); } public unsafe void AddConvexPolyFilled(ref Vector2 points, int num_points, uint col) { fixed (Vector2* points2 = &points) { ImGuiNative.ImDrawList_AddConvexPolyFilled(NativePtr, points2, num_points, col); } } public unsafe void AddDrawCmd() { ImGuiNative.ImDrawList_AddDrawCmd(NativePtr); } public unsafe void AddEllipse(Vector2 center, float radius_x, float radius_y, uint col) { float rot = 0f; int num_segments = 0; float thickness = 1f; ImGuiNative.ImDrawList_AddEllipse(NativePtr, center, radius_x, radius_y, col, rot, num_segments, thickness); } public unsafe void AddEllipse(Vector2 center, float radius_x, float radius_y, uint col, float rot) { int num_segments = 0; float thickness = 1f; ImGuiNative.ImDrawList_AddEllipse(NativePtr, center, radius_x, radius_y, col, rot, num_segments, thickness); } public unsafe void AddEllipse(Vector2 center, float radius_x, float radius_y, uint col, float rot, int num_segments) { float thickness = 1f; ImGuiNative.ImDrawList_AddEllipse(NativePtr, center, radius_x, radius_y, col, rot, num_segments, thickness); } public unsafe void AddEllipse(Vector2 center, float radius_x, float radius_y, uint col, float rot, int num_segments, float thickness) { ImGuiNative.ImDrawList_AddEllipse(NativePtr, center, radius_x, radius_y, col, rot, num_segments, thickness); } public unsafe void AddEllipseFilled(Vector2 center, float radius_x, float radius_y, uint col) { float rot = 0f; int num_segments = 0; ImGuiNative.ImDrawList_AddEllipseFilled(NativePtr, center, radius_x, radius_y, col, rot, num_segments); } public unsafe void AddEllipseFilled(Vector2 center, float radius_x, float radius_y, uint col, float rot) { int num_segments = 0; ImGuiNative.ImDrawList_AddEllipseFilled(NativePtr, center, radius_x, radius_y, col, rot, num_segments); } public unsafe void AddEllipseFilled(Vector2 center, float radius_x, float radius_y, uint col, float rot, int num_segments) { ImGuiNative.ImDrawList_AddEllipseFilled(NativePtr, center, radius_x, radius_y, col, rot, num_segments); } public unsafe void AddImage(IntPtr user_texture_id, Vector2 p_min, Vector2 p_max) { Vector2 uv_min = default(Vector2); Vector2 uv_max = new Vector2(1f, 1f); uint col = uint.MaxValue; ImGuiNative.ImDrawList_AddImage(NativePtr, user_texture_id, p_min, p_max, uv_min, uv_max, col); } public unsafe void AddImage(IntPtr user_texture_id, Vector2 p_min, Vector2 p_max, Vector2 uv_min) { Vector2 uv_max = new Vector2(1f, 1f); uint col = uint.MaxValue; ImGuiNative.ImDrawList_AddImage(NativePtr, user_texture_id, p_min, p_max, uv_min, uv_max, col); } public unsafe void AddImage(IntPtr user_texture_id, Vector2 p_min, Vector2 p_max, Vector2 uv_min, Vector2 uv_max) { uint col = uint.MaxValue; ImGuiNative.ImDrawList_AddImage(NativePtr, user_texture_id, p_min, p_max, uv_min, uv_max, col); } public unsafe void AddImage(IntPtr user_texture_id, Vector2 p_min, Vector2 p_max, Vector2 uv_min, Vector2 uv_max, uint col) { ImGuiNative.ImDrawList_AddImage(NativePtr, user_texture_id, p_min, p_max, uv_min, uv_max, col); } public unsafe void AddImageQuad(IntPtr user_texture_id, Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4) { Vector2 uv = default(Vector2); Vector2 uv2 = new Vector2(1f, 0f); Vector2 uv3 = new Vector2(1f, 1f); Vector2 uv4 = new Vector2(0f, 1f); uint col = uint.MaxValue; ImGuiNative.ImDrawList_AddImageQuad(NativePtr, user_texture_id, p1, p2, p3, p4, uv, uv2, uv3, uv4, col); } public unsafe void AddImageQuad(IntPtr user_texture_id, Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, Vector2 uv1) { Vector2 uv2 = new Vector2(1f, 0f); Vector2 uv3 = new Vector2(1f, 1f); Vector2 uv4 = new Vector2(0f, 1f); uint col = uint.MaxValue; ImGuiNative.ImDrawList_AddImageQuad(NativePtr, user_texture_id, p1, p2, p3, p4, uv1, uv2, uv3, uv4, col); } public unsafe void AddImageQuad(IntPtr user_texture_id, Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, Vector2 uv1, Vector2 uv2) { Vector2 uv3 = new Vector2(1f, 1f); Vector2 uv4 = new Vector2(0f, 1f); uint col = uint.MaxValue; ImGuiNative.ImDrawList_AddImageQuad(NativePtr, user_texture_id, p1, p2, p3, p4, uv1, uv2, uv3, uv4, col); } public unsafe void AddImageQuad(IntPtr user_texture_id, Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, Vector2 uv1, Vector2 uv2, Vector2 uv3) { Vector2 uv4 = new Vector2(0f, 1f); uint col = uint.MaxValue; ImGuiNative.ImDrawList_AddImageQuad(NativePtr, user_texture_id, p1, p2, p3, p4, uv1, uv2, uv3, uv4, col); } public unsafe void AddImageQuad(IntPtr user_texture_id, Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, Vector2 uv1, Vector2 uv2, Vector2 uv3, Vector2 uv4) { uint col = uint.MaxValue; ImGuiNative.ImDrawList_AddImageQuad(NativePtr, user_texture_id, p1, p2, p3, p4, uv1, uv2, uv3, uv4, col); } public unsafe void AddImageQuad(IntPtr user_texture_id, Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, Vector2 uv1, Vector2 uv2, Vector2 uv3, Vector2 uv4, uint col) { ImGuiNative.ImDrawList_AddImageQuad(NativePtr, user_texture_id, p1, p2, p3, p4, uv1, uv2, uv3, uv4, col); } public unsafe void AddImageRounded(IntPtr user_texture_id, Vector2 p_min, Vector2 p_max, Vector2 uv_min, Vector2 uv_max, uint col, float rounding) { ImDrawFlags flags = ImDrawFlags.None; ImGuiNative.ImDrawList_AddImageRounded(NativePtr, user_texture_id, p_min, p_max, uv_min, uv_max, col, rounding, flags); } public unsafe void AddImageRounded(IntPtr user_texture_id, Vector2 p_min, Vector2 p_max, Vector2 uv_min, Vector2 uv_max, uint col, float rounding, ImDrawFlags flags) { ImGuiNative.ImDrawList_AddImageRounded(NativePtr, user_texture_id, p_min, p_max, uv_min, uv_max, col, rounding, flags); } public unsafe void AddLine(Vector2 p1, Vector2 p2, uint col) { float thickness = 1f; ImGuiNative.ImDrawList_AddLine(NativePtr, p1, p2, col, thickness); } public unsafe void AddLine(Vector2 p1, Vector2 p2, uint col, float thickness) { ImGuiNative.ImDrawList_AddLine(NativePtr, p1, p2, col, thickness); } public unsafe void AddNgon(Vector2 center, float radius, uint col, int num_segments) { float thickness = 1f; ImGuiNative.ImDrawList_AddNgon(NativePtr, center, radius, col, num_segments, thickness); } public unsafe void AddNgon(Vector2 center, float radius, uint col, int num_segments, float thickness) { ImGuiNative.ImDrawList_AddNgon(NativePtr, center, radius, col, num_segments, thickness); } public unsafe void AddNgonFilled(Vector2 center, float radius, uint col, int num_segments) { ImGuiNative.ImDrawList_AddNgonFilled(NativePtr, center, radius, col, num_segments); } public unsafe void AddPolyline(ref Vector2 points, int num_points, uint col, ImDrawFlags flags, float thickness) { fixed (Vector2* points2 = &points) { ImGuiNative.ImDrawList_AddPolyline(NativePtr, points2, num_points, col, flags, thickness); } } public unsafe void AddQuad(Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, uint col) { float thickness = 1f; ImGuiNative.ImDrawList_AddQuad(NativePtr, p1, p2, p3, p4, col, thickness); } public unsafe void AddQuad(Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, uint col, float thickness) { ImGuiNative.ImDrawList_AddQuad(NativePtr, p1, p2, p3, p4, col, thickness); } public unsafe void AddQuadFilled(Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, uint col) { ImGuiNative.ImDrawList_AddQuadFilled(NativePtr, p1, p2, p3, p4, col); } public unsafe void AddRect(Vector2 p_min, Vector2 p_max, uint col) { float rounding = 0f; ImDrawFlags flags = ImDrawFlags.None; float thickness = 1f; ImGuiNative.ImDrawList_AddRect(NativePtr, p_min, p_max, col, rounding, flags, thickness); } public unsafe void AddRect(Vector2 p_min, Vector2 p_max, uint col, float rounding) { ImDrawFlags flags = ImDrawFlags.None; float thickness = 1f; ImGuiNative.ImDrawList_AddRect(NativePtr, p_min, p_max, col, rounding, flags, thickness); } public unsafe void AddRect(Vector2 p_min, Vector2 p_max, uint col, float rounding, ImDrawFlags flags) { float thickness = 1f; ImGuiNative.ImDrawList_AddRect(NativePtr, p_min, p_max, col, rounding, flags, thickness); } public unsafe void AddRect(Vector2 p_min, Vector2 p_max, uint col, float rounding, ImDrawFlags flags, float thickness) { ImGuiNative.ImDrawList_AddRect(NativePtr, p_min, p_max, col, rounding, flags, thickness); } public unsafe void AddRectFilled(Vector2 p_min, Vector2 p_max, uint col) { float rounding = 0f; ImDrawFlags flags = ImDrawFlags.None; ImGuiNative.ImDrawList_AddRectFilled(NativePtr, p_min, p_max, col, rounding, flags); } public unsafe void AddRectFilled(Vector2 p_min, Vector2 p_max, uint col, float rounding) { ImDrawFlags flags = ImDrawFlags.None; ImGuiNative.ImDrawList_AddRectFilled(NativePtr, p_min, p_max, col, rounding, flags); } public unsafe void AddRectFilled(Vector2 p_min, Vector2 p_max, uint col, float rounding, ImDrawFlags flags) { ImGuiNative.ImDrawList_AddRectFilled(NativePtr, p_min, p_max, col, rounding, flags); } public unsafe void AddRectFilledMultiColor(Vector2 p_min, Vector2 p_max, uint col_upr_left, uint col_upr_right, uint col_bot_right, uint col_bot_left) { ImGuiNative.ImDrawList_AddRectFilledMultiColor(NativePtr, p_min, p_max, col_upr_left, col_upr_right, col_bot_right, col_bot_left); } public unsafe void AddText(Vector2 pos, uint col, string text_begin) { int num = 0; num = Encoding.UTF8.GetByteCount(text_begin); byte* ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(text_begin, ptr, num); ptr[utf] = 0; ImGuiNative.ImDrawList_AddText_Vec2(NativePtr, pos, col, ptr, ptr + num); if (num > 2048) { Util.Free(ptr); } } public unsafe void AddText(ImFontPtr font, float font_size, Vector2 pos, uint col, string text_begin) { ImFont* nativePtr = font.NativePtr; int num = 0; num = Encoding.UTF8.GetByteCount(text_begin); byte* ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(text_begin, ptr, num); ptr[utf] = 0; float wrap_width = 0f; Vector4* cpu_fine_clip_rect = null; ImGuiNative.ImDrawList_AddText_FontPtr(NativePtr, nativePtr, font_size, pos, col, ptr, ptr + num, wrap_width, cpu_fine_clip_rect); if (num > 2048) { Util.Free(ptr); } } public unsafe void AddText(ImFontPtr font, float font_size, Vector2 pos, uint col, string text_begin, float wrap_width) { ImFont* nativePtr = font.NativePtr; int num = 0; num = Encoding.UTF8.GetByteCount(text_begin); byte* ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(text_begin, ptr, num); ptr[utf] = 0; Vector4* cpu_fine_clip_rect = null; ImGuiNative.ImDrawList_AddText_FontPtr(NativePtr, nativePtr, font_size, pos, col, ptr, ptr + num, wrap_width, cpu_fine_clip_rect); if (num > 2048) { Util.Free(ptr); } } public unsafe void AddText(ImFontPtr font, float font_size, Vector2 pos, uint col, string text_begin, float wrap_width, ref Vector4 cpu_fine_clip_rect) { ImFont* nativePtr = font.NativePtr; int num = 0; num = Encoding.UTF8.GetByteCount(text_begin); byte* ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(text_begin, ptr, num); ptr[utf] = 0; fixed (Vector4* cpu_fine_clip_rect2 = &cpu_fine_clip_rect) { ImGuiNative.ImDrawList_AddText_FontPtr(NativePtr, nativePtr, font_size, pos, col, ptr, ptr + num, wrap_width, cpu_fine_clip_rect2); if (num > 2048) { Util.Free(ptr); } } } public unsafe void AddTriangle(Vector2 p1, Vector2 p2, Vector2 p3, uint col) { float thickness = 1f; ImGuiNative.ImDrawList_AddTriangle(NativePtr, p1, p2, p3, col, thickness); } public unsafe void AddTriangle(Vector2 p1, Vector2 p2, Vector2 p3, uint col, float thickness) { ImGuiNative.ImDrawList_AddTriangle(NativePtr, p1, p2, p3, col, thickness); } public unsafe void AddTriangleFilled(Vector2 p1, Vector2 p2, Vector2 p3, uint col) { ImGuiNative.ImDrawList_AddTriangleFilled(NativePtr, p1, p2, p3, col); } public unsafe void ChannelsMerge() { ImGuiNative.ImDrawList_ChannelsMerge(NativePtr); } public unsafe void ChannelsSetCurrent(int n) { ImGuiNative.ImDrawList_ChannelsSetCurrent(NativePtr, n); } public unsafe void ChannelsSplit(int count) { ImGuiNative.ImDrawList_ChannelsSplit(NativePtr, count); } public unsafe ImDrawListPtr CloneOutput() { return new ImDrawListPtr(ImGuiNative.ImDrawList_CloneOutput(NativePtr)); } public unsafe void Destroy() { ImGuiNative.ImDrawList_destroy(NativePtr); } public unsafe Vector2 GetClipRectMax() { Vector2 result = default(Vector2); ImGuiNative.ImDrawList_GetClipRectMax(&result, NativePtr); return result; } public unsafe Vector2 GetClipRectMin() { Vector2 result = default(Vector2); ImGuiNative.ImDrawList_GetClipRectMin(&result, NativePtr); return result; } public unsafe void PathArcTo(Vector2 center, float radius, float a_min, float a_max) { int num_segments = 0; ImGuiNative.ImDrawList_PathArcTo(NativePtr, center, radius, a_min, a_max, num_segments); } public unsafe void PathArcTo(Vector2 center, float radius, float a_min, float a_max, int num_segments) { ImGuiNative.ImDrawList_PathArcTo(NativePtr, center, radius, a_min, a_max, num_segments); } public unsafe void PathArcToFast(Vector2 center, float radius, int a_min_of_12, int a_max_of_12) { ImGuiNative.ImDrawList_PathArcToFast(NativePtr, center, radius, a_min_of_12, a_max_of_12); } public unsafe void PathBezierCubicCurveTo(Vector2 p2, Vector2 p3, Vector2 p4) { int num_segments = 0; ImGuiNative.ImDrawList_PathBezierCubicCurveTo(NativePtr, p2, p3, p4, num_segments); } public unsafe void PathBezierCubicCurveTo(Vector2 p2, Vector2 p3, Vector2 p4, int num_segments) { ImGuiNative.ImDrawList_PathBezierCubicCurveTo(NativePtr, p2, p3, p4, num_segments); } public unsafe void PathBezierQuadraticCurveTo(Vector2 p2, Vector2 p3) { int num_segments = 0; ImGuiNative.ImDrawList_PathBezierQuadraticCurveTo(NativePtr, p2, p3, num_segments); } public unsafe void PathBezierQuadraticCurveTo(Vector2 p2, Vector2 p3, int num_segments) { ImGuiNative.ImDrawList_PathBezierQuadraticCurveTo(NativePtr, p2, p3, num_segments); } public unsafe void PathClear() { ImGuiNative.ImDrawList_PathClear(NativePtr); } public unsafe void PathEllipticalArcTo(Vector2 center, float radius_x, float radius_y, float rot, float a_min, float a_max) { int num_segments = 0; ImGuiNative.ImDrawList_PathEllipticalArcTo(NativePtr, center, radius_x, radius_y, rot, a_min, a_max, num_segments); } public unsafe void PathEllipticalArcTo(Vector2 center, float radius_x, float radius_y, float rot, float a_min, float a_max, int num_segments) { ImGuiNative.ImDrawList_PathEllipticalArcTo(NativePtr, center, radius_x, radius_y, rot, a_min, a_max, num_segments); } public unsafe void PathFillConvex(uint col) { ImGuiNative.ImDrawList_PathFillConvex(NativePtr, col); } public unsafe void PathLineTo(Vector2 pos) { ImGuiNative.ImDrawList_PathLineTo(NativePtr, pos); } public unsafe void PathLineToMergeDuplicate(Vector2 pos) { ImGuiNative.ImDrawList_PathLineToMergeDuplicate(NativePtr, pos); } public unsafe void PathRect(Vector2 rect_min, Vector2 rect_max) { float rounding = 0f; ImDrawFlags flags = ImDrawFlags.None; ImGuiNative.ImDrawList_PathRect(NativePtr, rect_min, rect_max, rounding, flags); } public unsafe void PathRect(Vector2 rect_min, Vector2 rect_max, float rounding) { ImDrawFlags flags = ImDrawFlags.None; ImGuiNative.ImDrawList_PathRect(NativePtr, rect_min, rect_max, rounding, flags); } public unsafe void PathRect(Vector2 rect_min, Vector2 rect_max, float rounding, ImDrawFlags flags) { ImGuiNative.ImDrawList_PathRect(NativePtr, rect_min, rect_max, rounding, flags); } public unsafe void PathStroke(uint col) { ImDrawFlags flags = ImDrawFlags.None; float thickness = 1f; ImGuiNative.ImDrawList_PathStroke(NativePtr, col, flags, thickness); } public unsafe void PathStroke(uint col, ImDrawFlags flags) { float thickness = 1f; ImGuiNative.ImDrawList_PathStroke(NativePtr, col, flags, thickness); } public unsafe void PathStroke(uint col, ImDrawFlags flags, float thickness) { ImGuiNative.ImDrawList_PathStroke(NativePtr, col, flags, thickness); } public unsafe void PopClipRect() { ImGuiNative.ImDrawList_PopClipRect(NativePtr); } public unsafe void PopTextureID() { ImGuiNative.ImDrawList_PopTextureID(NativePtr); } public unsafe void PrimQuadUV(Vector2 a, Vector2 b, Vector2 c, Vector2 d, Vector2 uv_a, Vector2 uv_b, Vector2 uv_c, Vector2 uv_d, uint col) { ImGuiNative.ImDrawList_PrimQuadUV(NativePtr, a, b, c, d, uv_a, uv_b, uv_c, uv_d, col); } public unsafe void PrimRect(Vector2 a, Vector2 b, uint col) { ImGuiNative.ImDrawList_PrimRect(NativePtr, a, b, col); } public unsafe void PrimRectUV(Vector2 a, Vector2 b, Vector2 uv_a, Vector2 uv_b, uint col) { ImGuiNative.ImDrawList_PrimRectUV(NativePtr, a, b, uv_a, uv_b, col); } public unsafe void PrimReserve(int idx_count, int vtx_count) { ImGuiNative.ImDrawList_PrimReserve(NativePtr, idx_count, vtx_count); } public unsafe void PrimUnreserve(int idx_count, int vtx_count) { ImGuiNative.ImDrawList_PrimUnreserve(NativePtr, idx_count, vtx_count); } public unsafe void PrimVtx(Vector2 pos, Vector2 uv, uint col) { ImGuiNative.ImDrawList_PrimVtx(NativePtr, pos, uv, col); } public unsafe void PrimWriteIdx(ushort idx) { ImGuiNative.ImDrawList_PrimWriteIdx(NativePtr, idx); } public unsafe void PrimWriteVtx(Vector2 pos, Vector2 uv, uint col) { ImGuiNative.ImDrawList_PrimWriteVtx(NativePtr, pos, uv, col); } public unsafe void PushClipRect(Vector2 clip_rect_min, Vector2 clip_rect_max) { byte intersect_with_current_clip_rect = 0; ImGuiNative.ImDrawList_PushClipRect(NativePtr, clip_rect_min, clip_rect_max, intersect_with_current_clip_rect); } public unsafe void PushClipRect(Vector2 clip_rect_min, Vector2 clip_rect_max, bool intersect_with_current_clip_rect) { byte intersect_with_current_clip_rect2 = (intersect_with_current_clip_rect ? ((byte)1) : ((byte)0)); ImGuiNative.ImDrawList_PushClipRect(NativePtr, clip_rect_min, clip_rect_max, intersect_with_current_clip_rect2); } public unsafe void PushClipRectFullScreen() { ImGuiNative.ImDrawList_PushClipRectFullScreen(NativePtr); } public unsafe void PushTextureID(IntPtr texture_id) { ImGuiNative.ImDrawList_PushTextureID(NativePtr, texture_id); } } [Flags] public enum ImDrawListFlags { None = 0, AntiAliasedLines = 1, AntiAliasedLinesUseTex = 2, AntiAliasedFill = 4, AllowVtxOffset = 8 } public struct ImDrawListSplitter { public int _Current; public int _Count; public ImVector _Channels; } public struct ImDrawListSplitterPtr { public unsafe ImDrawListSplitter* NativePtr { get; } public unsafe ref int _Current => ref Unsafe.AsRef<int>(&NativePtr->_Current); public unsafe ref int _Count => ref Unsafe.AsRef<int>(&NativePtr->_Count); public unsafe ImPtrVector<ImDrawChannelPtr> _Channels => new ImPtrVector<ImDrawChannelPtr>(NativePtr->_Channels, Unsafe.SizeOf<ImDrawChannel>()); public unsafe ImDrawListSplitterPtr(ImDrawListSplitter* nativePtr) { NativePtr = nativePtr; } public unsafe ImDrawListSplitterPtr(IntPtr nativePtr) { NativePtr = (ImDrawListSplitter*)(void*)nativePtr; } public unsafe static implicit operator ImDrawListSplitterPtr(ImDrawListSplitter* nativePtr) { return new ImDrawListSplitterPtr(nativePtr); } public unsafe static implicit operator ImDrawListSplitter*(ImDrawListSplitterPtr wrappedPtr) { return wrappedPtr.NativePtr; } public static implicit operator ImDrawListSplitterPtr(IntPtr nativePtr) { return new ImDrawListSplitterPtr(nativePtr); } public unsafe void Clear() { ImGuiNative.ImDrawListSplitter_Clear(NativePtr); } public unsafe void ClearFreeMemory() { ImGuiNative.ImDrawListSplitter_ClearFreeMemory(NativePtr); } public unsafe void Destroy() { ImGuiNative.ImDrawListSplitter_destroy(NativePtr); } public unsafe void Merge(ImDrawListPtr draw_list) { ImDrawList* nativePtr = draw_list.NativePtr; ImGuiNative.ImDrawListSplitter_Merge(NativePtr, nativePtr); } public unsafe void SetCurrentChannel(ImDrawListPtr draw_list, int channel_idx) { ImDrawList* nativePtr = draw_list.NativePtr; ImGuiNative.ImDrawListSplitter_SetCurrentChannel(NativePtr, nativePtr, channel_idx); } public unsafe void Split(ImDrawListPtr draw_list, int count) { ImDrawList* nativePtr = draw_list.NativePtr; ImGuiNative.ImDrawListSplitter_Split(NativePtr, nativePtr, count); } } public struct ImDrawVert { public Vector2 pos; public Vector2 uv; public uint col; } public struct ImDrawVertPtr { public unsafe ImDrawVert* NativePtr { get; } public unsafe ref Vector2 pos => ref Unsafe.AsRef<Vector2>(&NativePtr->pos); public unsafe ref Vector2 uv => ref Unsafe.AsRef<Vector2>(&NativePtr->uv); public unsafe ref uint col => ref Unsafe.AsRef<uint>(&NativePtr->col); public unsafe ImDrawVertPtr(ImDrawVert* nativePtr) { NativePtr = nativePtr; } public unsafe ImDrawVertPtr(IntPtr nativePtr) { NativePtr = (ImDrawVert*)(void*)nativePtr; } public unsafe static implicit operator ImDrawVertPtr(ImDrawVert* nativePtr) { return new ImDrawVertPtr(nativePtr); } public unsafe static implicit operator ImDrawVert*(ImDrawVertPtr wrappedPtr) { return wrappedPtr.NativePtr; } public static implicit operator ImDrawVertPtr(IntPtr nativePtr) { return new ImDrawVertPtr(nativePtr); } } public struct ImFont { public ImVector IndexAdvanceX; public float FallbackAdvanceX; public float FontSize; public ImVector IndexLookup; public ImVector Glyphs; public unsafe ImFontGlyph* FallbackGlyph; public unsafe ImFontAtlas* ContainerAtlas; public unsafe ImFontConfig* ConfigData; public short ConfigDataCount; public ushort FallbackChar; public ushort EllipsisChar; public short EllipsisCharCount; public float EllipsisWidth; public float EllipsisCharStep; public byte DirtyLookupTables; public float Scale; public float Ascent; public float Descent; public int MetricsTotalSurface; public unsafe fixed byte Used4kPagesMap[2]; } public struct ImFontPtr { public unsafe ImFont* NativePtr { get; } public unsafe ImVector<float> IndexAdvanceX => new ImVector<float>(NativePtr->IndexAdvanceX); public unsafe ref float FallbackAdvanceX => ref Unsafe.AsRef<float>(&NativePtr->FallbackAdvanceX); public unsafe ref float FontSize => ref Unsafe.AsRef<float>(&NativePtr->FontSize); public unsafe ImVector<ushort> IndexLookup => new ImVector<ushort>(NativePtr->IndexLookup); public unsafe ImPtrVector<ImFontGlyphPtr> Glyphs => new ImPtrVector<ImFontGlyphPtr>(NativePtr->Glyphs, Unsafe.SizeOf<ImFontGlyph>()); public unsafe ImFontGlyphPtr FallbackGlyph => new ImFontGlyphPtr(NativePtr->FallbackGlyph); public unsafe ImFontAtlasPtr ContainerAtlas => new ImFontAtlasPtr(NativePtr->ContainerAtlas); public unsafe ImFontConfigPtr ConfigData => new ImFontConfigPtr(NativePtr->ConfigData); public unsafe ref short ConfigDataCount => ref Unsafe.AsRef<short>(&NativePtr->ConfigDataCount); public unsafe ref ushort FallbackChar => ref Unsafe.AsRef<ushort>(&NativePtr->FallbackChar); public unsafe ref ushort EllipsisChar => ref Unsafe.AsRef<ushort>(&NativePtr->EllipsisChar); public unsafe ref short EllipsisCharCount => ref Unsafe.AsRef<short>(&NativePtr->EllipsisCharCount); public unsafe ref float EllipsisWidth => ref Unsafe.AsRef<float>(&NativePtr->EllipsisWidth); public unsafe ref float EllipsisCharStep => ref Unsafe.AsRef<float>(&NativePtr->EllipsisCharStep); public unsafe ref bool DirtyLookupTables => ref Unsafe.AsRef<bool>(&NativePtr->DirtyLookupTables); public unsafe ref float Scale => ref Unsafe.AsRef<float>(&NativePtr->Scale); public unsafe ref float Ascent => ref Unsafe.AsRef<float>(&NativePtr->Ascent); public unsafe ref float Descent => ref Unsafe.AsRef<float>(&NativePtr->Descent); public unsafe ref int MetricsTotalSurface => ref Unsafe.AsRef<int>(&NativePtr->MetricsTotalSurface); public unsafe RangeAccessor<byte> Used4kPagesMap => new RangeAccessor<byte>(NativePtr->Used4kPagesMap, 2); public unsafe ImFontPtr(ImFont* nativePtr) { NativePtr = nativePtr; } public unsafe ImFontPtr(IntPtr nativePtr) { NativePtr = (ImFont*)(void*)nativePtr; } public unsafe static implicit operator ImFontPtr(ImFont* nativePtr) { return new ImFontPtr(nativePtr); } public unsafe static implicit operator ImFont*(ImFontPtr wrappedPtr) { return wrappedPtr.NativePtr; } public static implicit operator ImFontPtr(IntPtr nativePtr) { return new ImFontPtr(nativePtr); } public unsafe void AddGlyph(ImFontConfigPtr src_cfg, ushort c, float x0, float y0, float x1, float y1, float u0, float v0, float u1, float v1, float advance_x) { ImFontConfig* nativePtr = src_cfg.NativePtr; ImGuiNative.ImFont_AddGlyph(NativePtr, nativePtr, c, x0, y0, x1, y1, u0, v0, u1, v1, advance_x); } public unsafe void AddRemapChar(ushort dst, ushort src) { byte overwrite_dst = 1; ImGuiNative.ImFont_AddRemapChar(NativePtr, dst, src, overwrite_dst); } public unsafe void AddRemapChar(ushort dst, ushort src, bool overwrite_dst) { byte overwrite_dst2 = (overwrite_dst ? ((byte)1) : ((byte)0)); ImGuiNative.ImFont_AddRemapChar(NativePtr, dst, src, overwrite_dst2); } public unsafe void BuildLookupTable() { ImGuiNative.ImFont_BuildLookupTable(NativePtr); } public unsafe Vector2 CalcTextSizeA(float size, float max_width, float wrap_width, string text_begin) { int num = 0; num = Encoding.UTF8.GetByteCount(text_begin); byte* ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(text_begin, ptr, num); ptr[utf] = 0; byte** remaining = null; Vector2 result = default(Vector2); ImGuiNative.ImFont_CalcTextSizeA(&result, NativePtr, size, max_width, wrap_width, ptr, ptr + num, remaining); if (num > 2048) { Util.Free(ptr); } return result; } public unsafe Vector2 CalcTextSizeA(float size, float max_width, float wrap_width, string text_begin, ref byte* remaining) { int num = 0; num = Encoding.UTF8.GetByteCount(text_begin); byte* ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(text_begin, ptr, num); ptr[utf] = 0; fixed (byte** remaining2 = &remaining) { Vector2 result = default(Vector2); ImGuiNative.ImFont_CalcTextSizeA(&result, NativePtr, size, max_width, wrap_width, ptr, ptr + num, remaining2); if (num > 2048) { Util.Free(ptr); } return result; } } public unsafe string CalcWordWrapPositionA(float scale, string text, float wrap_width) { int num = 0; byte* ptr; if (text != null) { num = Encoding.UTF8.GetByteCount(text); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(text, ptr, num); ptr[utf] = 0; } else { ptr = null; } byte* ptr2 = ImGuiNative.ImFont_CalcWordWrapPositionA(NativePtr, scale, ptr, ptr + num, wrap_width); if (num > 2048) { Util.Free(ptr); } return Util.StringFromPtr(ptr2); } public unsafe void ClearOutputData() { ImGuiNative.ImFont_ClearOutputData(NativePtr); } public unsafe void Destroy() { ImGuiNative.ImFont_destroy(NativePtr); } public unsafe ImFontGlyphPtr FindGlyph(ushort c) { return new ImFontGlyphPtr(ImGuiNative.ImFont_FindGlyph(NativePtr, c)); } public unsafe ImFontGlyphPtr FindGlyphNoFallback(ushort c) { return new ImFontGlyphPtr(ImGuiNative.ImFont_FindGlyphNoFallback(NativePtr, c)); } public unsafe float GetCharAdvance(ushort c) { return ImGuiNative.ImFont_GetCharAdvance(NativePtr, c); } public unsafe string GetDebugName() { return Util.StringFromPtr(ImGuiNative.ImFont_GetDebugName(NativePtr)); } public unsafe void GrowIndex(int new_size) { ImGuiNative.ImFont_GrowIndex(NativePtr, new_size); } public unsafe bool IsLoaded() { return ImGuiNative.ImFont_IsLoaded(NativePtr) != 0; } public unsafe void RenderChar(ImDrawListPtr draw_list, float size, Vector2 pos, uint col, ushort c) { ImDrawList* nativePtr = draw_list.NativePtr; ImGuiNative.ImFont_RenderChar(NativePtr, nativePtr, size, pos, col, c); } public unsafe void RenderText(ImDrawListPtr draw_list, float size, Vector2 pos, uint col, Vector4 clip_rect, string text_begin) { ImDrawList* nativePtr = draw_list.NativePtr; int num = 0; num = Encoding.UTF8.GetByteCount(text_begin); byte* ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(text_begin, ptr, num); ptr[utf] = 0; float wrap_width = 0f; byte cpu_fine_clip = 0; ImGuiNative.ImFont_RenderText(NativePtr, nativePtr, size, pos, col, clip_rect, ptr, ptr + num, wrap_width, cpu_fine_clip); if (num > 2048) { Util.Free(ptr); } } public unsafe void RenderText(ImDrawListPtr draw_list, float size, Vector2 pos, uint col, Vector4 clip_rect, string text_begin, float wrap_width) { ImDrawList* nativePtr = draw_list.NativePtr; int num = 0; num = Encoding.UTF8.GetByteCount(text_begin); byte* ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(text_begin, ptr, num); ptr[utf] = 0; byte cpu_fine_clip = 0; ImGuiNative.ImFont_RenderText(NativePtr, nativePtr, size, pos, col, clip_rect, ptr, ptr + num, wrap_width, cpu_fine_clip); if (num > 2048) { Util.Free(ptr); } } public unsafe void RenderText(ImDrawListPtr draw_list, float size, Vector2 pos, uint col, Vector4 clip_rect, string text_begin, float wrap_width, bool cpu_fine_clip) { ImDrawList* nativePtr = draw_list.NativePtr; int num = 0; num = Encoding.UTF8.GetByteCount(text_begin); byte* ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(text_begin, ptr, num); ptr[utf] = 0; byte cpu_fine_clip2 = (cpu_fine_clip ? ((byte)1) : ((byte)0)); ImGuiNative.ImFont_RenderText(NativePtr, nativePtr, size, pos, col, clip_rect, ptr, ptr + num, wrap_width, cpu_fine_clip2); if (num > 2048) { Util.Free(ptr); } } public unsafe void SetGlyphVisible(ushort c, bool visible) { byte visible2 = (visible ? ((byte)1) : ((byte)0)); ImGuiNative.ImFont_SetGlyphVisible(NativePtr, c, visible2); } } public struct ImFontAtlas { public ImFontAtlasFlags Flags; public IntPtr TexID; public int TexDesiredWidth; public int TexGlyphPadding; public byte Locked; public unsafe void* UserData; public byte TexReady; public byte TexPixelsUseColors; public unsafe byte* TexPixelsAlpha8; public unsafe uint* TexPixelsRGBA32; public int TexWidth; public int TexHeight; public Vector2 TexUvScale; public Vector2 TexUvWhitePixel; public ImVector Fonts; public ImVector CustomRects; public ImVector ConfigData; public Vector4 TexUvLines_0; public Vector4 TexUvLines_1; public Vector4 TexUvLines_2; public Vector4 TexUvLines_3; public Vector4 TexUvLines_4; public Vector4 TexUvLines_5; public Vector4 TexUvLines_6; public Vector4 TexUvLines_7; public Vector4 TexUvLines_8; public Vector4 TexUvLines_9; public Vector4 TexUvLines_10; public Vector4 TexUvLines_11; public Vector4 TexUvLines_12; public Vector4 TexUvLines_13; public Vector4 TexUvLines_14; public Vector4 TexUvLines_15; public Vector4 TexUvLines_16; public Vector4 TexUvLines_17; public Vector4 TexUvLines_18; public Vector4 TexUvLines_19; public Vector4 TexUvLines_20; public Vector4 TexUvLines_21; public Vector4 TexUvLines_22; public Vector4 TexUvLines_23; public Vector4 TexUvLines_24; public Vector4 TexUvLines_25; public Vector4 TexUvLines_26; public Vector4 TexUvLines_27; public Vector4 TexUvLines_28; public Vector4 TexUvLines_29; public Vector4 TexUvLines_30; public Vector4 TexUvLines_31; public Vector4 TexUvLines_32; public Vector4 TexUvLines_33; public Vector4 TexUvLines_34; public Vector4 TexUvLines_35; public Vector4 TexUvLines_36; public Vector4 TexUvLines_37; public Vector4 TexUvLines_38; public Vector4 TexUvLines_39; public Vector4 TexUvLines_40; public Vector4 TexUvLines_41; public Vector4 TexUvLines_42; public Vector4 TexUvLines_43; public Vector4 TexUvLines_44; public Vector4 TexUvLines_45; public Vector4 TexUvLines_46; public Vector4 TexUvLines_47; public Vector4 TexUvLines_48; public Vector4 TexUvLines_49; public Vector4 TexUvLines_50; public Vector4 TexUvLines_51; public Vector4 TexUvLines_52; public Vector4 TexUvLines_53; public Vector4 TexUvLines_54; public Vector4 TexUvLines_55; public Vector4 TexUvLines_56; public Vector4 TexUvLines_57; public Vector4 TexUvLines_58; public Vector4 TexUvLines_59; public Vector4 TexUvLines_60; public Vector4 TexUvLines_61; public Vector4 TexUvLines_62; public Vector4 TexUvLines_63; public unsafe IntPtr* FontBuilderIO; public uint FontBuilderFlags; public int PackIdMouseCursors; public int PackIdLines; } public struct ImFontAtlasPtr { public unsafe ImFontAtlas* NativePtr { get; } public unsafe ref ImFontAtlasFlags Flags => ref Unsafe.AsRef<ImFontAtlasFlags>(&NativePtr->Flags); public unsafe ref IntPtr TexID => ref Unsafe.AsRef<IntPtr>(&NativePtr->TexID); public unsafe ref int TexDesiredWidth => ref Unsafe.AsRef<int>(&NativePtr->TexDesiredWidth); public unsafe ref int TexGlyphPadding => ref Unsafe.AsRef<int>(&NativePtr->TexGlyphPadding); public unsafe ref bool Locked => ref Unsafe.AsRef<bool>(&NativePtr->Locked); public unsafe IntPtr UserData { get { return (IntPtr)NativePtr->UserData; } set { NativePtr->UserData = (void*)value; } } public unsafe ref bool TexReady => ref Unsafe.AsRef<bool>(&NativePtr->TexReady); public unsafe ref bool TexPixelsUseColors => ref Unsafe.AsRef<bool>(&NativePtr->TexPixelsUseColors); public unsafe IntPtr TexPixelsAlpha8 { get { return (IntPtr)NativePtr->TexPixelsAlpha8; } set { NativePtr->TexPixelsAlpha8 = (byte*)(void*)value; } } public unsafe IntPtr TexPixelsRGBA32 { get { return (IntPtr)NativePtr->TexPixelsRGBA32; } set { NativePtr->TexPixelsRGBA32 = (uint*)(void*)value; } } public unsafe ref int TexWidth => ref Unsafe.AsRef<int>(&NativePtr->TexWidth); public unsafe ref int TexHeight => ref Unsafe.AsRef<int>(&NativePtr->TexHeight); public unsafe ref Vector2 TexUvScale => ref Unsafe.AsRef<Vector2>(&NativePtr->TexUvScale); public unsafe ref Vector2 TexUvWhitePixel => ref Unsafe.AsRef<Vector2>(&NativePtr->TexUvWhitePixel); public unsafe ImVector<ImFontPtr> Fonts => new ImVector<ImFontPtr>(NativePtr->Fonts); public unsafe ImPtrVector<ImFontAtlasCustomRectPtr> CustomRects => new ImPtrVector<ImFontAtlasCustomRectPtr>(NativePtr->CustomRects, Unsafe.SizeOf<ImFontAtlasCustomRect>()); public unsafe ImPtrVector<ImFontConfigPtr> ConfigData => new ImPtrVector<ImFontConfigPtr>(NativePtr->ConfigData, Unsafe.SizeOf<ImFontConfig>()); public unsafe RangeAccessor<Vector4> TexUvLines => new RangeAccessor<Vector4>(&NativePtr->TexUvLines_0, 64); public unsafe IntPtr FontBuilderIO { get { return (IntPtr)NativePtr->FontBuilderIO; } set { NativePtr->FontBuilderIO = (IntPtr*)(void*)value; } } public unsafe ref uint FontBuilderFlags => ref Unsafe.AsRef<uint>(&NativePtr->FontBuilderFlags); public unsafe ref int PackIdMouseCursors => ref Unsafe.AsRef<int>(&NativePtr->PackIdMouseCursors); public unsafe ref int PackIdLines => ref Unsafe.AsRef<int>(&NativePtr->PackIdLines); public unsafe ImFontAtlasPtr(ImFontAtlas* nativePtr) { NativePtr = nativePtr; } public unsafe ImFontAtlasPtr(IntPtr nativePtr) { NativePtr = (ImFontAtlas*)(void*)nativePtr; } public unsafe static implicit operator ImFontAtlasPtr(ImFontAtlas* nativePtr) { return new ImFontAtlasPtr(nativePtr); } public unsafe static implicit operator ImFontAtlas*(ImFontAtlasPtr wrappedPtr) { return wrappedPtr.NativePtr; } public static implicit operator ImFontAtlasPtr(IntPtr nativePtr) { return new ImFontAtlasPtr(nativePtr); } public unsafe int AddCustomRectFontGlyph(ImFontPtr font, ushort id, int width, int height, float advance_x) { ImFont* nativePtr = font.NativePtr; return ImGuiNative.ImFontAtlas_AddCustomRectFontGlyph(NativePtr, nativePtr, id, width, height, advance_x, default(Vector2)); } public unsafe int AddCustomRectFontGlyph(ImFontPtr font, ushort id, int width, int height, float advance_x, Vector2 offset) { ImFont* nativePtr = font.NativePtr; return ImGuiNative.ImFontAtlas_AddCustomRectFontGlyph(NativePtr, nativePtr, id, width, height, advance_x, offset); } public unsafe int AddCustomRectRegular(int width, int height) { return ImGuiNative.ImFontAtlas_AddCustomRectRegular(NativePtr, width, height); } public unsafe ImFontPtr AddFont(ImFontConfigPtr font_cfg) { ImFontConfig* nativePtr = font_cfg.NativePtr; return new ImFontPtr(ImGuiNative.ImFontAtlas_AddFont(NativePtr, nativePtr)); } public unsafe ImFontPtr AddFontDefault() { ImFontConfig* font_cfg = null; return new ImFontPtr(ImGuiNative.ImFontAtlas_AddFontDefault(NativePtr, font_cfg)); } public unsafe ImFontPtr AddFontDefault(ImFontConfigPtr font_cfg) { ImFontConfig* nativePtr = font_cfg.NativePtr; return new ImFontPtr(ImGuiNative.ImFontAtlas_AddFontDefault(NativePtr, nativePtr)); } public unsafe ImFontPtr AddFontFromFileTTF(string filename, float size_pixels) { int num = 0; byte* ptr; if (filename != null) { num = Encoding.UTF8.GetByteCount(filename); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(filename, ptr, num); ptr[utf] = 0; } else { ptr = null; } ImFontConfig* font_cfg = null; ushort* glyph_ranges = null; ImFont* nativePtr = ImGuiNative.ImFontAtlas_AddFontFromFileTTF(NativePtr, ptr, size_pixels, font_cfg, glyph_ranges); if (num > 2048) { Util.Free(ptr); } return new ImFontPtr(nativePtr); } public unsafe ImFontPtr AddFontFromFileTTF(string filename, float size_pixels, ImFontConfigPtr font_cfg) { int num = 0; byte* ptr; if (filename != null) { num = Encoding.UTF8.GetByteCount(filename); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(filename, ptr, num); ptr[utf] = 0; } else { ptr = null; } ImFontConfig* nativePtr = font_cfg.NativePtr; ushort* glyph_ranges = null; ImFont* nativePtr2 = ImGuiNative.ImFontAtlas_AddFontFromFileTTF(NativePtr, ptr, size_pixels, nativePtr, glyph_ranges); if (num > 2048) { Util.Free(ptr); } return new ImFontPtr(nativePtr2); } public unsafe ImFontPtr AddFontFromFileTTF(string filename, float size_pixels, ImFontConfigPtr font_cfg, IntPtr glyph_ranges) { int num = 0; byte* ptr; if (filename != null) { num = Encoding.UTF8.GetByteCount(filename); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(filename, ptr, num); ptr[utf] = 0; } else { ptr = null; } ImFontConfig* nativePtr = font_cfg.NativePtr; ushort* glyph_ranges2 = (ushort*)glyph_ranges.ToPointer(); ImFont* nativePtr2 = ImGuiNative.ImFontAtlas_AddFontFromFileTTF(NativePtr, ptr, size_pixels, nativePtr, glyph_ranges2); if (num > 2048) { Util.Free(ptr); } return new ImFontPtr(nativePtr2); } public unsafe ImFontPtr AddFontFromMemoryCompressedBase85TTF(string compressed_font_data_base85, float size_pixels) { int num = 0; byte* ptr; if (compressed_font_data_base85 != null) { num = Encoding.UTF8.GetByteCount(compressed_font_data_base85); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(compressed_font_data_base85, ptr, num); ptr[utf] = 0; } else { ptr = null; } ImFontConfig* font_cfg = null; ushort* glyph_ranges = null; ImFont* nativePtr = ImGuiNative.ImFontAtlas_AddFontFromMemoryCompressedBase85TTF(NativePtr, ptr, size_pixels, font_cfg, glyph_ranges); if (num > 2048) { Util.Free(ptr); } return new ImFontPtr(nativePtr); } public unsafe ImFontPtr AddFontFromMemoryCompressedBase85TTF(string compressed_font_data_base85, float size_pixels, ImFontConfigPtr font_cfg) { int num = 0; byte* ptr; if (compressed_font_data_base85 != null) { num = Encoding.UTF8.GetByteCount(compressed_font_data_base85); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(compressed_font_data_base85, ptr, num); ptr[utf] = 0; } else { ptr = null; } ImFontConfig* nativePtr = font_cfg.NativePtr; ushort* glyph_ranges = null; ImFont* nativePtr2 = ImGuiNative.ImFontAtlas_AddFontFromMemoryCompressedBase85TTF(NativePtr, ptr, size_pixels, nativePtr, glyph_ranges); if (num > 2048) { Util.Free(ptr); } return new ImFontPtr(nativePtr2); } public unsafe ImFontPtr AddFontFromMemoryCompressedBase85TTF(string compressed_font_data_base85, float size_pixels, ImFontConfigPtr font_cfg, IntPtr glyph_ranges) { int num = 0; byte* ptr; if (compressed_font_data_base85 != null) { num = Encoding.UTF8.GetByteCount(compressed_font_data_base85); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(compressed_font_data_base85, ptr, num); ptr[utf] = 0; } else { ptr = null; } ImFontConfig* nativePtr = font_cfg.NativePtr; ushort* glyph_ranges2 = (ushort*)glyph_ranges.ToPointer(); ImFont* nativePtr2 = ImGuiNative.ImFontAtlas_AddFontFromMemoryCompressedBase85TTF(NativePtr, ptr, size_pixels, nativePtr, glyph_ranges2); if (num > 2048) { Util.Free(ptr); } return new ImFontPtr(nativePtr2); } public unsafe ImFontPtr AddFontFromMemoryCompressedTTF(IntPtr compressed_font_data, int compressed_font_data_size, float size_pixels) { void* compressed_font_data2 = compressed_font_data.ToPointer(); ImFontConfig* font_cfg = null; ushort* glyph_ranges = null; return new ImFontPtr(ImGuiNative.ImFontAtlas_AddFontFromMemoryCompressedTTF(NativePtr, compressed_font_data2, compressed_font_data_size, size_pixels, font_cfg, glyph_ranges)); } public unsafe ImFontPtr AddFontFromMemoryCompressedTTF(IntPtr compressed_font_data, int compressed_font_data_size, float size_pixels, ImFontConfigPtr font_cfg) { void* compressed_font_data2 = compressed_font_data.ToPointer(); ImFontConfig* nativePtr = font_cfg.NativePtr; ushort* glyph_ranges = null; return new ImFontPtr(ImGuiNative.ImFontAtlas_AddFontFromMemoryCompressedTTF(NativePtr, compressed_font_data2, compressed_font_data_size, size_pixels, nativePtr, glyph_ranges)); } public unsafe ImFontPtr AddFontFromMemoryCompressedTTF(IntPtr compressed_font_data, int compressed_font_data_size, float size_pixels, ImFontConfigPtr font_cfg, IntPtr glyph_ranges) { void* compressed_font_data2 = compressed_font_data.ToPointer(); ImFontConfig* nativePtr = font_cfg.NativePtr; ushort* glyph_ranges2 = (ushort*)glyph_ranges.ToPointer(); return new ImFontPtr(ImGuiNative.ImFontAtlas_AddFontFromMemoryCompressedTTF(NativePtr, compressed_font_data2, compressed_font_data_size, size_pixels, nativePtr, glyph_ranges2)); } public unsafe ImFontPtr AddFontFromMemoryTTF(IntPtr font_data, int font_data_size, float size_pixels) { void* font_data2 = font_data.ToPointer(); ImFontConfig* font_cfg = null; ushort* glyph_ranges = null; return new ImFontPtr(ImGuiNative.ImFontAtlas_AddFontFromMemoryTTF(NativePtr, font_data2, font_data_size, size_pixels, font_cfg, glyph_ranges)); } public unsafe ImFontPtr AddFontFromMemoryTTF(IntPtr font_data, int font_data_size, float size_pixels, ImFontConfigPtr font_cfg) { void* font_data2 = font_data.ToPointer(); ImFontConfig* nativePtr = font_cfg.NativePtr; ushort* glyph_ranges = null; return new ImFontPtr(ImGuiNative.ImFontAtlas_AddFontFromMemoryTTF(NativePtr, font_data2, font_data_size, size_pixels, nativePtr, glyph_ranges)); } public unsafe ImFontPtr AddFontFromMemoryTTF(IntPtr font_data, int font_data_size, float size_pixels, ImFontConfigPtr font_cfg, IntPtr glyph_ranges) { void* font_data2 = font_data.ToPointer(); ImFontConfig* nativePtr = font_cfg.NativePtr; ushort* glyph_ranges2 = (ushort*)glyph_ranges.ToPointer(); return new ImFontPtr(ImGuiNative.ImFontAtlas_AddFontFromMemoryTTF(NativePtr, font_data2, font_data_size, size_pixels, nativePtr, glyph_ranges2)); } public unsafe bool Build() { return ImGuiNative.ImFontAtlas_Build(NativePtr) != 0; } public unsafe void CalcCustomRectUV(ImFontAtlasCustomRectPtr rect, out Vector2 out_uv_min, out Vector2 out_uv_max) { ImFontAtlasCustomRect* nativePtr = rect.NativePtr; fixed (Vector2* out_uv_min2 = &out_uv_min) { fixed (Vector2* out_uv_max2 = &out_uv_max) { ImGuiNative.ImFontAtlas_CalcCustomRectUV(NativePtr, nativePtr, out_uv_min2, out_uv_max2); } } } public unsafe void Clear() { ImGuiNative.ImFontAtlas_Clear(NativePtr); } public unsafe void ClearFonts() { ImGuiNative.ImFontAtlas_ClearFonts(NativePtr); } public unsafe void ClearInputData() { ImGuiNative.ImFontAtlas_ClearInputData(NativePtr); } public unsafe void ClearTexData() { ImGuiNative.ImFontAtlas_ClearTexData(NativePtr); } public unsafe void Destroy() { ImGuiNative.ImFontAtlas_destroy(NativePtr); } public unsafe ImFontAtlasCustomRectPtr GetCustomRectByIndex(int index) { return new ImFontAtlasCustomRectPtr(ImGuiNative.ImFontAtlas_GetCustomRectByIndex(NativePtr, index)); } public unsafe IntPtr GetGlyphRangesChineseFull() { return (IntPtr)ImGuiNative.ImFontAtlas_GetGlyphRangesChineseFull(NativePtr); } public unsafe IntPtr GetGlyphRangesChineseSimplifiedCommon() { return (IntPtr)ImGuiNative.ImFontAtlas_GetGlyphRangesChineseSimplifiedCommon(NativePtr); } public unsafe IntPtr GetGlyphRangesCyrillic() { return (IntPtr)ImGuiNative.ImFontAtlas_GetGlyphRangesCyrillic(NativePtr); } public unsafe IntPtr GetGlyphRangesDefault() { return (IntPtr)ImGuiNative.ImFontAtlas_GetGlyphRangesDefault(NativePtr); } public unsafe IntPtr GetGlyphRangesGreek() { return (IntPtr)ImGuiNative.ImFontAtlas_GetGlyphRangesGreek(NativePtr); } public unsafe IntPtr GetGlyphRangesJapanese() { return (IntPtr)ImGuiNative.ImFontAtlas_GetGlyphRangesJapanese(NativePtr); } public unsafe IntPtr GetGlyphRangesKorean() { return (IntPtr)ImGuiNative.ImFontAtlas_GetGlyphRangesKorean(NativePtr); } public unsafe IntPtr GetGlyphRangesThai() { return (IntPtr)ImGuiNative.ImFontAtlas_GetGlyphRangesThai(NativePtr); } public unsafe IntPtr GetGlyphRangesVietnamese() { return (IntPtr)ImGuiNative.ImFontAtlas_GetGlyphRangesVietnamese(NativePtr); } public unsafe bool GetMouseCursorTexData(ImGuiMouseCursor cursor, out Vector2 out_offset, out Vector2 out_size, out Vector2 out_uv_border, out Vector2 out_uv_fill) { fixed (Vector2* out_offset2 = &out_offset) { fixed (Vector2* out_size2 = &out_size) { fixed (Vector2* out_uv_border2 = &out_uv_border) { fixed (Vector2* out_uv_fill2 = &out_uv_fill) { return ImGuiNative.ImFontAtlas_GetMouseCursorTexData(NativePtr, cursor, out_offset2, out_size2, out_uv_border2, out_uv_fill2) != 0; } } } } } public unsafe void GetTexDataAsAlpha8(out byte* out_pixels, out int out_width, out int out_height) { int* out_bytes_per_pixel = null; fixed (byte** out_pixels2 = &out_pixels) { fixed (int* out_width2 = &out_width) { fixed (int* out_height2 = &out_height) { ImGuiNative.ImFontAtlas_GetTexDataAsAlpha8(NativePtr, out_pixels2, out_width2, out_height2, out_bytes_per_pixel); } } } } public unsafe void GetTexDataAsAlpha8(out byte* out_pixels, out int out_width, out int out_height, out int out_bytes_per_pixel) { fixed (byte** out_pixels2 = &out_pixels) { fixed (int* out_width2 = &out_width) { fixed (int* out_height2 = &out_height) { fixed (int* out_bytes_per_pixel2 = &out_bytes_per_pixel) { ImGuiNative.ImFontAtlas_GetTexDataAsAlpha8(NativePtr, out_pixels2, out_width2, out_height2, out_bytes_per_pixel2); } } } } } public unsafe void GetTexDataAsAlpha8(out IntPtr out_pixels, out int out_width, out int out_height) { int* out_bytes_per_pixel = null; fixed (IntPtr* out_pixels2 = &out_pixels) { fixed (int* out_width2 = &out_width) { fixed (int* out_height2 = &out_height) { ImGuiNative.ImFontAtlas_GetTexDataAsAlpha8(NativePtr, out_pixels2, out_width2, out_height2, out_bytes_per_pixel); } } } } public unsafe void GetTexDataAsAlpha8(out IntPtr out_pixels, out int out_width, out int out_height, out int out_bytes_per_pixel) { fixed (IntPtr* out_pixels2 = &out_pixels) { fixed (int* out_width2 = &out_width) { fixed (int* out_height2 = &out_height) { fixed (int* out_bytes_per_pixel2 = &out_bytes_per_pixel) { ImGuiNative.ImFontAtlas_GetTexDataAsAlpha8(NativePtr, out_pixels2, out_width2, out_height2, out_bytes_per_pixel2); } } } } } public unsafe void GetTexDataAsRGBA32(out byte* out_pixels, out int out_width, out int out_height) { int* out_bytes_per_pixel = null; fixed (byte** out_pixels2 = &out_pixels) { fixed (int* out_width2 = &out_width) { fixed (int* out_height2 = &out_height) { ImGuiNative.ImFontAtlas_GetTexDataAsRGBA32(NativePtr, out_pixels2, out_width2, out_height2, out_bytes_per_pixel); } } } } public unsafe void GetTexDataAsRGBA32(out byte* out_pixels, out int out_width, out int out_height, out int out_bytes_per_pixel) { fixed (byte** out_pixels2 = &out_pixels) { fixed (int* out_width2 = &out_width) { fixed (int* out_height2 = &out_height) { fixed (int* out_bytes_per_pixel2 = &out_bytes_per_pixel) { ImGuiNative.ImFontAtlas_GetTexDataAsRGBA32(NativePtr, out_pixels2, out_width2, out_height2, out_bytes_per_pixel2); } } } } } public unsafe void GetTexDataAsRGBA32(out IntPtr out_pixels, out int out_width, out int out_height) { int* out_bytes_per_pixel = null; fixed (IntPtr* out_pixels2 = &out_pixels) { fixed (int* out_width2 = &out_width) { fixed (int* out_height2 = &out_height) { ImGuiNative.ImFontAtlas_GetTexDataAsRGBA32(NativePtr, out_pixels2, out_width2, out_height2, out_bytes_per_pixel); } } } } public unsafe void GetTexDataAsRGBA32(out IntPtr out_pixels, out int out_width, out int out_height, out int out_bytes_per_pixel) { fixed (IntPtr* out_pixels2 = &out_pixels) { fixed (int* out_width2 = &out_width) { fixed (int* out_height2 = &out_height) { fixed (int* out_bytes_per_pixel2 = &out_bytes_per_pixel) { ImGuiNative.ImFontAtlas_GetTexDataAsRGBA32(NativePtr, out_pixels2, out_width2, out_height2, out_bytes_per_pixel2); } } } } } public unsafe bool IsBuilt() { return ImGuiNative.ImFontAtlas_IsBuilt(NativePtr) != 0; } public unsafe void SetTexID(IntPtr id) { ImGuiNative.ImFontAtlas_SetTexID(NativePtr, id); } } public struct ImFontAtlasCustomRect { public ushort Width; public ushort Height; public ushort X; public ushort Y; public uint GlyphID; public float GlyphAdvanceX; public Vector2 GlyphOffset; public unsafe ImFont* Font; } public struct ImFontAtlasCustomRectPtr { public unsafe ImFontAtlasCustomRect* NativePtr { get; } public unsafe ref ushort Width => ref Unsafe.AsRef<ushort>(&NativePtr->Width); public unsafe ref ushort Height => ref Unsafe.AsRef<ushort>(&NativePtr->Height); public unsafe ref ushort X => ref Unsafe.AsRef<ushort>(&NativePtr->X); public unsafe ref ushort Y => ref Unsafe.AsRef<ushort>(&NativePtr->Y); public unsafe ref uint GlyphID => ref Unsafe.AsRef<uint>(&NativePtr->GlyphID); public unsafe ref float GlyphAdvanceX => ref Unsafe.AsRef<float>(&NativePtr->GlyphAdvanceX); public unsafe ref Vector2 GlyphOffset => ref Unsafe.AsRef<Vector2>(&NativePtr->GlyphOffset); public unsafe ImFontPtr Font => new ImFontPtr(NativePtr->Font); public unsafe ImFontAtlasCustomRectPtr(ImFontAtlasCustomRect* nativePtr) { NativePtr = nativePtr; } public unsafe ImFontAtlasCustomRectPtr(IntPtr nativePtr) { NativePtr = (ImFontAtlasCustomRect*)(void*)nativePtr; } public unsafe static implicit operator ImFontAtlasCustomRectPtr(ImFontAtlasCustomRect* nativePtr) { return new ImFontAtlasCustomRectPtr(nativePtr); } public unsafe static implicit operator ImFontAtlasCustomRect*(ImFontAtlasCustomRectPtr wrappedPtr) { return wrappedPtr.NativePtr; } public static implicit operator ImFontAtlasCustomRectPtr(IntPtr nativePtr) { return new ImFontAtlasCustomRectPtr(nativePtr); } public unsafe void Destroy() { ImGuiNative.ImFontAtlasCustomRect_destroy(NativePtr); } public unsafe bool IsPacked() { return ImGuiNative.ImFontAtlasCustomRect_IsPacked(NativePtr) != 0; } } [Flags] public enum ImFontAtlasFlags { None = 0, NoPowerOfTwoHeight = 1, NoMouseCursors = 2, NoBakedLines = 4 } public struct ImFontConfig { public unsafe void* FontData; public int FontDataSize; public byte FontDataOwnedByAtlas; public int FontNo; public float SizePixels; public int OversampleH; public int OversampleV; public byte PixelSnapH; public Vector2 GlyphExtraSpacing; public Vector2 GlyphOffset; public unsafe ushort* GlyphRanges; public float GlyphMinAdvanceX; public float GlyphMaxAdvanceX; public byte MergeMode; public uint FontBuilderFlags; public float RasterizerMultiply; public float RasterizerDensity; public ushort EllipsisChar; public unsafe fixed byte Name[40]; public unsafe ImFont* DstFont; } public struct ImFontConfigPtr { public unsafe ImFontConfig* NativePtr { get; } public unsafe IntPtr FontData { get { return (IntPtr)NativePtr->FontData; } set { NativePtr->FontData = (void*)value; } } public unsafe ref int FontDataSize => ref Unsafe.AsRef<int>(&NativePtr->FontDataSize); public unsafe ref bool FontDataOwnedByAtlas => ref Unsafe.AsRef<bool>(&NativePtr->FontDataOwnedByAtlas); public unsafe ref int FontNo => ref Unsafe.AsRef<int>(&NativePtr->FontNo); public unsafe ref float SizePixels => ref Unsafe.AsRef<float>(&NativePtr->SizePixels); public unsafe ref int OversampleH => ref Unsafe.AsRef<int>(&NativePtr->OversampleH); public unsafe ref int OversampleV => ref Unsafe.AsRef<int>(&NativePtr->OversampleV); public unsafe ref bool PixelSnapH => ref Unsafe.AsRef<bool>(&NativePtr->PixelSnapH); public unsafe ref Vector2 GlyphExtraSpacing => ref Unsafe.AsRef<Vector2>(&NativePtr->GlyphExtraSpacing); public unsafe ref Vector2 GlyphOffset => ref Unsafe.AsRef<Vector2>(&NativePtr->GlyphOffset); public unsafe IntPtr GlyphRanges { get { return (IntPtr)NativePtr->GlyphRanges; } set { NativePtr->GlyphRanges = (ushort*)(void*)value; } } public unsafe ref float GlyphMinAdvanceX => ref Unsafe.AsRef<float>(&NativePtr->GlyphMinAdvanceX); public unsafe ref float GlyphMaxAdvanceX => ref Unsafe.AsRef<float>(&NativePtr->GlyphMaxAdvanceX); public unsafe ref bool MergeMode => ref Unsafe.AsRef<bool>(&NativePtr->MergeMode); public unsafe ref uint FontBuilderFlags => ref Unsafe.AsRef<uint>(&NativePtr->FontBuilderFlags); public unsafe ref float RasterizerMultiply => ref Unsafe.AsRef<float>(&NativePtr->RasterizerMultiply); public unsafe ref float RasterizerDensity => ref Unsafe.AsRef<float>(&NativePtr->RasterizerDensity); public unsafe ref ushort EllipsisChar => ref Unsafe.AsRef<ushort>(&NativePtr->EllipsisChar); public unsafe RangeAccessor<byte> Name => new RangeAccessor<byte>(NativePtr->Name, 40); public unsafe ImFontPtr DstFont => new ImFontPtr(NativePtr->DstFont); public unsafe ImFontConfigPtr(ImFontConfig* nativePtr) { NativePtr = nativePtr; } public unsafe ImFontConfigPtr(IntPtr nativePtr) { NativePtr = (ImFontConfig*)(void*)nativePtr; } public unsafe static implicit operator ImFontConfigPtr(ImFontConfig* nativePtr) { return new ImFontConfigPtr(nativePtr); } public unsafe static implicit operator ImFontConfig*(ImFontConfigPtr wrappedPtr) { return wrappedPtr.NativePtr; } public static implicit operator ImFontConfigPtr(IntPtr nativePtr) { return new ImFontConfigPtr(nativePtr); } public unsafe void Destroy() { ImGuiNative.ImFontConfig_destroy(NativePtr); } } public struct ImFontGlyph { public uint Colored; public uint Visible; public uint Codepoint; public float AdvanceX; public float X0; public float Y0; public float X1; public float Y1; public float U0; public float V0; public float U1; public float V1; } public struct ImFontGlyphPtr { public unsafe ImFontGlyph* NativePtr { get; } public unsafe ref uint Colored => ref Unsafe.AsRef<uint>(&NativePtr->Colored); public unsafe ref uint Visible => ref Unsafe.AsRef<uint>(&NativePtr->Visible); public unsafe ref uint Codepoint => ref Unsafe.AsRef<uint>(&NativePtr->Codepoint); public unsafe ref float AdvanceX => ref Unsafe.AsRef<float>(&NativePtr->AdvanceX); public unsafe ref float X0 => ref Unsafe.AsRef<float>(&NativePtr->X0); public unsafe ref float Y0 => ref Unsafe.AsRef<float>(&NativePtr->Y0); public unsafe ref float X1 => ref Unsafe.AsRef<float>(&NativePtr->X1); public unsafe ref float Y1 => ref Unsafe.AsRef<float>(&NativePtr->Y1); public unsafe ref float U0 => ref Unsafe.AsRef<float>(&NativePtr->U0); public unsafe ref float V0 => ref Unsafe.AsRef<float>(&NativePtr->V0); public unsafe ref float U1 => ref Unsafe.AsRef<float>(&NativePtr->U1); public unsafe ref float V1 => ref Unsafe.AsRef<float>(&NativePtr->V1); public unsafe ImFontGlyphPtr(ImFontGlyph* nativePtr) { NativePtr = nativePtr; } public unsafe ImFontGlyphPtr(IntPtr nativePtr) { NativePtr = (ImFontGlyph*)(void*)nativePtr; } public unsafe static implicit operator ImFontGlyphPtr(ImFontGlyph* nativePtr) { return new ImFontGlyphPtr(nativePtr); } public unsafe static implicit operator ImFontGlyph*(ImFontGlyphPtr wrappedPtr) { return wrappedPtr.NativePtr; } public static implicit operator ImFontGlyphPtr(IntPtr nativePtr) { return new ImFontGlyphPtr(nativePtr); } } public struct ImFontGlyphRangesBuilder { public ImVector UsedChars; } public struct ImFontGlyphRangesBuilderPtr { public unsafe ImFontGlyphRangesBuilder* NativePtr { get; } public unsafe ImVector<uint> UsedChars => new ImVector<uint>(NativePtr->UsedChars); public unsafe ImFontGlyphRangesBuilderPtr(ImFontGlyphRangesBuilder* nativePtr) { NativePtr = nativePtr; } public unsafe ImFontGlyphRangesBuilderPtr(IntPtr nativePtr) { NativePtr = (ImFontGlyphRangesBuilder*)(void*)nativePtr; } public unsafe static implicit operator ImFontGlyphRangesBuilderPtr(ImFontGlyphRangesBuilder* nativePtr) { return new ImFontGlyphRangesBuilderPtr(nativePtr); } public unsafe static implicit operator ImFontGlyphRangesBuilder*(ImFontGlyphRangesBuilderPtr wrappedPtr) { return wrappedPtr.NativePtr; } public static implicit operator ImFontGlyphRangesBuilderPtr(IntPtr nativePtr) { return new ImFontGlyphRangesBuilderPtr(nativePtr); } public unsafe void AddChar(ushort c) { ImGuiNative.ImFontGlyphRangesBuilder_AddChar(NativePtr, c); } public unsafe void AddRanges(IntPtr ranges) { ushort* ranges2 = (ushort*)ranges.ToPointer(); ImGuiNative.ImFontGlyphRangesBuilder_AddRanges(NativePtr, ranges2); } public unsafe void AddText(string text) { int num = 0; byte* ptr; if (text != null) { num = Encoding.UTF8.GetByteCount(text); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(text, ptr, num); ptr[utf] = 0; } else { ptr = null; } ImGuiNative.ImFontGlyphRangesBuilder_AddText(NativePtr, ptr, ptr + num); if (num > 2048) { Util.Free(ptr); } } public unsafe void BuildRanges(out ImVector out_ranges) { fixed (ImVector* out_ranges2 = &out_ranges) { ImGuiNative.ImFontGlyphRangesBuilder_BuildRanges(NativePtr, out_ranges2); } } public unsafe void Clear() { ImGuiNative.ImFontGlyphRangesBuilder_Clear(NativePtr); } public unsafe void Destroy() { ImGuiNative.ImFontGlyphRangesBuilder_destroy(NativePtr); } public unsafe bool GetBit(uint n) { return ImGuiNative.ImFontGlyphRangesBuilder_GetBit(NativePtr, n) != 0; } public unsafe void SetBit(uint n) { ImGuiNative.ImFontGlyphRangesBuilder_SetBit(NativePtr, n); } } public static class ImGui { public unsafe static ImGuiPayloadPtr AcceptDragDropPayload(string type) { int num = 0; byte* ptr; if (type != null) { num = Encoding.UTF8.GetByteCount(type); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(type, ptr, num); ptr[utf] = 0; } else { ptr = null; } ImGuiDragDropFlags flags = ImGuiDragDropFlags.None; ImGuiPayload* nativePtr = ImGuiNative.igAcceptDragDropPayload(ptr, flags); if (num > 2048) { Util.Free(ptr); } return new ImGuiPayloadPtr(nativePtr); } public unsafe static ImGuiPayloadPtr AcceptDragDropPayload(string type, ImGuiDragDropFlags flags) { int num = 0; byte* ptr; if (type != null) { num = Encoding.UTF8.GetByteCount(type); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(type, ptr, num); ptr[utf] = 0; } else { ptr = null; } ImGuiPayload* nativePtr = ImGuiNative.igAcceptDragDropPayload(ptr, flags); if (num > 2048) { Util.Free(ptr); } return new ImGuiPayloadPtr(nativePtr); } public static void AlignTextToFramePadding() { ImGuiNative.igAlignTextToFramePadding(); } public unsafe static bool ArrowButton(string str_id, ImGuiDir dir) { int num = 0; byte* ptr; if (str_id != null) { num = Encoding.UTF8.GetByteCount(str_id); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(str_id, ptr, num); ptr[utf] = 0; } else { ptr = null; } byte num2 = ImGuiNative.igArrowButton(ptr, dir); if (num > 2048) { Util.Free(ptr); } return num2 != 0; } public unsafe static bool Begin(string name) { int num = 0; byte* ptr; if (name != null) { num = Encoding.UTF8.GetByteCount(name); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(name, ptr, num); ptr[utf] = 0; } else { ptr = null; } byte* p_open = null; ImGuiWindowFlags flags = ImGuiWindowFlags.None; byte num2 = ImGuiNative.igBegin(ptr, p_open, flags); if (num > 2048) { Util.Free(ptr); } return num2 != 0; } public unsafe static bool Begin(string name, ref bool p_open) { int num = 0; byte* ptr; if (name != null) { num = Encoding.UTF8.GetByteCount(name); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(name, ptr, num); ptr[utf] = 0; } else { ptr = null; } byte b = (p_open ? ((byte)1) : ((byte)0)); byte* p_open2 = &b; ImGuiWindowFlags flags = ImGuiWindowFlags.None; byte num2 = ImGuiNative.igBegin(ptr, p_open2, flags); if (num > 2048) { Util.Free(ptr); } p_open = b != 0; return num2 != 0; } public unsafe static bool Begin(string name, ref bool p_open, ImGuiWindowFlags flags) { int num = 0; byte* ptr; if (name != null) { num = Encoding.UTF8.GetByteCount(name); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(name, ptr, num); ptr[utf] = 0; } else { ptr = null; } byte b = (p_open ? ((byte)1) : ((byte)0)); byte* p_open2 = &b; byte num2 = ImGuiNative.igBegin(ptr, p_open2, flags); if (num > 2048) { Util.Free(ptr); } p_open = b != 0; return num2 != 0; } public unsafe static bool BeginChild(string str_id) { int num = 0; byte* ptr; if (str_id != null) { num = Encoding.UTF8.GetByteCount(str_id); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(str_id, ptr, num); ptr[utf] = 0; } else { ptr = null; } Vector2 size = default(Vector2); ImGuiChildFlags child_flags = ImGuiChildFlags.None; ImGuiWindowFlags window_flags = ImGuiWindowFlags.None; byte num2 = ImGuiNative.igBeginChild_Str(ptr, size, child_flags, window_flags); if (num > 2048) { Util.Free(ptr); } return num2 != 0; } public unsafe static bool BeginChild(string str_id, Vector2 size) { int num = 0; byte* ptr; if (str_id != null) { num = Encoding.UTF8.GetByteCount(str_id); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(str_id, ptr, num); ptr[utf] = 0; } else { ptr = null; } ImGuiChildFlags child_flags = ImGuiChildFlags.None; ImGuiWindowFlags window_flags = ImGuiWindowFlags.None; byte num2 = ImGuiNative.igBeginChild_Str(ptr, size, child_flags, window_flags); if (num > 2048) { Util.Free(ptr); } return num2 != 0; } public unsafe static bool BeginChild(string str_id, Vector2 size, ImGuiChildFlags child_flags) { int num = 0; byte* ptr; if (str_id != null) { num = Encoding.UTF8.GetByteCount(str_id); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(str_id, ptr, num); ptr[utf] = 0; } else { ptr = null; } ImGuiWindowFlags window_flags = ImGuiWindowFlags.None; byte num2 = ImGuiNative.igBeginChild_Str(ptr, size, child_flags, window_flags); if (num > 2048) { Util.Free(ptr); } return num2 != 0; } public unsafe static bool BeginChild(string str_id, Vector2 size, ImGuiChildFlags child_flags, ImGuiWindowFlags window_flags) { int num = 0; byte* ptr; if (str_id != null) { num = Encoding.UTF8.GetByteCount(str_id); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(str_id, ptr, num); ptr[utf] = 0; } else { ptr = null; } byte num2 = ImGuiNative.igBeginChild_Str(ptr, size, child_flags, window_flags); if (num > 2048) { Util.Free(ptr); } return num2 != 0; } public static bool BeginChild(uint id) { Vector2 size = default(Vector2); ImGuiChildFlags child_flags = ImGuiChildFlags.None; ImGuiWindowFlags window_flags = ImGuiWindowFlags.None; return ImGuiNative.igBeginChild_ID(id, size, child_flags, window_flags) != 0; } public static bool BeginChild(uint id, Vector2 size) { ImGuiChildFlags child_flags = ImGuiChildFlags.None; ImGuiWindowFlags window_flags = ImGuiWindowFlags.None; return ImGuiNative.igBeginChild_ID(id, size, child_flags, window_flags) != 0; } public static bool BeginChild(uint id, Vector2 size, ImGuiChildFlags child_flags) { ImGuiWindowFlags window_flags = ImGuiWindowFlags.None; return ImGuiNative.igBeginChild_ID(id, size, child_flags, window_flags) != 0; } public static bool BeginChild(uint id, Vector2 size, ImGuiChildFlags child_flags, ImGuiWindowFlags window_flags) { return ImGuiNative.igBeginChild_ID(id, size, child_flags, window_flags) != 0; } public unsafe static bool BeginCombo(string label, string preview_value) { int num = 0; byte* ptr; if (label != null) { num = Encoding.UTF8.GetByteCount(label); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(label, ptr, num); ptr[utf] = 0; } else { ptr = null; } int num2 = 0; byte* ptr2; if (preview_value != null) { num2 = Encoding.UTF8.GetByteCount(preview_value); ptr2 = ((num2 <= 2048) ? stackalloc byte[(int)(uint)(num2 + 1)] : Util.Allocate(num2 + 1)); int utf2 = Util.GetUtf8(preview_value, ptr2, num2); ptr2[utf2] = 0; } else { ptr2 = null; } ImGuiComboFlags flags = ImGuiComboFlags.None; byte num3 = ImGuiNative.igBeginCombo(ptr, ptr2, flags); if (num > 2048) { Util.Free(ptr); } if (num2 > 2048) { Util.Free(ptr2); } return num3 != 0; } public unsafe static bool BeginCombo(string label, string preview_value, ImGuiComboFlags flags) { int num = 0; byte* ptr; if (label != null) { num = Encoding.UTF8.GetByteCount(label); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(label, ptr, num); ptr[utf] = 0; } else { ptr = null; } int num2 = 0; byte* ptr2; if (preview_value != null) { num2 = Encoding.UTF8.GetByteCount(preview_value); ptr2 = ((num2 <= 2048) ? stackalloc byte[(int)(uint)(num2 + 1)] : Util.Allocate(num2 + 1)); int utf2 = Util.GetUtf8(preview_value, ptr2, num2); ptr2[utf2] = 0; } else { ptr2 = null; } byte num3 = ImGuiNative.igBeginCombo(ptr, ptr2, flags); if (num > 2048) { Util.Free(ptr); } if (num2 > 2048) { Util.Free(ptr2); } return num3 != 0; } public static void BeginDisabled() { ImGuiNative.igBeginDisabled(1); } public static void BeginDisabled(bool disabled) { ImGuiNative.igBeginDisabled(disabled ? ((byte)1) : ((byte)0)); } public static bool BeginDragDropSource() { return ImGuiNative.igBeginDragDropSource(ImGuiDragDropFlags.None) != 0; } public static bool BeginDragDropSource(ImGuiDragDropFlags flags) { return ImGuiNative.igBeginDragDropSource(flags) != 0; } public static bool BeginDragDropTarget() { return ImGuiNative.igBeginDragDropTarget() != 0; } public static void BeginGroup() { ImGuiNative.igBeginGroup(); } public static bool BeginItemTooltip() { return ImGuiNative.igBeginItemTooltip() != 0; } public unsafe static bool BeginListBox(string label) { int num = 0; byte* ptr; if (label != null) { num = Encoding.UTF8.GetByteCount(label); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(label, ptr, num); ptr[utf] = 0; } else { ptr = null; } byte num2 = ImGuiNative.igBeginListBox(ptr, default(Vector2)); if (num > 2048) { Util.Free(ptr); } return num2 != 0; } public unsafe static bool BeginListBox(string label, Vector2 size) { int num = 0; byte* ptr; if (label != null) { num = Encoding.UTF8.GetByteCount(label); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(label, ptr, num); ptr[utf] = 0; } else { ptr = null; } byte num2 = ImGuiNative.igBeginListBox(ptr, size); if (num > 2048) { Util.Free(ptr); } return num2 != 0; } public static bool BeginMainMenuBar() { return ImGuiNative.igBeginMainMenuBar() != 0; } public unsafe static bool BeginMenu(string label) { int num = 0; byte* ptr; if (label != null) { num = Encoding.UTF8.GetByteCount(label); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(label, ptr, num); ptr[utf] = 0; } else { ptr = null; } byte enabled = 1; byte num2 = ImGuiNative.igBeginMenu(ptr, enabled); if (num > 2048) { Util.Free(ptr); } return num2 != 0; } public unsafe static bool BeginMenu(string label, bool enabled) { int num = 0; byte* ptr; if (label != null) { num = Encoding.UTF8.GetByteCount(label); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(label, ptr, num); ptr[utf] = 0; } else { ptr = null; } byte enabled2 = (enabled ? ((byte)1) : ((byte)0)); byte num2 = ImGuiNative.igBeginMenu(ptr, enabled2); if (num > 2048) { Util.Free(ptr); } return num2 != 0; } public static bool BeginMenuBar() { return ImGuiNative.igBeginMenuBar() != 0; } public unsafe static bool BeginPopup(string str_id) { int num = 0; byte* ptr; if (str_id != null) { num = Encoding.UTF8.GetByteCount(str_id); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(str_id, ptr, num); ptr[utf] = 0; } else { ptr = null; } ImGuiWindowFlags flags = ImGuiWindowFlags.None; byte num2 = ImGuiNative.igBeginPopup(ptr, flags); if (num > 2048) { Util.Free(ptr); } return num2 != 0; } public unsafe static bool BeginPopup(string str_id, ImGuiWindowFlags flags) { int num = 0; byte* ptr; if (str_id != null) { num = Encoding.UTF8.GetByteCount(str_id); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(str_id, ptr, num); ptr[utf] = 0; } else { ptr = null; } byte num2 = ImGuiNative.igBeginPopup(ptr, flags); if (num > 2048) { Util.Free(ptr); } return num2 != 0; } public unsafe static bool BeginPopupContextItem() { byte* str_id = null; ImGuiPopupFlags popup_flags = ImGuiPopupFlags.MouseButtonRight; return ImGuiNative.igBeginPopupContextItem(str_id, popup_flags) != 0; } public unsafe static bool BeginPopupContextItem(string str_id) { int num = 0; byte* ptr; if (str_id != null) { num = Encoding.UTF8.GetByteCount(str_id); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(str_id, ptr, num); ptr[utf] = 0; } else { ptr = null; } ImGuiPopupFlags popup_flags = ImGuiPopupFlags.MouseButtonRight; byte num2 = ImGuiNative.igBeginPopupContextItem(ptr, popup_flags); if (num > 2048) { Util.Free(ptr); } return num2 != 0; } public unsafe static bool BeginPopupContextItem(string str_id, ImGuiPopupFlags popup_flags) { int num = 0; byte* ptr; if (str_id != null) { num = Encoding.UTF8.GetByteCount(str_id); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(str_id, ptr, num); ptr[utf] = 0; } else { ptr = null; } byte num2 = ImGuiNative.igBeginPopupContextItem(ptr, popup_flags); if (num > 2048) { Util.Free(ptr); } return num2 != 0; } public unsafe static bool BeginPopupContextVoid() { byte* str_id = null; ImGuiPopupFlags popup_flags = ImGuiPopupFlags.MouseButtonRight; return ImGuiNative.igBeginPopupContextVoid(str_id, popup_flags) != 0; } public unsafe static bool BeginPopupContextVoid(string str_id) { int num = 0; byte* ptr; if (str_id != null) { num = Encoding.UTF8.GetByteCount(str_id); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(str_id, ptr, num); ptr[utf] = 0; } else { ptr = null; } ImGuiPopupFlags popup_flags = ImGuiPopupFlags.MouseButtonRight; byte num2 = ImGuiNative.igBeginPopupContextVoid(ptr, popup_flags); if (num > 2048) { Util.Free(ptr); } return num2 != 0; } public unsafe static bool BeginPopupContextVoid(string str_id, ImGuiPopupFlags popup_flags) { int num = 0; byte* ptr; if (str_id != null) { num = Encoding.UTF8.GetByteCount(str_id); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(str_id, ptr, num); ptr[utf] = 0; } else { ptr = null; } byte num2 = ImGuiNative.igBeginPopupContextVoid(ptr, popup_flags); if (num > 2048) { Util.Free(ptr); } return num2 != 0; } public unsafe static bool BeginPopupContextWindow() { byte* str_id = null; ImGuiPopupFlags popup_flags = ImGuiPopupFlags.MouseButtonRight; return ImGuiNative.igBeginPopupContextWindow(str_id, popup_flags) != 0; } public unsafe static bool BeginPopupContextWindow(string str_id) { int num = 0; byte* ptr; if (str_id != null) { num = Encoding.UTF8.GetByteCount(str_id); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(str_id, ptr, num); ptr[utf] = 0; } else { ptr = null; } ImGuiPopupFlags popup_flags = ImGuiPopupFlags.MouseButtonRight; byte num2 = ImGuiNative.igBeginPopupContextWindow(ptr, popup_flags); if (num > 2048) { Util.Free(ptr); } return num2 != 0; } public unsafe static bool BeginPopupContextWindow(string str_id, ImGuiPopupFlags popup_flags) { int num = 0; byte* ptr; if (str_id != null) { num = Encoding.UTF8.GetByteCount(str_id); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(str_id, ptr, num); ptr[utf] = 0; } else { ptr = null; } byte num2 = ImGuiNative.igBeginPopupContextWindow(ptr, popup_flags); if (num > 2048) { Util.Free(ptr); } return num2 != 0; } public unsafe static bool BeginPopupModal(string name) { int num = 0; byte* ptr; if (name != null) { num = Encoding.UTF8.GetByteCount(name); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(name, ptr, num); ptr[utf] = 0; } else { ptr = null; } byte* p_open = null; ImGuiWindowFlags flags = ImGuiWindowFlags.None; byte num2 = ImGuiNative.igBeginPopupModal(ptr, p_open, flags); if (num > 2048) { Util.Free(ptr); } return num2 != 0; } public unsafe static bool BeginPopupModal(string name, ref bool p_open) { int num = 0; byte* ptr; if (name != null) { num = Encoding.UTF8.GetByteCount(name); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(name, ptr, num); ptr[utf] = 0; } else { ptr = null; } byte b = (p_open ? ((byte)1) : ((byte)0)); byte* p_open2 = &b; ImGuiWindowFlags flags = ImGuiWindowFlags.None; byte num2 = ImGuiNative.igBeginPopupModal(ptr, p_open2, flags); if (num > 2048) { Util.Free(ptr); } p_open = b != 0; return num2 != 0; } public unsafe static bool BeginPopupModal(string name, ref bool p_open, ImGuiWindowFlags flags) { int num = 0; byte* ptr; if (name != null) { num = Encoding.UTF8.GetByteCount(name); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(name, ptr, num); ptr[utf] = 0; } else { ptr = null; } byte b = (p_open ? ((byte)1) : ((byte)0)); byte* p_open2 = &b; byte num2 = ImGuiNative.igBeginPopupModal(ptr, p_open2, flags); if (num > 2048) { Util.Free(ptr); } p_open = b != 0; return num2 != 0; } public unsafe static bool BeginTabBar(string str_id) { int num = 0; byte* ptr; if (str_id != null) { num = Encoding.UTF8.GetByteCount(str_id); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(str_id, ptr, num); ptr[utf] = 0; } else { ptr = null; } ImGuiTabBarFlags flags = ImGuiTabBarFlags.None; byte num2 = ImGuiNative.igBeginTabBar(ptr, flags); if (num > 2048) { Util.Free(ptr); } return num2 != 0; } public unsafe static bool BeginTabBar(string str_id, ImGuiTabBarFlags flags) { int num = 0; byte* ptr; if (str_id != null) { num = Encoding.UTF8.GetByteCount(str_id); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(str_id, ptr, num); ptr[utf] = 0; } else { ptr = null; } byte num2 = ImGuiNative.igBeginTabBar(ptr, flags); if (num > 2048) { Util.Free(ptr); } return num2 != 0; } public unsafe static bool BeginTabItem(string label) { int num = 0; byte* ptr; if (label != null) { num = Encoding.UTF8.GetByteCount(label); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(label, ptr, num); ptr[utf] = 0; } else { ptr = null; } byte* p_open = null; ImGuiTabItemFlags flags = ImGuiTabItemFlags.None; byte num2 = ImGuiNative.igBeginTabItem(ptr, p_open, flags); if (num > 2048) { Util.Free(ptr); } return num2 != 0; } public unsafe static bool BeginTabItem(string label, ref bool p_open) { int num = 0; byte* ptr; if (label != null) { num = Encoding.UTF8.GetByteCount(label); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(label, ptr, num); ptr[utf] = 0; } else { ptr = null; } byte b = (p_open ? ((byte)1) : ((byte)0)); byte* p_open2 = &b; ImGuiTabItemFlags flags = ImGuiTabItemFlags.None; byte num2 = ImGuiNative.igBeginTabItem(ptr, p_open2, flags); if (num > 2048) { Util.Free(ptr); } p_open = b != 0; return num2 != 0; } public unsafe static bool BeginTabItem(string label, ref bool p_open, ImGuiTabItemFlags flags) { int num = 0; byte* ptr; if (label != null) { num = Encoding.UTF8.GetByteCount(label); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(label, ptr, num); ptr[utf] = 0; } else { ptr = null; } byte b = (p_open ? ((byte)1) : ((byte)0)); byte* p_open2 = &b; byte num2 = ImGuiNative.igBeginTabItem(ptr, p_open2, flags); if (num > 2048) { Util.Free(ptr); } p_open = b != 0; return num2 != 0; } public unsafe static bool BeginTable(string str_id, int column) { int num = 0; byte* ptr; if (str_id != null) { num = Encoding.UTF8.GetByteCount(str_id); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(str_id, ptr, num); ptr[utf] = 0; } else { ptr = null; } ImGuiTableFlags flags = ImGuiTableFlags.None; Vector2 outer_size = default(Vector2); float inner_width = 0f; byte num2 = ImGuiNative.igBeginTable(ptr, column, flags, outer_size, inner_width); if (num > 2048) { Util.Free(ptr); } return num2 != 0; } public unsafe static bool BeginTable(string str_id, int column, ImGuiTableFlags flags) { int num = 0; byte* ptr; if (str_id != null) { num = Encoding.UTF8.GetByteCount(str_id); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(str_id, ptr, num); ptr[utf] = 0; } else { ptr = null; } Vector2 outer_size = default(Vector2); float inner_width = 0f; byte num2 = ImGuiNative.igBeginTable(ptr, column, flags, outer_size, inner_width); if (num > 2048) { Util.Free(ptr); } return num2 != 0; } public unsafe static bool BeginTable(string str_id, int column, ImGuiTableFlags flags, Vector2 outer_size) { int num = 0; byte* ptr; if (str_id != null) { num = Encoding.UTF8.GetByteCount(str_id); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(str_id, ptr, num); ptr[utf] = 0; } else { ptr = null; } float inner_width = 0f; byte num2 = ImGuiNative.igBeginTable(ptr, column, flags, outer_size, inner_width); if (num > 2048) { Util.Free(ptr); } return num2 != 0; } public unsafe static bool BeginTable(string str_id, int column, ImGuiTableFlags flags, Vector2 outer_size, float inner_width) { int num = 0; byte* ptr; if (str_id != null) { num = Encoding.UTF8.GetByteCount(str_id); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(str_id, ptr, num); ptr[utf] = 0; } else { ptr = null; } byte num2 = ImGuiNative.igBeginTable(ptr, column, flags, outer_size, inner_width); if (num > 2048) { Util.Free(ptr); } return num2 != 0; } public static bool BeginTooltip() { return ImGuiNative.igBeginTooltip() != 0; } public static void Bullet() { ImGuiNative.igBullet(); } public unsafe static void BulletText(string fmt) { int num = 0; byte* ptr; if (fmt != null) { num = Encoding.UTF8.GetByteCount(fmt); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(fmt, ptr, num); ptr[utf] = 0; } else { ptr = null; } ImGuiNative.igBulletText(ptr); if (num > 2048) { Util.Free(ptr); } } public unsafe static bool Button(string label) { int num = 0; byte* ptr; if (label != null) { num = Encoding.UTF8.GetByteCount(label); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(label, ptr, num); ptr[utf] = 0; } else { ptr = null; } byte num2 = ImGuiNative.igButton(ptr, default(Vector2)); if (num > 2048) { Util.Free(ptr); } return num2 != 0; } public unsafe static bool Button(string label, Vector2 size) { int num = 0; byte* ptr; if (label != null) { num = Encoding.UTF8.GetByteCount(label); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(label, ptr, num); ptr[utf] = 0; } else { ptr = null; } byte num2 = ImGuiNative.igButton(ptr, size); if (num > 2048) { Util.Free(ptr); } return num2 != 0; } public static float CalcItemWidth() { return ImGuiNative.igCalcItemWidth(); } public unsafe static Vector2 CalcTextSize(string text) { int num = 0; byte* ptr; if (text != null) { num = Encoding.UTF8.GetByteCount(text); ptr = ((num <= 2048) ? stackalloc byte[(int)(uint)(num + 1)] : Util.Allocate(num + 1)); int utf = Util.GetUtf8(text, ptr, num); ptr[utf] = 0; } else { ptr = null; } byte hide_text_after_double_hash = 0; float wrap_width = -1f; Vector2 result = default(Vector2); ImGuiNative.igCalcTextSize(&result, ptr, ptr + num, hide_text_after_double_hash, wrap_wid
plugins/OverlayDearImGui.Shared/SharpDX.dll
Decompiled a month ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Globalization; using System.IO; using System.Linq.Expressions; using System.Reflection; using System.Resources; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.InteropServices.ComTypes; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text; using System.Threading; using SharpDX; using SharpDX.Collections; using SharpDX.Diagnostics; using SharpDX.Direct3D; using SharpDX.Mathematics.Interop; [assembly: InternalsVisibleTo("SharpDX.DirectSound")] [assembly: InternalsVisibleTo("SharpDX.RawInput")] [assembly: InternalsVisibleTo("SharpDX.DirectInput")] [assembly: InternalsVisibleTo("SharpDX.Direct2D1")] [assembly: InternalsVisibleTo("SharpDX.Direct3D11.Effects")] [assembly: InternalsVisibleTo("SharpDX.Direct3D12")] [assembly: InternalsVisibleTo("SharpDX.XAPO")] [assembly: InternalsVisibleTo("SharpDX.Direct3D11")] [assembly: InternalsVisibleTo("SharpDX.Direct3D9")] [assembly: InternalsVisibleTo("SharpDX.Desktop")] [assembly: InternalsVisibleTo("SharpDX.D3DCompiler")] [assembly: InternalsVisibleTo("SharpDX.DXGI")] [assembly: InternalsVisibleTo("SharpDX.Animation")] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: InternalsVisibleTo("SharpDX.Direct3D10")] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: InternalsVisibleTo("SharpDX.XAudio2")] [assembly: InternalsVisibleTo("SharpDX.WIC")] [assembly: AssemblyMetadata("RepositoryUrl", "https://github.com/xiaoxiao921/SharpDX")] [assembly: AssemblyTitle("SharpDX")] [assembly: AssemblyProduct("SharpDX")] [assembly: AssemblyDescription("Core assembly for all SharpDX assemblies.")] [assembly: AssemblyCopyright("Copyright (c) 2010-2016 Alexandre Mutel")] [assembly: AssemblyConfiguration("Release")] [assembly: InternalsVisibleTo("SharpDX.XACT3")] [assembly: AssemblyCompany("Alexandre Mutel")] [assembly: AssemblyInformationalVersion("4.2.1-beta0+7abb72df54")] [assembly: AssemblyFileVersion("4.2.1.34")] [assembly: ComVisible(false)] [assembly: InternalsVisibleTo("SharpDX.DirectManipulation")] [assembly: InternalsVisibleTo("SharpDX.DirectComposition")] [assembly: InternalsVisibleTo("SharpDX.MediaFoundation")] [assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")] [assembly: NeutralResourcesLanguage("en-US")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("4.2.0.0")] [module: UnverifiableCode] internal class <Module> { static <Module>() { Interop.ModuleInit(); ModuleInit.Setup(); } } internal sealed class ThisAssembly { internal const string AssemblyVersion = "4.2.0.0"; internal const string AssemblyFileVersion = "4.2.1.34"; internal const string AssemblyInformationalVersion = "4.2.1-beta0+7abb72df54"; internal const string AssemblyName = "SharpDX"; internal const string AssemblyTitle = "SharpDX"; internal const string AssemblyConfiguration = "Release"; internal const string GitCommitId = "7abb72df544eaede656c546ee71a8ad1be9dd19b"; internal const string RootNamespace = "SharpDX"; private ThisAssembly() { } } namespace SharpDX { [CompilerGenerated] internal class AssemblyDoc { } public abstract class CallbackBase : DisposeBase, ICallbackable, IDisposable { private int refCount = 1; IDisposable ICallbackable.Shadow { get; set; } protected override void Dispose(bool disposing) { if (disposing) { Release(); } } public int AddReference() { int num = refCount; while (true) { if (num == 0) { throw new ObjectDisposedException("Cannot add a reference to a nonreferenced item"); } int num2 = Interlocked.CompareExchange(ref refCount, num + 1, num); if (num2 == num) { break; } num = num2; } return num + 1; } public int Release() { int num = refCount; while (true) { int num2 = Interlocked.CompareExchange(ref refCount, num - 1, num); if (num2 == num) { break; } num = num2; } if (num == 1) { ((ICallbackable)this).Shadow.Dispose(); ((ICallbackable)this).Shadow = null; } return num - 1; } public Result QueryInterface(ref Guid guid, out IntPtr comObject) { ShadowContainer shadowContainer = (ShadowContainer)((ICallbackable)this).Shadow; comObject = shadowContainer.Find(guid); if (comObject == IntPtr.Zero) { return Result.NoInterface; } return Result.Ok; } } public class ComArray : DisposeBase, IEnumerable { protected ComObject[] values; private IntPtr nativeBuffer; public IntPtr NativePointer => nativeBuffer; public int Length { get { if (values != null) { return values.Length; } return 0; } } public ComArray(params ComObject[] array) { values = array; nativeBuffer = IntPtr.Zero; if (values != null) { int num = array.Length; values = new ComObject[num]; nativeBuffer = Utilities.AllocateMemory(num * Utilities.SizeOf<IntPtr>()); for (int i = 0; i < num; i++) { Set(i, array[i]); } } } public ComArray(int size) { values = new ComObject[size]; nativeBuffer = Utilities.AllocateMemory(size * Utilities.SizeOf<IntPtr>()); } public ComObject Get(int index) { return values[index]; } internal unsafe void SetFromNative(int index, ComObject value) { values[index] = value; value.NativePointer = *(IntPtr*)((byte*)(void*)nativeBuffer + (nint)index * (nint)sizeof(IntPtr)); } public unsafe void Set(int index, ComObject value) { values[index] = value; *(IntPtr*)((byte*)(void*)nativeBuffer + (nint)index * (nint)sizeof(IntPtr)) = value.NativePointer; } protected override void Dispose(bool disposing) { if (disposing) { values = null; } Utilities.FreeMemory(nativeBuffer); nativeBuffer = IntPtr.Zero; } public IEnumerator GetEnumerator() { return values.GetEnumerator(); } } public class ComArray<T> : ComArray, IEnumerable<T>, IEnumerable where T : ComObject { private struct ArrayEnumerator<T1> : IEnumerator<T1>, IEnumerator, IDisposable where T1 : ComObject { private readonly IEnumerator enumerator; public T1 Current => (T1)enumerator.Current; object IEnumerator.Current => Current; public ArrayEnumerator(IEnumerator enumerator) { this.enumerator = enumerator; } public void Dispose() { } public bool MoveNext() { return enumerator.MoveNext(); } public void Reset() { enumerator.Reset(); } } public T this[int i] { get { return (T)Get(i); } set { Set(i, value); } } public ComArray(params T[] array) : base(array) { } public ComArray(int size) : base(size) { } public new IEnumerator<T> GetEnumerator() { return new ArrayEnumerator<T>(values.GetEnumerator()); } } [Guid("00000000-0000-0000-C000-000000000046")] public class ComObject : CppObject, IUnknown, ICallbackable, IDisposable { public static Action<string> LogMemoryLeakWarning = delegate { }; public ComObject(object iunknowObject) { base.NativePointer = Marshal.GetIUnknownForObject(iunknowObject); } protected ComObject() { } public virtual void QueryInterface(Guid guid, out IntPtr outPtr) { ((IUnknown)this).QueryInterface(ref guid, out outPtr).CheckError(); } public virtual IntPtr QueryInterfaceOrNull(Guid guid) { IntPtr comObject = IntPtr.Zero; ((IUnknown)this).QueryInterface(ref guid, out comObject); return comObject; } public static bool EqualsComObject<T>(T left, T right) where T : ComObject { if (object.Equals(left, right)) { return true; } if (left == null || right == null) { return false; } return left.NativePointer == right.NativePointer; } public virtual T QueryInterface<T>() where T : ComObject { QueryInterface(Utilities.GetGuidFromType(typeof(T)), out var outPtr); return CppObject.FromPointer<T>(outPtr); } internal virtual T QueryInterfaceUnsafe<T>() { QueryInterface(Utilities.GetGuidFromType(typeof(T)), out var outPtr); return CppObject.FromPointerUnsafe<T>(outPtr); } public static T As<T>(object comObject) where T : ComObject { using ComObject comObject2 = new ComObject(Marshal.GetIUnknownForObject(comObject)); return comObject2.QueryInterface<T>(); } public static T As<T>(IntPtr iunknownPtr) where T : ComObject { using ComObject comObject = new ComObject(iunknownPtr); return comObject.QueryInterface<T>(); } internal static T AsUnsafe<T>(IntPtr iunknownPtr) { using ComObject comObject = new ComObject(iunknownPtr); return comObject.QueryInterfaceUnsafe<T>(); } public static T QueryInterface<T>(object comObject) where T : ComObject { using ComObject comObject2 = new ComObject(Marshal.GetIUnknownForObject(comObject)); return comObject2.QueryInterface<T>(); } public static T QueryInterfaceOrNull<T>(IntPtr comPointer) where T : ComObject { if (comPointer == IntPtr.Zero) { return null; } Guid iid = Utilities.GetGuidFromType(typeof(T)); if (!((Result)Marshal.QueryInterface(comPointer, ref iid, out var ppv)).Failure) { return CppObject.FromPointerUnsafe<T>(ppv); } return null; } public virtual T QueryInterfaceOrNull<T>() where T : ComObject { return CppObject.FromPointer<T>(QueryInterfaceOrNull(Utilities.GetGuidFromType(typeof(T)))); } protected void QueryInterfaceFrom<T>(T fromObject) where T : ComObject { fromObject.QueryInterface(Utilities.GetGuidFromType(GetType()), out var outPtr); base.NativePointer = outPtr; } Result IUnknown.QueryInterface(ref Guid guid, out IntPtr comObject) { return Marshal.QueryInterface(base.NativePointer, ref guid, out comObject); } int IUnknown.AddReference() { if (base.NativePointer == IntPtr.Zero) { throw new InvalidOperationException("COM Object pointer is null"); } return Marshal.AddRef(base.NativePointer); } int IUnknown.Release() { if (base.NativePointer == IntPtr.Zero) { throw new InvalidOperationException("COM Object pointer is null"); } return Marshal.Release(base.NativePointer); } protected unsafe override void Dispose(bool disposing) { if (base.NativePointer != IntPtr.Zero) { if (!disposing && Configuration.EnableTrackingReleaseOnFinalizer && !Configuration.EnableReleaseOnFinalizer) { ObjectReference arg = ObjectTracker.Find(this); LogMemoryLeakWarning?.Invoke($"Warning: Live ComObject [0x{base.NativePointer.ToInt64():X}], potential memory leak: {arg}"); } if (disposing || Configuration.EnableReleaseOnFinalizer) { ((IUnknown)this).Release(); } if (Configuration.EnableObjectTracking) { ObjectTracker.UnTrack(this); } _nativePointer = null; } base.Dispose(disposing); } protected override void NativePointerUpdating() { if (Configuration.EnableObjectTracking) { ObjectTracker.UnTrack(this); } } protected override void NativePointerUpdated(IntPtr oldNativePointer) { if (Configuration.EnableObjectTracking) { ObjectTracker.Track(this); } } public ComObject(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator ComObject(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new ComObject(nativePtr); } return null; } } internal abstract class ComObjectShadow : CppObjectShadow { internal class ComObjectVtbl : CppObjectVtbl { [UnmanagedFunctionPointer(CallingConvention.StdCall)] public delegate int QueryInterfaceDelegate(IntPtr thisObject, IntPtr guid, out IntPtr output); [UnmanagedFunctionPointer(CallingConvention.StdCall)] public delegate int AddRefDelegate(IntPtr thisObject); [UnmanagedFunctionPointer(CallingConvention.StdCall)] public delegate int ReleaseDelegate(IntPtr thisObject); public ComObjectVtbl(int numberOfCallbackMethods) : base(numberOfCallbackMethods + 3) { AddMethod(new QueryInterfaceDelegate(QueryInterfaceImpl)); AddMethod(new AddRefDelegate(AddRefImpl)); AddMethod(new ReleaseDelegate(ReleaseImpl)); } protected unsafe static int QueryInterfaceImpl(IntPtr thisObject, IntPtr guid, out IntPtr output) { ComObjectShadow comObjectShadow = CppObjectShadow.ToShadow<ComObjectShadow>(thisObject); if (comObjectShadow == null) { output = IntPtr.Zero; return Result.NoInterface.Code; } return comObjectShadow.QueryInterfaceImpl(ref *(Guid*)(void*)guid, out output); } protected static int AddRefImpl(IntPtr thisObject) { return CppObjectShadow.ToShadow<ComObjectShadow>(thisObject)?.AddRefImpl() ?? 0; } protected static int ReleaseImpl(IntPtr thisObject) { return CppObjectShadow.ToShadow<ComObjectShadow>(thisObject)?.ReleaseImpl() ?? 0; } } public static Guid IID_IUnknown = new Guid("00000000-0000-0000-C000-000000000046"); protected int QueryInterfaceImpl(ref Guid guid, out IntPtr output) { ComObjectShadow comObjectShadow = (ComObjectShadow)((ShadowContainer)base.Callback.Shadow).FindShadow(guid); if (comObjectShadow != null) { ((IUnknown)base.Callback).AddReference(); output = comObjectShadow.NativePointer; return Result.Ok.Code; } output = IntPtr.Zero; return Result.NoInterface.Code; } protected virtual int AddRefImpl() { return ((IUnknown)base.Callback).AddReference(); } protected virtual int ReleaseImpl() { return ((IUnknown)base.Callback).Release(); } } public static class Configuration { public static bool EnableObjectTracking = false; public static bool EnableReleaseOnFinalizer = false; public static bool EnableTrackingReleaseOnFinalizer = true; public static bool ThrowOnShaderCompileError = true; public static bool UseThreadStaticObjectTracking = false; } public class CppObject : DisposeBase, ICallbackable, IDisposable { protected internal unsafe void* _nativePointer; public object Tag { get; set; } public unsafe IntPtr NativePointer { get { return (IntPtr)_nativePointer; } set { void* ptr = (void*)value; if (_nativePointer != ptr) { NativePointerUpdating(); void* nativePointer = _nativePointer; _nativePointer = ptr; NativePointerUpdated((IntPtr)nativePointer); } } } IDisposable ICallbackable.Shadow { get { throw new InvalidOperationException("Invalid access to Callback. This is used internally."); } set { throw new InvalidOperationException("Invalid access to Callback. This is used internally."); } } public CppObject(IntPtr pointer) { NativePointer = pointer; } protected CppObject() { } public static explicit operator IntPtr(CppObject cppObject) { return cppObject?.NativePointer ?? IntPtr.Zero; } protected void FromTemp(CppObject temp) { NativePointer = temp.NativePointer; temp.NativePointer = IntPtr.Zero; } protected void FromTemp(IntPtr temp) { NativePointer = temp; } protected virtual void NativePointerUpdating() { } protected virtual void NativePointerUpdated(IntPtr oldNativePointer) { } protected override void Dispose(bool disposing) { } public static T FromPointer<T>(IntPtr comObjectPtr) where T : CppObject { if (!(comObjectPtr == IntPtr.Zero)) { return (T)Activator.CreateInstance(typeof(T), comObjectPtr); } return null; } internal static T FromPointerUnsafe<T>(IntPtr comObjectPtr) { if (!(comObjectPtr == IntPtr.Zero)) { return (T)Activator.CreateInstance(typeof(T), comObjectPtr); } return (T)(object)null; } public static IntPtr ToCallbackPtr<TCallback>(ICallbackable callback) where TCallback : ICallbackable { if (callback == null) { return IntPtr.Zero; } if (callback is CppObject) { return ((CppObject)callback).NativePointer; } ShadowContainer shadowContainer = callback.Shadow as ShadowContainer; if (shadowContainer == null) { shadowContainer = new ShadowContainer(); shadowContainer.Initialize(callback); } return shadowContainer.Find(typeof(TCallback)); } } internal abstract class CppObjectShadow : CppObject { public ICallbackable Callback { get; private set; } protected abstract CppObjectVtbl GetVtbl { get; } public unsafe virtual void Initialize(ICallbackable callbackInstance) { Callback = callbackInstance; base.NativePointer = Marshal.AllocHGlobal(IntPtr.Size * 2); GCHandle value = GCHandle.Alloc(this); Marshal.WriteIntPtr(base.NativePointer, GetVtbl.Pointer); *(IntPtr*)((byte*)(void*)base.NativePointer + sizeof(IntPtr)) = GCHandle.ToIntPtr(value); } protected unsafe override void Dispose(bool disposing) { if (base.NativePointer != IntPtr.Zero) { GCHandle.FromIntPtr(*(IntPtr*)((byte*)(void*)base.NativePointer + sizeof(IntPtr))).Free(); Marshal.FreeHGlobal(base.NativePointer); base.NativePointer = IntPtr.Zero; } Callback = null; base.Dispose(disposing); } internal unsafe static T ToShadow<T>(IntPtr thisPtr) where T : CppObjectShadow { return (T)GCHandle.FromIntPtr(*(IntPtr*)((byte*)(void*)thisPtr + sizeof(IntPtr))).Target; } } internal class CppObjectVtbl { private readonly List<Delegate> methods; private readonly IntPtr vtbl; public IntPtr Pointer => vtbl; public CppObjectVtbl(int numberOfCallbackMethods) { vtbl = Marshal.AllocHGlobal(IntPtr.Size * numberOfCallbackMethods); methods = new List<Delegate>(); } public unsafe void AddMethod(Delegate method) { int count = methods.Count; methods.Add(method); *(IntPtr*)((byte*)(void*)vtbl + (nint)count * (nint)sizeof(IntPtr)) = Marshal.GetFunctionPointerForDelegate(method); } } public struct DataBox { public IntPtr DataPointer; public int RowPitch; public int SlicePitch; public bool IsEmpty { get { if (DataPointer == IntPtr.Zero && RowPitch == 0) { return SlicePitch == 0; } return false; } } public DataBox(IntPtr datapointer, int rowPitch, int slicePitch) { DataPointer = datapointer; RowPitch = rowPitch; SlicePitch = slicePitch; } public DataBox(IntPtr dataPointer) { DataPointer = dataPointer; RowPitch = 0; SlicePitch = 0; } } public class DataBuffer : DisposeBase { private unsafe sbyte* _buffer; private GCHandle _gCHandle; private readonly bool _ownsBuffer; private readonly int _size; private Blob _blob; public unsafe IntPtr DataPointer => new IntPtr(_buffer); public int Size => _size; public unsafe static DataBuffer Create<T>(T[] userBuffer, int index = 0, bool pinBuffer = true) where T : struct { if (userBuffer == null) { throw new ArgumentNullException("userBuffer"); } if (index < 0 || index > userBuffer.Length) { throw new ArgumentException("Index is out of range [0, userBuffer.Length-1]", "index"); } int num = Utilities.SizeOf(userBuffer); int num2 = index * Utilities.SizeOf<T>(); if (pinBuffer) { GCHandle handle = GCHandle.Alloc(userBuffer, GCHandleType.Pinned); return new DataBuffer(num2 + (byte*)(void*)handle.AddrOfPinnedObject(), num - num2, handle); } fixed (T* ptr = &userBuffer[0]) { return new DataBuffer(num2 + (byte*)(void*)(IntPtr)ptr, num - num2, makeCopy: true); } } public unsafe DataBuffer(int sizeInBytes) { _buffer = (sbyte*)(void*)Utilities.AllocateMemory(sizeInBytes); _size = sizeInBytes; _ownsBuffer = true; } public DataBuffer(DataPointer dataPointer) : this(dataPointer.Pointer, dataPointer.Size) { } public unsafe DataBuffer(IntPtr userBuffer, int sizeInBytes) : this((void*)userBuffer, sizeInBytes, makeCopy: false) { } internal unsafe DataBuffer(void* buffer, int sizeInBytes, GCHandle handle) { _buffer = (sbyte*)buffer; _size = sizeInBytes; _gCHandle = handle; _ownsBuffer = false; } internal unsafe DataBuffer(void* buffer, int sizeInBytes, bool makeCopy) { if (makeCopy) { _buffer = (sbyte*)(void*)Utilities.AllocateMemory(sizeInBytes); Utilities.CopyMemory((IntPtr)_buffer, (IntPtr)buffer, sizeInBytes); } else { _buffer = (sbyte*)buffer; } _size = sizeInBytes; _ownsBuffer = makeCopy; } internal unsafe DataBuffer(Blob buffer) { _buffer = (sbyte*)(void*)buffer.GetBufferPointer(); _size = buffer.GetBufferSize(); _blob = buffer; } protected unsafe override void Dispose(bool disposing) { if (disposing && _blob != null) { _blob.Dispose(); _blob = null; } if (_gCHandle.IsAllocated) { _gCHandle.Free(); } if (_ownsBuffer && _buffer != null) { Utilities.FreeMemory((IntPtr)_buffer); _buffer = null; } } public unsafe void Clear(byte value = 0) { Utilities.ClearMemory((IntPtr)_buffer, value, Size); } public unsafe T Get<T>(int positionInBytes) where T : struct { T data = default(T); Utilities.Read((IntPtr)(_buffer + positionInBytes), ref data); return data; } public unsafe void Get<T>(int positionInBytes, out T value) where T : struct { Utilities.ReadOut<T>((IntPtr)(_buffer + positionInBytes), out value); } public unsafe T[] GetRange<T>(int positionInBytes, int count) where T : struct { T[] array = new T[count]; Utilities.Read((IntPtr)(_buffer + positionInBytes), array, 0, count); return array; } public unsafe void GetRange<T>(int positionInBytes, T[] buffer, int offset, int count) where T : struct { Utilities.Read((IntPtr)(_buffer + positionInBytes), buffer, offset, count); } public unsafe void Set<T>(int positionInBytes, ref T value) where T : struct { Unsafe.Write(_buffer + positionInBytes, value); } public unsafe void Set<T>(int positionInBytes, T value) where T : struct { Unsafe.Write(_buffer + positionInBytes, value); } public unsafe void Set(int positionInBytes, bool value) { *(int*)(_buffer + positionInBytes) = (value ? 1 : 0); } public void Set<T>(int positionInBytes, T[] data) where T : struct { Set(positionInBytes, data, 0, data.Length); } public unsafe void Set(int positionInBytes, IntPtr source, long count) { Utilities.CopyMemory((IntPtr)(_buffer + positionInBytes), source, (int)count); } public unsafe void Set<T>(int positionInBytes, T[] data, int offset, int count) where T : struct { Utilities.Write((IntPtr)(_buffer + positionInBytes), data, offset, count); } public static implicit operator DataPointer(DataBuffer from) { return new DataPointer(from.DataPointer, from.Size); } } public struct DataPointer : IEquatable<DataPointer> { public static readonly DataPointer Zero = new DataPointer(IntPtr.Zero, 0); public IntPtr Pointer; public int Size; public bool IsEmpty => Equals(Zero); public DataPointer(IntPtr pointer, int size) { Pointer = pointer; Size = size; } public unsafe DataPointer(void* pointer, int size) { Pointer = (IntPtr)pointer; Size = size; } public bool Equals(DataPointer other) { if (Pointer.Equals((object?)(nint)other.Pointer)) { return Size == other.Size; } return false; } public override bool Equals(object obj) { if (obj == null) { return false; } if (obj is DataPointer) { return Equals((DataPointer)obj); } return false; } public override int GetHashCode() { return (Pointer.GetHashCode() * 397) ^ Size; } public DataStream ToDataStream() { if (Pointer == IntPtr.Zero) { throw new InvalidOperationException("DataPointer is Zero"); } return new DataStream(this); } public DataBuffer ToDataBuffer() { if (Pointer == IntPtr.Zero) { throw new InvalidOperationException("DataPointer is Zero"); } return new DataBuffer(this); } public byte[] ToArray() { if (Pointer == IntPtr.Zero) { throw new InvalidOperationException("DataPointer is Zero"); } if (Size < 0) { throw new InvalidOperationException("Size cannot be < 0"); } byte[] array = new byte[Size]; Utilities.Read(Pointer, array, 0, Size); return array; } public T[] ToArray<T>() where T : struct { if (Pointer == IntPtr.Zero) { throw new InvalidOperationException("DataPointer is Zero"); } T[] array = new T[Size / Utilities.SizeOf<T>()]; CopyTo(array, 0, array.Length); return array; } public void CopyTo<T>(T[] buffer, int offset, int count) where T : struct { if (buffer == null) { throw new ArgumentNullException("buffer"); } if (Pointer == IntPtr.Zero) { throw new InvalidOperationException("DataPointer is Zero"); } if (offset < 0) { throw new ArgumentOutOfRangeException("offset", "Must be >= 0"); } if (count <= 0) { throw new ArgumentOutOfRangeException("count", "Must be > 0"); } if (count * Utilities.SizeOf<T>() > Size) { throw new ArgumentOutOfRangeException("buffer", "Total buffer size cannot be larger than size of this data pointer"); } Utilities.Read(Pointer, buffer, offset, count); } public void CopyFrom<T>(T[] buffer) where T : struct { if (buffer == null) { throw new ArgumentNullException("buffer"); } if (Pointer == IntPtr.Zero) { throw new InvalidOperationException("DataPointer is Zero"); } CopyFrom(buffer, 0, buffer.Length); } public void CopyFrom<T>(T[] buffer, int offset, int count) where T : struct { if (buffer == null) { throw new ArgumentNullException("buffer"); } if (Pointer == IntPtr.Zero) { throw new InvalidOperationException("DataPointer is Zero"); } if (offset < 0) { throw new ArgumentOutOfRangeException("offset", "Must be >= 0"); } if (count <= 0) { throw new ArgumentOutOfRangeException("count", "Must be > 0"); } if (count * Utilities.SizeOf<T>() > Size) { throw new ArgumentOutOfRangeException("buffer", "Total buffer size cannot be larger than size of this data pointer"); } Utilities.Write(Pointer, buffer, offset, count); } public static bool operator ==(DataPointer left, DataPointer right) { return left.Equals(right); } public static bool operator !=(DataPointer left, DataPointer right) { return !left.Equals(right); } } public struct DataRectangle { public IntPtr DataPointer; public int Pitch; public DataRectangle(IntPtr dataPointer, int pitch) { DataPointer = dataPointer; Pitch = pitch; } } public class DataStream : Stream { private unsafe byte* _buffer; private readonly bool _canRead; private readonly bool _canWrite; private GCHandle _gCHandle; private Blob _blob; private readonly bool _ownsBuffer; private long _position; private readonly long _size; public override bool CanRead => _canRead; public override bool CanSeek => true; public override bool CanWrite => _canWrite; public unsafe IntPtr DataPointer => new IntPtr(_buffer); public override long Length => _size; public override long Position { get { return _position; } set { Seek(value, SeekOrigin.Begin); } } public unsafe IntPtr PositionPointer => (IntPtr)(_buffer + _position); public long RemainingLength => _size - _position; public unsafe DataStream(Blob buffer) { _buffer = (byte*)(void*)buffer.GetBufferPointer(); _size = buffer.GetBufferSize(); _canRead = true; _canWrite = true; _blob = buffer; } public unsafe static DataStream Create<T>(T[] userBuffer, bool canRead, bool canWrite, int index = 0, bool pinBuffer = true) where T : struct { if (userBuffer == null) { throw new ArgumentNullException("userBuffer"); } if (index < 0 || index > userBuffer.Length) { throw new ArgumentException("Index is out of range [0, userBuffer.Length-1]", "index"); } int num = Utilities.SizeOf(userBuffer); int num2 = index * Utilities.SizeOf<T>(); if (pinBuffer) { GCHandle handle = GCHandle.Alloc(userBuffer, GCHandleType.Pinned); return new DataStream(num2 + (byte*)(void*)handle.AddrOfPinnedObject(), num - num2, canRead, canWrite, handle); } fixed (T* ptr = &userBuffer[0]) { return new DataStream(num2 + (byte*)(void*)(IntPtr)ptr, num - num2, canRead, canWrite, makeCopy: true); } } public unsafe DataStream(int sizeInBytes, bool canRead, bool canWrite) { _buffer = (byte*)(void*)Utilities.AllocateMemory(sizeInBytes); _size = sizeInBytes; _ownsBuffer = true; _canRead = canRead; _canWrite = canWrite; } public DataStream(DataPointer dataPointer) : this(dataPointer.Pointer, dataPointer.Size, canRead: true, canWrite: true) { } public unsafe DataStream(IntPtr userBuffer, long sizeInBytes, bool canRead, bool canWrite) { _buffer = (byte*)userBuffer.ToPointer(); _size = sizeInBytes; _canRead = canRead; _canWrite = canWrite; } internal unsafe DataStream(void* dataPointer, int sizeInBytes, bool canRead, bool canWrite, GCHandle handle) { _gCHandle = handle; _buffer = (byte*)dataPointer; _size = sizeInBytes; _canRead = canRead; _canWrite = canWrite; _ownsBuffer = false; } internal unsafe DataStream(void* buffer, int sizeInBytes, bool canRead, bool canWrite, bool makeCopy) { if (makeCopy) { _buffer = (byte*)(void*)Utilities.AllocateMemory(sizeInBytes); Utilities.CopyMemory((IntPtr)_buffer, (IntPtr)buffer, sizeInBytes); } else { _buffer = (byte*)buffer; } _size = sizeInBytes; _canRead = canRead; _canWrite = canWrite; _ownsBuffer = makeCopy; } ~DataStream() { Dispose(disposing: false); } protected unsafe override void Dispose(bool disposing) { if (disposing && _blob != null) { _blob.Dispose(); _blob = null; } if (_gCHandle.IsAllocated) { _gCHandle.Free(); } if (_ownsBuffer && _buffer != null) { Utilities.FreeMemory((IntPtr)_buffer); _buffer = null; } } public override void Flush() { throw new NotSupportedException("DataStream objects cannot be flushed."); } public unsafe T Read<T>() where T : struct { if (!_canRead) { throw new NotSupportedException(); } byte* ptr = _buffer + _position; T data = default(T); _position = (byte*)(void*)Utilities.ReadAndPosition((IntPtr)ptr, ref data) - _buffer; return data; } public unsafe override int ReadByte() { if (_position >= Length) { return -1; } return _buffer[_position++]; } public override int Read(byte[] buffer, int offset, int count) { int count2 = (int)Math.Min(RemainingLength, count); return ReadRange(buffer, offset, count2); } public unsafe void Read(IntPtr buffer, int offset, int count) { Utilities.CopyMemory(new IntPtr((byte*)(void*)buffer + offset), (IntPtr)(_buffer + _position), count); _position += count; } public unsafe T[] ReadRange<T>(int count) where T : struct { if (!_canRead) { throw new NotSupportedException(); } byte* ptr = _buffer + _position; T[] array = new T[count]; _position = (byte*)(void*)Utilities.Read((IntPtr)ptr, array, 0, count) - _buffer; return array; } public unsafe int ReadRange<T>(T[] buffer, int offset, int count) where T : struct { if (!_canRead) { throw new NotSupportedException(); } long position = _position; _position = (byte*)(void*)Utilities.Read((IntPtr)(_buffer + _position), buffer, offset, count) - _buffer; return (int)(_position - position); } public override long Seek(long offset, SeekOrigin origin) { long num = 0L; switch (origin) { case SeekOrigin.Begin: num = offset; break; case SeekOrigin.Current: num = _position + offset; break; case SeekOrigin.End: num = _size - offset; break; } if (num < 0) { throw new InvalidOperationException("Cannot seek beyond the beginning of the stream."); } if (num > _size) { throw new InvalidOperationException("Cannot seek beyond the end of the stream."); } _position = num; return _position; } public override void SetLength(long value) { throw new NotSupportedException("DataStream objects cannot be resized."); } public unsafe void Write<T>(T value) where T : struct { if (!_canWrite) { throw new NotSupportedException(); } _position = (byte*)(void*)Utilities.WriteAndPosition((IntPtr)(_buffer + _position), ref value) - _buffer; } public override void Write(byte[] buffer, int offset, int count) { WriteRange(buffer, offset, count); } public unsafe void Write(IntPtr buffer, int offset, int count) { Utilities.CopyMemory((IntPtr)(_buffer + _position), new IntPtr((byte*)(void*)buffer + offset), count); _position += count; } public void WriteRange<T>(T[] data) where T : struct { WriteRange(data, 0, data.Length); } public unsafe void WriteRange(IntPtr source, long count) { if (!_canWrite) { throw new NotSupportedException(); } Utilities.CopyMemory((IntPtr)(_buffer + _position), source, (int)count); _position += count; } public unsafe void WriteRange<T>(T[] data, int offset, int count) where T : struct { if (!_canWrite) { throw new NotSupportedException(); } _position = (byte*)(void*)Utilities.Write((IntPtr)(_buffer + _position), data, offset, count) - _buffer; } public static implicit operator DataPointer(DataStream from) { return new DataPointer(from.PositionPointer, (int)from.RemainingLength); } } public class CompilationException : SharpDXException { public CompilationException(string message) : base(message) { } public CompilationException(Result errorCode, string message) : base(errorCode, message) { } } public abstract class CompilationResultBase<T> : DisposeBase where T : class, IDisposable { public T Bytecode { get; private set; } public Result ResultCode { get; private set; } public bool HasErrors => ResultCode.Failure; public string Message { get; private set; } protected CompilationResultBase(T bytecode, Result resultCode, string message = null) { Bytecode = bytecode; ResultCode = resultCode; Message = message; } protected override void Dispose(bool disposing) { if (disposing && Bytecode != null) { Bytecode.Dispose(); Bytecode = null; } } } public abstract class DisposeBase : IDisposable { public bool IsDisposed { get; private set; } public event EventHandler<EventArgs> Disposing; public event EventHandler<EventArgs> Disposed; ~DisposeBase() { CheckAndDispose(disposing: false); } public void Dispose() { CheckAndDispose(disposing: true); } private void CheckAndDispose(bool disposing) { if (!IsDisposed) { this.Disposing?.Invoke(this, DisposeEventArgs.Get(disposing)); Dispose(disposing); GC.SuppressFinalize(this); IsDisposed = true; this.Disposed?.Invoke(this, DisposeEventArgs.Get(disposing)); } } protected abstract void Dispose(bool disposing); } public class DisposeCollector : DisposeBase { private List<object> disposables; public int Count => disposables.Count; public void DisposeAndClear(bool disposeManagedResources = true) { if (disposables == null) { return; } for (int num = disposables.Count - 1; num >= 0; num--) { object obj = disposables[num]; if (obj is IDisposable disposable) { if (disposeManagedResources) { disposable.Dispose(); } } else { Utilities.FreeMemory((IntPtr)obj); } disposables.RemoveAt(num); } disposables.Clear(); } protected override void Dispose(bool disposeManagedResources) { DisposeAndClear(disposeManagedResources); disposables = null; } public T Collect<T>(T toDispose) { if (!(toDispose is IDisposable) && !(toDispose is IntPtr)) { throw new ArgumentException("Argument must be IDisposable or IntPtr"); } if (toDispose is IntPtr && !Utilities.IsMemoryAligned((IntPtr)(object)toDispose)) { throw new ArgumentException("Memory pointer is invalid. Memory must have been allocated with Utilties.AllocateMemory"); } if (!object.Equals(toDispose, default(T))) { if (disposables == null) { disposables = new List<object>(); } if (!disposables.Contains(toDispose)) { disposables.Add(toDispose); } } return toDispose; } public void RemoveAndDispose<T>(ref T objectToDispose) { if (disposables != null) { Remove(objectToDispose); if ((object)objectToDispose is IDisposable disposable) { disposable.Dispose(); } else { Utilities.FreeMemory((IntPtr)(object)objectToDispose); } objectToDispose = default(T); } } public void Remove<T>(T toDisposeArg) { if (disposables != null && disposables.Contains(toDisposeArg)) { disposables.Remove(toDisposeArg); } } } public class DisposeEventArgs : EventArgs { public static readonly DisposeEventArgs DisposingEventArgs = new DisposeEventArgs(disposing: true); public static readonly DisposeEventArgs NotDisposingEventArgs = new DisposeEventArgs(disposing: false); public readonly bool Disposing; private DisposeEventArgs(bool disposing) { Disposing = disposing; } public static DisposeEventArgs Get(bool disposing) { if (!disposing) { return NotDisposingEventArgs; } return DisposingEventArgs; } } [StructLayout(LayoutKind.Sequential)] internal class FunctionCallback { public IntPtr Pointer; public FunctionCallback(IntPtr pointer) { Pointer = pointer; } public unsafe FunctionCallback(void* pointer) { Pointer = new IntPtr(pointer); } public static explicit operator IntPtr(FunctionCallback value) { return value.Pointer; } public static implicit operator FunctionCallback(IntPtr value) { return new FunctionCallback(value); } public unsafe static implicit operator void*(FunctionCallback value) { return (void*)value.Pointer; } public unsafe static explicit operator FunctionCallback(void* value) { return new FunctionCallback(value); } public override string ToString() { return string.Format(CultureInfo.CurrentCulture, "{0}", Pointer); } public string ToString(string format) { if (format == null) { return ToString(); } return string.Format(CultureInfo.CurrentCulture, "{0}", Pointer.ToString(format)); } public override int GetHashCode() { return Pointer.ToInt32(); } public bool Equals(FunctionCallback other) { return Pointer == other.Pointer; } public override bool Equals(object value) { if (value == null) { return false; } if ((object)value.GetType() != typeof(FunctionCallback)) { return false; } return Equals((FunctionCallback)value); } } public interface ICallbackable : IDisposable { IDisposable Shadow { get; set; } } [Shadow(typeof(InspectableShadow))] [Guid("AF86E2E0-B12D-4c6a-9C5A-D7AA65101E90")] public interface IInspectable : ICallbackable, IDisposable { } internal class InspectableShadow : ComObjectShadow { public class InspectableProviderVtbl : ComObjectVtbl { [UnmanagedFunctionPointer(CallingConvention.StdCall)] private unsafe delegate int GetIidsDelegate(IntPtr thisPtr, int* iidCount, IntPtr* iids); [UnmanagedFunctionPointer(CallingConvention.StdCall)] private delegate int GetRuntimeClassNameDelegate(IntPtr thisPtr, IntPtr className); private enum TrustLevel { BaseTrust, PartialTrust, FullTrust } [UnmanagedFunctionPointer(CallingConvention.StdCall)] private delegate int GetTrustLevelDelegate(IntPtr thisPtr, IntPtr trustLevel); public InspectableProviderVtbl() : base(3) { AddMethod(new GetIidsDelegate(GetIids)); AddMethod(new GetRuntimeClassNameDelegate(GetRuntimeClassName)); AddMethod(new GetTrustLevelDelegate(GetTrustLevel)); } private unsafe static int GetIids(IntPtr thisPtr, int* iidCount, IntPtr* iids) { try { ShadowContainer shadowContainer = (ShadowContainer)((IInspectable)CppObjectShadow.ToShadow<InspectableShadow>(thisPtr).Callback).Shadow; int num = shadowContainer.Guids.Length; iids = (IntPtr*)(void*)Marshal.AllocCoTaskMem(IntPtr.Size * num); *iidCount = num; for (int i = 0; i < num; i++) { iids[i] = shadowContainer.Guids[i]; } } catch (Exception ex) { return (int)Result.GetResultFromException(ex); } return Result.Ok.Code; } private static int GetRuntimeClassName(IntPtr thisPtr, IntPtr className) { try { _ = (IInspectable)CppObjectShadow.ToShadow<InspectableShadow>(thisPtr).Callback; } catch (Exception ex) { return (int)Result.GetResultFromException(ex); } return Result.Ok.Code; } private static int GetTrustLevel(IntPtr thisPtr, IntPtr trustLevel) { try { _ = (IInspectable)CppObjectShadow.ToShadow<InspectableShadow>(thisPtr).Callback; Marshal.WriteInt32(trustLevel, 2); } catch (Exception ex) { return (int)Result.GetResultFromException(ex); } return Result.Ok.Code; } } private static readonly InspectableProviderVtbl Vtbl = new InspectableProviderVtbl(); protected override CppObjectVtbl GetVtbl => Vtbl; public static IntPtr ToIntPtr(IInspectable callback) { return CppObject.ToCallbackPtr<IInspectable>(callback); } } internal class Interop { public unsafe static void* Fixed<T>(ref T data) { throw new NotImplementedException(); } public unsafe static void* Fixed<T>(T[] data) { throw new NotImplementedException(); } public unsafe static void* Cast<T>(ref T data) where T : struct { return Unsafe.AsPointer(ref data); } public unsafe static void* CastOut<T>(out T data) where T : struct { return Unsafe.AsPointer(ref data); } public static TCAST[] CastArray<TCAST, T>(T[] arrayData) where TCAST : struct where T : struct { return (TCAST[])(object)arrayData; } public unsafe static void memcpy(void* pDest, void* pSrc, int count) { // IL cpblk instruction Unsafe.CopyBlockUnaligned(pDest, pSrc, count); } public unsafe static void memset(void* pDest, byte value, int count) { // IL initblk instruction Unsafe.InitBlockUnaligned(pDest, value, count); } public unsafe static void* Read<T>(void* pSrc, ref T data) where T : struct { fixed (T* ptr = &data) { ref ? reference = ref *(?*)ptr; int num = Unsafe.SizeOf<T>(); // IL cpblk instruction Unsafe.CopyBlockUnaligned(ref reference, pSrc, num); return num + (byte*)pSrc; } } public unsafe static T ReadInline<T>(void* pSrc) where T : struct { throw new NotImplementedException(); } public unsafe static void WriteInline<T>(void* pDest, ref T data) where T : struct { throw new NotImplementedException(); } public unsafe static void CopyInline<T>(ref T data, void* pSrc) where T : struct { throw new NotImplementedException(); } public unsafe static void CopyInline<T>(void* pDest, ref T srcData) where T : struct { throw new NotImplementedException(); } public unsafe static void CopyInlineOut<T>(out T data, void* pSrc) where T : struct { throw new NotImplementedException(); } public unsafe static void* ReadOut<T>(void* pSrc, out T data) where T : struct { fixed (T* ptr = &data) { ref ? reference = ref *(?*)ptr; int num = Unsafe.SizeOf<T>(); // IL cpblk instruction Unsafe.CopyBlockUnaligned(ref reference, pSrc, num); return num + (byte*)pSrc; } } public unsafe static void* Read<T>(void* pSrc, T[] data, int offset, int count) where T : struct { fixed (T* ptr = &data[offset]) { ref ? reference = ref *(?*)ptr; int num = Unsafe.SizeOf<T>() * count; // IL cpblk instruction Unsafe.CopyBlockUnaligned(ref reference, pSrc, num); return num + (byte*)pSrc; } } public unsafe static void* Read2D<T>(void* pSrc, T[,] data, int offset, int count) where T : struct { fixed (T* ptr = &data[offset]) { ref ? reference = ref *(?*)ptr; int num = Unsafe.SizeOf<T>() * count; // IL cpblk instruction Unsafe.CopyBlockUnaligned(ref reference, pSrc, num); return num + (byte*)pSrc; } } public static int SizeOf<T>() { throw new NotImplementedException(); } public unsafe static void* Write<T>(void* pDest, ref T data) where T : struct { fixed (T* ptr = &data) { ref ? reference = ref *(?*)ptr; int num = Unsafe.SizeOf<T>(); // IL cpblk instruction Unsafe.CopyBlockUnaligned(pDest, ref reference, num); return num + (byte*)pDest; } } public unsafe static void* Write<T>(void* pDest, T[] data, int offset, int count) where T : struct { fixed (T* ptr = &data[offset]) { ref ? reference = ref *(?*)ptr; int num = Unsafe.SizeOf<T>() * count; // IL cpblk instruction Unsafe.CopyBlockUnaligned(pDest, ref reference, num); return num + (byte*)pDest; } } public unsafe static void* Write2D<T>(void* pDest, T[,] data, int offset, int count) where T : struct { fixed (T* ptr = &data[offset]) { ref ? reference = ref *(?*)ptr; int num = Unsafe.SizeOf<T>() * count; // IL cpblk instruction Unsafe.CopyBlockUnaligned(pDest, ref reference, num); return num + (byte*)pDest; } } [Tag("SharpDX.ModuleInit")] public static void ModuleInit() { } } [Guid("00000000-0000-0000-C000-000000000046")] public interface IUnknown : ICallbackable, IDisposable { Result QueryInterface(ref Guid guid, out IntPtr comObject); int AddReference(); int Release(); } internal class ModuleInit { [Tag("SharpDX.ModuleInit")] internal static void Setup() { ResultDescriptor.RegisterProvider(typeof(Result)); } } [CompilerGenerated] internal class NamespaceDoc { } public struct PointerSize : IEquatable<PointerSize> { private IntPtr _size; public static readonly PointerSize Zero = new PointerSize(0); public PointerSize(IntPtr size) { _size = size; } private unsafe PointerSize(void* size) { _size = new IntPtr(size); } public PointerSize(int size) { _size = new IntPtr(size); } public PointerSize(long size) { _size = new IntPtr(size); } public override string ToString() { return string.Format(CultureInfo.CurrentCulture, "{0}", _size); } public string ToString(string format) { if (format == null) { return ToString(); } return string.Format(CultureInfo.CurrentCulture, "{0}", _size.ToString(format)); } public override int GetHashCode() { return _size.GetHashCode(); } public bool Equals(PointerSize other) { return _size.Equals((object?)(nint)other._size); } public override bool Equals(object value) { if (value == null) { return false; } if (value is PointerSize) { return Equals((PointerSize)value); } return false; } public static PointerSize operator +(PointerSize left, PointerSize right) { return new PointerSize(left._size.ToInt64() + right._size.ToInt64()); } public static PointerSize operator +(PointerSize value) { return value; } public static PointerSize operator -(PointerSize left, PointerSize right) { return new PointerSize(left._size.ToInt64() - right._size.ToInt64()); } public static PointerSize operator -(PointerSize value) { return new PointerSize(-value._size.ToInt64()); } public static PointerSize operator *(int scale, PointerSize value) { return new PointerSize(scale * value._size.ToInt64()); } public static PointerSize operator *(PointerSize value, int scale) { return new PointerSize(scale * value._size.ToInt64()); } public static PointerSize operator /(PointerSize value, int scale) { return new PointerSize(value._size.ToInt64() / scale); } public static bool operator ==(PointerSize left, PointerSize right) { return left.Equals(right); } public static bool operator !=(PointerSize left, PointerSize right) { return !left.Equals(right); } public static implicit operator int(PointerSize value) { return value._size.ToInt32(); } public static implicit operator long(PointerSize value) { return value._size.ToInt64(); } public static implicit operator PointerSize(int value) { return new PointerSize(value); } public static implicit operator PointerSize(long value) { return new PointerSize(value); } public static implicit operator PointerSize(IntPtr value) { return new PointerSize(value); } public static implicit operator IntPtr(PointerSize value) { return value._size; } public unsafe static implicit operator PointerSize(void* value) { return new PointerSize(value); } public unsafe static implicit operator void*(PointerSize value) { return (void*)value._size; } } public struct Result : IEquatable<Result> { private int _code; public static readonly Result Ok = new Result(0); public static readonly Result False = new Result(1); public static readonly ResultDescriptor Abort = new ResultDescriptor(-2147467260, "General", "E_ABORT", "Operation aborted"); public static readonly ResultDescriptor AccessDenied = new ResultDescriptor(-2147024891, "General", "E_ACCESSDENIED", "General access denied error"); public static readonly ResultDescriptor Fail = new ResultDescriptor(-2147467259, "General", "E_FAIL", "Unspecified error"); public static readonly ResultDescriptor Handle = new ResultDescriptor(-2147024890, "General", "E_HANDLE", "Invalid handle"); public static readonly ResultDescriptor InvalidArg = new ResultDescriptor(-2147024809, "General", "E_INVALIDARG", "Invalid Arguments"); public static readonly ResultDescriptor NoInterface = new ResultDescriptor(-2147467262, "General", "E_NOINTERFACE", "No such interface supported"); public static readonly ResultDescriptor NotImplemented = new ResultDescriptor(-2147467263, "General", "E_NOTIMPL", "Not implemented"); public static readonly ResultDescriptor OutOfMemory = new ResultDescriptor(-2147024882, "General", "E_OUTOFMEMORY", "Out of memory"); public static readonly ResultDescriptor InvalidPointer = new ResultDescriptor(-2147467261, "General", "E_POINTER", "Invalid pointer"); public static readonly ResultDescriptor UnexpectedFailure = new ResultDescriptor(-2147418113, "General", "E_UNEXPECTED", "Catastrophic failure"); public static readonly ResultDescriptor WaitAbandoned = new ResultDescriptor(128, "General", "WAIT_ABANDONED", "WaitAbandoned"); public static readonly ResultDescriptor WaitTimeout = new ResultDescriptor(258, "General", "WAIT_TIMEOUT", "WaitTimeout"); public static readonly ResultDescriptor Pending = new ResultDescriptor(-2147483638, "General", "E_PENDING", "Pending"); public int Code => _code; public bool Success => Code >= 0; public bool Failure => Code < 0; public Result(int code) { _code = code; } public Result(uint code) { _code = (int)code; } public static explicit operator int(Result result) { return result.Code; } public static explicit operator uint(Result result) { return (uint)result.Code; } public static implicit operator Result(int result) { return new Result(result); } public static implicit operator Result(uint result) { return new Result(result); } public bool Equals(Result other) { return Code == other.Code; } public override bool Equals(object obj) { if (!(obj is Result)) { return false; } return Equals((Result)obj); } public override int GetHashCode() { return Code; } public static bool operator ==(Result left, Result right) { return left.Code == right.Code; } public static bool operator !=(Result left, Result right) { return left.Code != right.Code; } public override string ToString() { return string.Format(CultureInfo.InvariantCulture, "HRESULT = 0x{0:X}", _code); } public void CheckError() { if (_code < 0) { throw new SharpDXException(this); } } public static Result GetResultFromException(Exception ex) { return new Result(Marshal.GetHRForException(ex)); } public static Result GetResultFromWin32Error(int win32Error) { return (int)((win32Error <= 0) ? win32Error : ((win32Error & 0xFFFF) | 0x70000 | 0x80000000u)); } } public sealed class ResultDescriptor { private static readonly object LockDescriptor = new object(); private static readonly List<Type> RegisteredDescriptorProvider = new List<Type>(); private static readonly Dictionary<Result, ResultDescriptor> Descriptors = new Dictionary<Result, ResultDescriptor>(); private const string UnknownText = "Unknown"; public Result Result { get; private set; } public int Code => Result.Code; public string Module { get; private set; } public string NativeApiCode { get; private set; } public string ApiCode { get; private set; } public string Description { get; set; } public ResultDescriptor(Result code, string module, string nativeApiCode, string apiCode, string description = null) { Result = code; Module = module; NativeApiCode = nativeApiCode; ApiCode = apiCode; Description = description; } public bool Equals(ResultDescriptor other) { if (other == null) { return false; } if ((object)this == other) { return true; } return other.Result.Equals(Result); } public override bool Equals(object obj) { if (obj == null) { return false; } if (this == obj) { return true; } if (obj.GetType() != typeof(ResultDescriptor)) { return false; } return Equals((ResultDescriptor)obj); } public override int GetHashCode() { return Result.GetHashCode(); } public override string ToString() { return $"HRESULT: [0x{Result.Code:X}], Module: [{Module}], ApiCode: [{NativeApiCode}/{ApiCode}], Message: {Description}"; } public static implicit operator Result(ResultDescriptor result) { return result.Result; } public static explicit operator int(ResultDescriptor result) { return result.Result.Code; } public static explicit operator uint(ResultDescriptor result) { return (uint)result.Result.Code; } public static bool operator ==(ResultDescriptor left, Result right) { if (left == null) { return false; } return left.Result.Code == right.Code; } public static bool operator !=(ResultDescriptor left, Result right) { if (left == null) { return false; } return left.Result.Code != right.Code; } public static void RegisterProvider(Type descriptorsProviderType) { lock (LockDescriptor) { if (!RegisteredDescriptorProvider.Contains(descriptorsProviderType)) { RegisteredDescriptorProvider.Add(descriptorsProviderType); } } } public static ResultDescriptor Find(Result result) { ResultDescriptor value; lock (LockDescriptor) { if (RegisteredDescriptorProvider.Count > 0) { foreach (Type item in RegisteredDescriptorProvider) { AddDescriptorsFromType(item); } RegisteredDescriptorProvider.Clear(); } if (!Descriptors.TryGetValue(result, out value)) { value = new ResultDescriptor(result, "Unknown", "Unknown", "Unknown"); } if (value.Description == null) { string descriptionFromResultCode = GetDescriptionFromResultCode(result.Code); value.Description = descriptionFromResultCode ?? "Unknown"; } } return value; } private static void AddDescriptorsFromType(Type type) { foreach (FieldInfo declaredField in type.GetTypeInfo().DeclaredFields) { if (declaredField.FieldType == typeof(ResultDescriptor) && declaredField.IsPublic && declaredField.IsStatic) { ResultDescriptor resultDescriptor = (ResultDescriptor)declaredField.GetValue(null); if (!Descriptors.ContainsKey(resultDescriptor.Result)) { Descriptors.Add(resultDescriptor.Result, resultDescriptor); } } } } private static string GetDescriptionFromResultCode(int resultCode) { IntPtr lpBuffer = IntPtr.Zero; FormatMessageW(4864, IntPtr.Zero, resultCode, 0, ref lpBuffer, 0, IntPtr.Zero); string? result = Marshal.PtrToStringUni(lpBuffer); Marshal.FreeHGlobal(lpBuffer); return result; } [DllImport("kernel32.dll")] private static extern uint FormatMessageW(int dwFlags, IntPtr lpSource, int dwMessageId, int dwLanguageId, ref IntPtr lpBuffer, int nSize, IntPtr Arguments); } public class ServiceEventArgs : EventArgs { public Type ServiceType { get; private set; } public object Instance { get; private set; } public ServiceEventArgs(Type serviceType, object serviceInstance) { ServiceType = serviceType; Instance = serviceInstance; } } [AttributeUsage(AttributeTargets.Interface)] internal class ShadowAttribute : Attribute { private Type type; public Type Type => type; public ShadowAttribute(Type typeOfTheAssociatedShadow) { type = typeOfTheAssociatedShadow; } public static ShadowAttribute Get(Type type) { return type.GetTypeInfo().GetCustomAttribute<ShadowAttribute>(); } } internal class ShadowContainer : DisposeBase { private readonly Dictionary<Guid, CppObjectShadow> guidToShadow = new Dictionary<Guid, CppObjectShadow>(); private static readonly Dictionary<Type, List<Type>> typeToShadowTypes = new Dictionary<Type, List<Type>>(); private IntPtr guidPtr; public IntPtr[] Guids { get; private set; } public unsafe void Initialize(ICallbackable callbackable) { callbackable.Shadow = this; Type type = callbackable.GetType(); List<Type> value; lock (typeToShadowTypes) { if (!typeToShadowTypes.TryGetValue(type, out value)) { IEnumerable<Type> implementedInterfaces = type.GetTypeInfo().ImplementedInterfaces; value = new List<Type>(); value.AddRange(implementedInterfaces); typeToShadowTypes.Add(type, value); foreach (Type item in implementedInterfaces) { if (ShadowAttribute.Get(item) == null) { value.Remove(item); continue; } foreach (Type implementedInterface in item.GetTypeInfo().ImplementedInterfaces) { value.Remove(implementedInterface); } } } } CppObjectShadow cppObjectShadow = null; foreach (Type item2 in value) { CppObjectShadow cppObjectShadow2 = (CppObjectShadow)Activator.CreateInstance(ShadowAttribute.Get(item2).Type); cppObjectShadow2.Initialize(callbackable); if (cppObjectShadow == null) { cppObjectShadow = cppObjectShadow2; guidToShadow.Add(ComObjectShadow.IID_IUnknown, cppObjectShadow); } guidToShadow.Add(Utilities.GetGuidFromType(item2), cppObjectShadow2); foreach (Type implementedInterface2 in item2.GetTypeInfo().ImplementedInterfaces) { if (ShadowAttribute.Get(implementedInterface2) != null) { guidToShadow.Add(Utilities.GetGuidFromType(implementedInterface2), cppObjectShadow2); } } } int num = 0; foreach (Guid key in guidToShadow.Keys) { if (key != Utilities.GetGuidFromType(typeof(IInspectable)) && key != Utilities.GetGuidFromType(typeof(IUnknown))) { num++; } } guidPtr = Marshal.AllocHGlobal(Utilities.SizeOf<Guid>() * num); Guids = new IntPtr[num]; int num2 = 0; Guid* ptr = (Guid*)(void*)guidPtr; foreach (Guid key2 in guidToShadow.Keys) { if (!(key2 == Utilities.GetGuidFromType(typeof(IInspectable))) && !(key2 == Utilities.GetGuidFromType(typeof(IUnknown)))) { ptr[num2] = key2; Guids[num2] = new IntPtr(ptr + num2); num2++; } } } internal IntPtr Find(Type type) { return Find(Utilities.GetGuidFromType(type)); } internal IntPtr Find(Guid guidType) { return FindShadow(guidType)?.NativePointer ?? IntPtr.Zero; } internal CppObjectShadow FindShadow(Guid guidType) { guidToShadow.TryGetValue(guidType, out var value); return value; } protected override void Dispose(bool disposing) { if (!disposing) { return; } foreach (CppObjectShadow value in guidToShadow.Values) { value.Dispose(); } guidToShadow.Clear(); if (guidPtr != IntPtr.Zero) { Marshal.FreeHGlobal(guidPtr); guidPtr = IntPtr.Zero; } } } public class SharpDXException : Exception { private ResultDescriptor descriptor; public Result ResultCode => descriptor.Result; public ResultDescriptor Descriptor => descriptor; public SharpDXException() : base("A SharpDX exception occurred.") { descriptor = ResultDescriptor.Find(Result.Fail); base.HResult = (int)Result.Fail; } public SharpDXException(Result result) : this(ResultDescriptor.Find(result)) { base.HResult = (int)result; } public SharpDXException(ResultDescriptor descriptor) : base(descriptor.ToString()) { this.descriptor = descriptor; base.HResult = (int)descriptor.Result; } public SharpDXException(Result result, string message) : base(message) { descriptor = ResultDescriptor.Find(result); base.HResult = (int)result; } public SharpDXException(Result result, string message, params object[] args) : base(string.Format(CultureInfo.InvariantCulture, message, args)) { descriptor = ResultDescriptor.Find(result); base.HResult = (int)result; } public SharpDXException(string message, params object[] args) : this(Result.Fail, message, args) { } public SharpDXException(string message, Exception innerException, params object[] args) : base(string.Format(CultureInfo.InvariantCulture, message, args), innerException) { descriptor = ResultDescriptor.Find(Result.Fail); base.HResult = (int)Result.Fail; } } public struct Size2 : IEquatable<Size2> { public static readonly Size2 Zero = new Size2(0, 0); public static readonly Size2 Empty = Zero; public int Width; public int Height; public Size2(int width, int height) { Width = width; Height = height; } public bool Equals(Size2 other) { if (other.Width == Width) { return other.Height == Height; } return false; } public override bool Equals(object obj) { if (!(obj is Size2)) { return false; } return Equals((Size2)obj); } public override int GetHashCode() { return (Width * 397) ^ Height; } public static bool operator ==(Size2 left, Size2 right) { return left.Equals(right); } public static bool operator !=(Size2 left, Size2 right) { return !left.Equals(right); } public override string ToString() { return $"({Width},{Height})"; } } public struct Size2F : IEquatable<Size2F> { public static readonly Size2F Zero = new Size2F(0f, 0f); public static readonly Size2F Empty = Zero; public float Width; public float Height; public Size2F(float width, float height) { Width = width; Height = height; } public bool Equals(Size2F other) { if (other.Width == Width) { return other.Height == Height; } return false; } public override bool Equals(object obj) { if (!(obj is Size2F)) { return false; } return Equals((Size2F)obj); } public override int GetHashCode() { return (Width.GetHashCode() * 397) ^ Height.GetHashCode(); } public static bool operator ==(Size2F left, Size2F right) { return left.Equals(right); } public static bool operator !=(Size2F left, Size2F right) { return !left.Equals(right); } public override string ToString() { return $"({Width},{Height})"; } } [AttributeUsage(AttributeTargets.All)] public class TagAttribute : Attribute { public string Value { get; private set; } public TagAttribute(string value) { Value = value; } } public delegate void GetValueFastDelegate<T>(object obj, out T value); public delegate void SetValueFastDelegate<T>(object obj, ref T value); public static class Utilities { [Flags] public enum CLSCTX : uint { ClsctxInprocServer = 1u, ClsctxInprocHandler = 2u, ClsctxLocalServer = 4u, ClsctxInprocServer16 = 8u, ClsctxRemoteServer = 0x10u, ClsctxInprocHandler16 = 0x20u, ClsctxReserved1 = 0x40u, ClsctxReserved2 = 0x80u, ClsctxReserved3 = 0x100u, ClsctxReserved4 = 0x200u, ClsctxNoCodeDownload = 0x400u, ClsctxReserved5 = 0x800u, ClsctxNoCustomMarshal = 0x1000u, ClsctxEnableCodeDownload = 0x2000u, ClsctxNoFailureLog = 0x4000u, ClsctxDisableAaa = 0x8000u, ClsctxEnableAaa = 0x10000u, ClsctxFromDefaultContext = 0x20000u, ClsctxInproc = 3u, ClsctxServer = 0x15u, ClsctxAll = 0x17u } public enum CoInit { MultiThreaded = 0, ApartmentThreaded = 2, DisableOle1Dde = 4, SpeedOverMemory = 8 } internal struct Buffer<TElement> { internal TElement[] items; internal int count; internal Buffer(IEnumerable<TElement> source) { TElement[] array = null; int num = 0; if (source is ICollection<TElement> collection) { num = collection.Count; if (num > 0) { array = new TElement[num]; collection.CopyTo(array, 0); } } else { foreach (TElement item in source) { if (array == null) { array = new TElement[4]; } else if (array.Length == num) { TElement[] array2 = new TElement[checked(num * 2)]; Array.Copy(array, 0, array2, 0, num); array = array2; } array[num] = item; num++; } } items = array; count = num; } internal TElement[] ToArray() { if (count == 0) { return new TElement[0]; } if (items.Length == count) { return items; } TElement[] array = new TElement[count]; Array.Copy(items, 0, array, 0, count); return array; } } public unsafe static void CopyMemory(IntPtr dest, IntPtr src, int sizeInBytesToCopy) { Interop.memcpy((void*)dest, (void*)src, sizeInBytesToCopy); } public unsafe static bool CompareMemory(IntPtr from, IntPtr against, int sizeToCompare) { byte* ptr = (byte*)(void*)from; byte* ptr2 = (byte*)(void*)against; for (int num = sizeToCompare >> 3; num > 0; num--) { if (*(long*)ptr != *(long*)ptr2) { return false; } ptr += 8; ptr2 += 8; } for (int num = sizeToCompare & 7; num > 0; num--) { if (*ptr != *ptr2) { return false; } ptr++; ptr2++; } return true; } public unsafe static void ClearMemory(IntPtr dest, byte value, int sizeInBytesToClear) { Interop.memset((void*)dest, value, sizeInBytesToClear); } public static int SizeOf<T>() where T : struct { return Unsafe.SizeOf<T>(); } public static int SizeOf<T>(T[] array) where T : struct { if (array != null) { return array.Length * Unsafe.SizeOf<T>(); } return 0; } public unsafe static void Pin<T>(ref T source, Action<IntPtr> pinAction) where T : struct { fixed (T* ptr = &source) { pinAction((IntPtr)ptr); } } public unsafe static void Pin<T>(T[] source, Action<IntPtr> pinAction) where T : struct { //The blocks IL_0019 are reachable both inside and outside the pinned region starting at IL_000b. ILSpy has duplicated these blocks in order to place them both within and outside the `fixed` statement. IntPtr obj; if (source != null) { fixed (T* ptr = &source[0]) { obj = (IntPtr)ptr; pinAction(obj); return; } } obj = IntPtr.Zero; pinAction(obj); } public unsafe static byte[] ToByteArray<T>(T[] source) where T : struct { if (source == null) { return null; } byte[] array = new byte[SizeOf<T>() * source.Length]; if (source.Length == 0) { return array; } fixed (byte* ptr = array) { void* pDest = ptr; Interop.Write(pDest, source, 0, source.Length); } return array; } public static void Swap<T>(ref T left, ref T right) { T val = left; left = right; right = val; } public unsafe static T Read<T>(IntPtr source) where T : struct { return Unsafe.Read<T>((void*)source); } public unsafe static void Read<T>(IntPtr source, ref T data) where T : struct { data = Unsafe.Read<T>((void*)source); } public unsafe static void ReadOut<T>(IntPtr source, out T data) where T : struct { data = Unsafe.Read<T>((void*)source); } public unsafe static IntPtr ReadAndPosition<T>(IntPtr source, ref T data) where T : struct { return (IntPtr)Interop.Read((void*)source, ref data); } public unsafe static IntPtr Read<T>(IntPtr source, T[] data, int offset, int count) where T : struct { return (IntPtr)Interop.Read((void*)source, data, offset, count); } public unsafe static void Write<T>(IntPtr destination, ref T data) where T : struct { Unsafe.Write((void*)destination, data); } public unsafe static IntPtr WriteAndPosition<T>(IntPtr destination, ref T data) where T : struct { return (IntPtr)Interop.Write((void*)destination, ref data); } public unsafe static IntPtr Write<T>(IntPtr destination, T[] data, int offset, int count) where T : struct { return (IntPtr)Interop.Write((void*)destination, data, offset, count); } public unsafe static void ConvertToIntArray(bool[] array, int* dest) { for (int i = 0; i < array.Length; i++) { dest[i] = (array[i] ? 1 : 0); } } public static RawBool[] ConvertToIntArray(bool[] array) { RawBool[] array2 = new RawBool[array.Length]; for (int i = 0; i < array2.Length; i++) { array2[i] = array[i]; } return array2; } public unsafe static bool[] ConvertToBoolArray(int* array, int length) { bool[] array2 = new bool[length]; for (int i = 0; i < array2.Length; i++) { array2[i] = array[i] != 0; } return array2; } public static bool[] ConvertToBoolArray(RawBool[] array) { bool[] array2 = new bool[array.Length]; for (int i = 0; i < array2.Length; i++) { array2[i] = array[i]; } return array2; } public static Guid GetGuidFromType(Type type) { return type.GetTypeInfo().GUID; } public static bool IsAssignableToGenericType(Type givenType, Type genericType) { foreach (Type implementedInterface in givenType.GetTypeInfo().ImplementedInterfaces) { if (implementedInterface.GetTypeInfo().IsGenericType && implementedInterface.GetGenericTypeDefinition() == genericType) { return true; } } if (givenType.GetTypeInfo().IsGenericType && givenType.GetGenericTypeDefinition() == genericType) { return true; } Type baseType = givenType.GetTypeInfo().BaseType; if (baseType == null) { return false; } return IsAssignableToGenericType(baseType, genericType); } public unsafe static IntPtr AllocateMemory(int sizeInBytes, int align = 16) { int num = align - 1; IntPtr intPtr = Marshal.AllocHGlobal(sizeInBytes + num + IntPtr.Size); long num2 = (long)((byte*)(void*)intPtr + sizeof(void*) + num) & (long)(~num); *(IntPtr*)((nint)num2 + (nint)(-1) * (nint)sizeof(IntPtr)) = intPtr; return new IntPtr((void*)num2); } public static IntPtr AllocateClearedMemory(int sizeInBytes, byte clearValue = 0, int align = 16) { IntPtr intPtr = AllocateMemory(sizeInBytes, align); ClearMemory(intPtr, clearValue, sizeInBytes); return intPtr; } public static bool IsMemoryAligned(IntPtr memoryPtr, int align = 16) { return (memoryPtr.ToInt64() & (align - 1)) == 0; } public unsafe static void FreeMemory(IntPtr alignedBuffer) { if (!(alignedBuffer == IntPtr.Zero)) { Marshal.FreeHGlobal(*(IntPtr*)((byte*)(void*)alignedBuffer + (nint)(-1) * (nint)sizeof(IntPtr))); } } public static string PtrToStringAnsi(IntPtr pointer, int maxLength) { string text = Marshal.PtrToStringAnsi(pointer); if (text != null && text.Length > maxLength) { text = text.Substring(0, maxLength); } return text; } public static string PtrToStringUni(IntPtr pointer, int maxLength) { string text = Marshal.PtrToStringUni(pointer); if (text != null && text.Length > maxLength) { text = text.Substring(0, maxLength); } return text; } public static IntPtr StringToHGlobalAnsi(string s) { return Marshal.StringToHGlobalAnsi(s); } public static IntPtr StringToHGlobalUni(string s) { return Marshal.StringToHGlobalUni(s); } public static IntPtr StringToCoTaskMemUni(string s) { if (s == null) { return IntPtr.Zero; } int num = (s.Length + 1) * 2; if (num < s.Length) { throw new ArgumentOutOfRangeException("s"); } IntPtr intPtr = Marshal.AllocCoTaskMem(num); if (intPtr == IntPtr.Zero) { throw new OutOfMemoryException(); } CopyStringToUnmanaged(intPtr, s); return intPtr; } private unsafe static void CopyStringToUnmanaged(IntPtr ptr, string str) { fixed (char* value = str) { CopyMemory(ptr, new IntPtr(value), (str.Length + 1) * 2); } } public static IntPtr GetIUnknownForObject(object obj) { if (obj != null) { return Marshal.GetIUnknownForObject(obj); } return IntPtr.Zero; } public static object GetObjectForIUnknown(IntPtr iunknownPtr) { if (!(iunknownPtr == IntPtr.Zero)) { return Marshal.GetObjectForIUnknown(iunknownPtr); } return null; } public static string Join<T>(string separator, T[] array) { StringBuilder stringBuilder = new StringBuilder(); if (array != null) { for (int i = 0; i < array.Length; i++) { if (i > 0) { stringBuilder.Append(separator); } stringBuilder.Append(array[i]); } } return stringBuilder.ToString(); } public static string Join(string separator, IEnumerable elements) { List<string> list = new List<string>(); foreach (object element in elements) { list.Add(element.ToString()); } StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < list.Count; i++) { string value = list[i]; if (i > 0) { stringBuilder.Append(separator); } stringBuilder.Append(value); } return stringBuilder.ToString(); } public static string Join(string separator, IEnumerator elements) { List<string> list = new List<string>(); while (elements.MoveNext()) { list.Add(elements.Current.ToString()); } StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < list.Count; i++) { string value = list[i]; if (i > 0) { stringBuilder.Append(separator); } stringBuilder.Append(value); } return stringBuilder.ToString(); } public static string BlobToString(Blob blob) { if (blob == null) { return null; } string? result = Marshal.PtrToStringAnsi(blob.BufferPointer); blob.Dispose(); return result; } public unsafe static IntPtr IntPtrAdd(IntPtr ptr, int offset) { return new IntPtr((byte*)(void*)ptr + offset); } public static byte[] ReadStream(Stream stream) { int readLength = 0; return ReadStream(stream, ref readLength); } public static byte[] ReadStream(Stream stream, ref int readLength) { if (readLength == 0) { readLength = (int)(stream.Length - stream.Position); } int num = readLength; if (num == 0) { return new byte[0]; } byte[] array = new byte[num]; int num2 = 0; if (num > 0) { do { num2 += stream.Read(array, num2, readLength - num2); } while (num2 < readLength); } return array; } public static bool Compare(IEnumerable left, IEnumerable right) { if (left == right) { return true; } if (left == null || right == null) { return false; } return Compare(left.GetEnumerator(), right.GetEnumerator()); } public static bool Compare(IEnumerator leftIt, IEnumerator rightIt) { if (leftIt == rightIt) { return true; } if (leftIt == null || rightIt == null) { return false; } bool flag; bool flag2; while (true) { flag = leftIt.MoveNext(); flag2 = rightIt.MoveNext(); if (!flag || !flag2) { break; } if (!object.Equals(leftIt.Current, rightIt.Current)) { return false; } } if (flag != flag2) { return false; } return true; } public static bool Compare(ICollection left, ICollection right) { if (left == right) { return true; } if (left == null || right == null) { return false; } if (left.Count != right.Count) { return false; } int num = 0; IEnumerator enumerator = left.GetEnumerator(); IEnumerator enumerator2 = right.GetEnumerator(); while (enumerator.MoveNext() && enumerator2.MoveNext()) { if (!object.Equals(enumerator.Current, enumerator2.Current)) { return false; } num++; } if (num != left.Count) { return false; } return true; } public static T GetCustomAttribute<T>(MemberInfo memberInfo, bool inherited = false) where T : Attribute { return memberInfo.GetCustomAttribute<T>(inherited); } public static IEnumerable<T> GetCustomAttributes<T>(MemberInfo memberInfo, bool inherited = false) where T : Attribute { return memberInfo.GetCustomAttributes<T>(inherited); } public static bool IsAssignableFrom(Type toType, Type fromType) { return toType.GetTypeInfo().IsAssignableFrom(fromType.GetTypeInfo()); } public static bool IsEnum(Type typeToTest) { return typeToTest.GetTypeInfo().IsEnum; } public static bool IsValueType(Type typeToTest) { return typeToTest.GetTypeInfo().IsValueType; } private static MethodInfo GetMethod(Type type, string name, Type[] typeArgs) { foreach (MethodInfo declaredMethod in type.GetTypeInfo().GetDeclaredMethods(name)) { if (declaredMethod.GetParameters().Length != typeArgs.Length) { continue; } ParameterInfo[] parameters = declaredMethod.GetParameters(); bool flag = true; for (int i = 0; i < typeArgs.Length; i++) { if (parameters[i].ParameterType != typeArgs[i]) { flag = false; break; } } if (flag) { return declaredMethod; } } return null; } public static GetValueFastDelegate<T> BuildPropertyGetter<T>(Type customEffectType, PropertyInfo propertyInfo) { ParameterExpression parameterExpression = Expression.Parameter(typeof(T).MakeByRefType()); ParameterExpression parameterExpression2 = Expression.Parameter(typeof(object)); MemberExpression memberExpression = Expression.Property(Expression.Convert(parameterExpression2, customEffectType), propertyInfo); Expression right = ((!(propertyInfo.PropertyType == typeof(bool))) ? ((Expression)Expression.Convert(memberExpression, typeof(T))) : ((Expression)Expression.Condition(memberExpression, Expression.Constant(1), Expression.Constant(0)))); return Expression.Lambda<GetValueFastDelegate<T>>(Expression.Assign(parameterExpression, right), new ParameterExpression[2] { parameterExpression2, parameterExpression }).Compile(); } public static SetValueFastDelegate<T> BuildPropertySetter<T>(Type customEffectType, PropertyInfo propertyInfo) { ParameterExpression parameterExpression = Expression.Parameter(typeof(T).MakeByRefType()); ParameterExpression parameterExpression2 = Expression.Parameter(typeof(object)); MemberExpression left = Expression.Property(Expression.Convert(parameterExpression2, customEffectType), propertyInfo); Expression right = ((!(propertyInfo.PropertyType == typeof(bool))) ? ((Expression)Expression.Convert(parameterExpression, propertyInfo.PropertyType)) : ((Expression)Expression.NotEqual(parameterExpression, Expression.Constant(0)))); return Expression.Lambda<SetValueFastDelegate<T>>(Expression.Assign(left, right), new ParameterExpression[2] { parameterExpression2, parameterExpression }).Compile(); } private static MethodInfo FindExplicitConverstion(Type sourceType, Type targetType) { if (sourceType == targetType) { return null; } List<MethodInfo> list = new List<MethodInfo>(); Type type = sourceType; while (type != null) { list.AddRange(type.GetTypeInfo().DeclaredMethods); type = type.GetTypeInfo().BaseType; } type = targetType; while (type != null) { list.AddRange(type.GetTypeInfo().DeclaredMethods); type = type.GetTypeInfo().BaseType; } foreach (MethodInfo item in list) { if (item.Name == "op_Explicit" && item.ReturnType == targetType && IsAssignableFrom(item.GetParameters()[0].ParameterType, sourceType)) { return item; } } return null; } [DllImport("ole32.dll", ExactSpelling = true)] private static extern Result CoCreateInstance([In][MarshalAs(UnmanagedType.LPStruct)] Guid rclsid, IntPtr pUnkOuter, CLSCTX dwClsContext, [In][MarshalAs(UnmanagedType.LPStruct)] Guid riid, out IntPtr comObject); internal static void CreateComInstance(Guid clsid, CLSCTX clsctx, Guid riid, ComObject comObject) { CoCreateInstance(clsid, IntPtr.Zero, clsctx, riid, out var comObject2).CheckError(); comObject.NativePointer = comObject2; } internal static bool TryCreateComInstance(Guid clsid, CLSCTX clsctx, Guid riid, ComObject comObject) { IntPtr comObject2; Result result = CoCreateInstance(clsid, IntPtr.Zero, clsctx, riid, out comObject2); comObject.NativePointer = comObject2; return result.Success; } [DllImport("kernel32.dll", SetLastError = true)] internal static extern bool CloseHandle(IntPtr handle); public static IntPtr GetProcAddress(IntPtr handle, string dllFunctionToImport) { IntPtr procAddress_ = GetProcAddress_(handle, dllFunctionToImport); if (procAddress_ == IntPtr.Zero) { throw new SharpDXException(dllFunctionToImport); } return procAddress_; } [DllImport("kernel32", CharSet = CharSet.Ansi, EntryPoint = "GetProcAddress", ExactSpelling = true, SetLastError = true)] private static extern IntPtr GetProcAddress_(IntPtr hModule, string procName); public static int ComputeHashFNVModified(byte[] data) { uint num = 2166136261u; foreach (byte b in data) { num = (num ^ b) * 16777619; } num += num << 13; num ^= num >> 7; num += num << 3; num ^= num >> 17; return (int)(num + (num << 5)); } public static void Dispose<T>(ref T comObject) where T : class, IDisposable { if (comObject != null) { comObject.Dispose(); comObject = null; } } public static T[] ToArray<T>(IEnumerable<T> source) { return new Buffer<T>(source).ToArray(); } public static bool Any<T>(IEnumerable<T> source) { return source.GetEnumerator().MoveNext(); } public static IEnumerable<TResult> SelectMany<TSource, TResult>(IEnumerable<TSource> source, Func<TSource, IEnumerable<TResult>> selector) { foreach (TSource item in source) { foreach (TResult item2 in selector(item)) { yield return item2; } } } public static IEnumerable<TSource> Distinct<TSource>(IEnumerable<TSource> source, IEqualityComparer<TSource> comparer = null) { if (comparer == null) { comparer = EqualityComparer<TSource>.Default; } Dictionary<TSource, object> values = new Dictionary<TSource, object>(comparer); foreach (TSource item in source) { if (!values.ContainsKey(item)) { values.Add(item, null); yield return item; } } } public static bool IsTypeInheritFrom(Type type, string parentType) { while (type != null) { if (type.FullName == parentType) { return true; } type = type.GetTypeInfo().BaseType; } return false; } } } namespace SharpDX.Win32 { public struct BitmapInfoHeader { public int SizeInBytes; public int Width; public int Height; public short PlaneCount; public short BitCount; public int Compression; public int SizeImage; public int XPixelsPerMeter; public int YPixelsPerMeter; public int ColorUsedCount; public int ColorImportantCount; } public class ComBaseStreamNative { public IDisposable Callback { get; set; } } internal class ComStreamBaseShadow : ComObjectShadow { internal class ComStreamBaseVtbl : ComObjectVtbl { [UnmanagedFunctionPointer(CallingConvention.StdCall)] private delegate int ReadDelegate(IntPtr thisPtr, IntPtr buffer, int sizeOfBytes, out int bytesRead); [UnmanagedFunctionPointer(CallingConvention.StdCall)] private delegate int WriteDelegate(IntPtr thisPtr, IntPtr buffer, int sizeOfBytes, out int bytesWrite); public ComStreamBaseVtbl(int numberOfMethods) : base(numberOfMethods + 2) { AddMethod(new ReadDelegate(ReadImpl)); AddMethod(new WriteDelegate(WriteImpl)); } private static int ReadImpl(IntPtr thisPtr, IntPtr buffer, int sizeOfBytes, out int bytesRead) { bytesRead = 0; try { IStream stream = (IStream)CppObjectShadow.ToShadow<ComStreamBaseShadow>(thisPtr).Callback; bytesRead = stream.Read(buffer, sizeOfBytes); } catch (Exception ex) { return (int)Result.GetResultFromException(ex); } return Result.Ok.Code; } private static int WriteImpl(IntPtr thisPtr, IntPtr buffer, int sizeOfBytes, out int bytesWrite) { bytesWrite = 0; try { IStream stream = (IStream)CppObjectShadow.ToShadow<ComStreamBaseShadow>(thisPtr).Callback; bytesWrite = stream.Write(buffer, sizeOfBytes); } catch (Exception ex) { return (int)Result.GetResultFromException(ex); } return Result.Ok.Code; } } private static readonly ComStreamBaseVtbl Vtbl = new ComStreamBaseVtbl(0); protected override CppObjectVtbl GetVtbl => Vtbl; } [Guid("0000000c-0000-0000-C000-000000000046")] internal class ComStreamProxy : CallbackBase, IStream, IStreamBase, IUnknown, ICallbackable, IDisposable { private Stream sourceStream; private byte[] tempBuffer = new byte[4096]; public ComStreamProxy(Stream sourceStream) { this.sourceStream = sourceStream; } public unsafe int Read(IntPtr buffer, int numberOfBytesToRead) { int num = 0; while (numberOfBytesToRead > 0) { int count = Math.Min(numberOfBytesToRead, tempBuffer.Length); int num2 = sourceStream.Read(tempBuffer, 0, count); if (num2 == 0) { return num; } Utilities.Write(new IntPtr(num + (byte*)(void*)buffer), tempBuffer, 0, num2); numberOfBytesToRead -= num2; num += num2; } return num; } public unsafe int Write(IntPtr buffer, int numberOfBytesToWrite) { int num = 0; while (numberOfBytesToWrite > 0) { int num2 = Math.Min(numberOfBytesToWrite, tempBuffer.Length); Utilities.Read(new IntPtr(num + (byte*)(void*)buffer), tempBuffer, 0, num2); sourceStream.Write(tempBuffer, 0, num2); numberOfBytesToWrite -= num2; num += num2; } return num; } public long Seek(long offset, SeekOrigin origin) { return sourceStream.Seek(offset, origin); } public void SetSize(long newSize) { } public unsafe long CopyTo(IStream streamDest, long numberOfBytesToCopy, out long bytesWritten) { bytesWritten = 0L; fixed (byte* ptr = tempBuffer) { void* ptr2 = ptr; while (numberOfBytesToCopy > 0) { int count = (int)Math.Min(numberOfBytesToCopy, tempBuffer.Length); int num = sourceStream.Read(tempBuffer, 0, count); if (num == 0) { break; } streamDest.Write((IntPtr)ptr2, num); numberOfBytesToCopy -= num; bytesWritten += num; } } return bytesWritten; } public void Commit(CommitFlags commitFlags) { sourceStream.Flush(); } public void Revert() { throw new NotImplementedException(); } public void LockRegion(long offset, long numberOfBytesToLock, LockType dwLockType) { throw new NotImplementedException(); } public void UnlockRegion(long offset, long numberOfBytesToLock, LockType dwLockType) { throw new NotImplementedException(); } public StorageStatistics GetStatistics(StorageStatisticsFlags storageStatisticsFlags) { long num = sourceStream.Length; if (num == 0L) { num = 2147483647L; } StorageStatistics result = default(StorageStatistics); result.Type = 2; result.CbSize = num; result.GrfLocksSupported = 2; result.GrfMode = 2; return result; } public IStream Clone() { return new ComStreamProxy(sourceStream); } protected override void Dispose(bool disposing) { sourceStream = null; base.Dispose(disposing); } } internal class ComStreamShadow : ComStreamBaseShadow { private class ComStreamVtbl : ComStreamBaseVtbl { [UnmanagedFunctionPointer(CallingConvention.StdCall)] private delegate int SeekDelegate(IntPtr thisPtr, long offset, SeekOrigin origin, IntPtr newPosition); [UnmanagedFunctionPointer(CallingConvention.StdCall)] private delegate Result SetSizeDelegate(IntPtr thisPtr, long newSize); [UnmanagedFunctionPointer(CallingConvention.StdCall)] private delegate int CopyToDelegate(IntPtr thisPtr, IntPtr streamPointer, long numberOfBytes, out long numberOfBytesRead, out long numberOfBytesWritten); [UnmanagedFunctionPointer(CallingConvention.StdCall)] private delegate Result CommitDelegate(IntPtr thisPtr, CommitFlags flags); [UnmanagedFunctionPointer(CallingConvention.StdCall)] private delegate Result RevertDelegate(IntPtr thisPtr); [UnmanagedFunctionPointer(CallingConvention.StdCall)] private delegate Result LockRegionDelegate(IntPtr thisPtr, long offset, long numberOfBytes, LockType lockType); [UnmanagedFunctionPointer(CallingConvention.StdCall)] private delegate Result UnlockRegionDelegate(IntPtr thisPtr, long offset, long numberOfBytes, LockType lockType); [UnmanagedFunctionPointer(CallingConvention.StdCall)] private delegate Result StatDelegate(IntPtr thisPtr, ref StorageStatistics.__Native statisticsPtr, StorageStatisticsFlags flags); [UnmanagedFunctionPointer(CallingConvention.StdCall)] private delegate Result CloneDelegate(IntPtr thisPtr, out IntPtr streamPointer); public ComStreamVtbl() : base(9) { AddMethod(new SeekDelegate(SeekImpl)); AddMethod(new SetSizeDelegate(SetSizeImpl)); AddMethod(new CopyToDelegate(CopyToImpl)); AddMethod(new CommitDelegate(CommitImpl)); AddMethod(new RevertDelegate(RevertImpl)); AddMethod(new LockRegionDelegate(LockRegionImpl)); AddMethod(new UnlockRegionDelegate(UnlockRegionImpl)); AddMethod(new StatDelegate(StatImpl)); AddMethod(new CloneDelegate(CloneImpl)); } private unsafe static int SeekImpl(IntPtr thisPtr, long offset, SeekOrigin origin, IntPtr newPosition) { try { long num = ((IStream)CppObjectShadow.ToShadow<ComStreamShadow>(thisPtr).Callback).Seek(offset, origin); if (newPosition != IntPtr.Zero) { *(long*)(void*)newPosition = num; } } catch (Exception ex) { return (int)Result.GetResultFromException(ex); } return Result.Ok.Code; } private static Result SetSizeImpl(IntPtr thisPtr, long newSize) { Result result = Result.Ok; try { ((IStream)CppObjectShadow.ToShadow<ComStreamShadow>(thisPtr).Callback).SetSize(newSize); } catch (SharpDXException ex) { result = ex.ResultCode; } catch (Exception) { result = Result.Fail.Code; } return result; } private static int CopyToImpl(IntPtr thisPtr, IntPtr streamPointer, long numberOfBytes, out long numberOfBytesRead, out long numberOfBytesWritten) { numberOfBytesRead = 0L; numberOfBytesWritten = 0L; try { IStream stream = (IStream)CppObjectShadow.ToShadow<ComStreamShadow>(thisPtr).Callback; numberOfBytesRead = stream.CopyTo(new ComStream(streamPointer), numberOfBytes, out numberOfBytesWritten); } catch (Exception ex) { return (int)Result.GetResultFromException(ex); } return Result.Ok.Code; } private static Result CommitImpl(IntPtr thisPtr, CommitFlags flags) { Result result = Result.Ok; try { ((IStream)CppObjectShadow.ToShadow<ComStreamShadow>(thisPtr).Callback).Commit(flags); } catch (SharpDXException ex) { result = ex.ResultCode; } catch (Exception) { result = Result.Fail.Code; } return result; } private static Result RevertImpl(IntPtr thisPtr) { Result result = Result.Ok; try { ((IStream)CppObjectShadow.ToShadow<ComStreamShadow>(thisPtr).Callback).Revert(); } catch (SharpDXException ex) { result = ex.ResultCode; } catch (Exception) { result = Result.Fail.Code; } return result; } private static Result LockRegionImpl(IntPtr thisPtr, long offset, long numberOfBytes, LockType lockType) { Result result = Result.Ok; try { ((IStream)CppObjectShadow.ToShadow<ComStreamShadow>(thisPtr).Callback).LockRegion(offset, numberOfBytes, lockType); } catch (SharpDXException ex) { result = ex.ResultCode; } catch (Exception) { result = Result.Fail.Code; } return result; } private static Result UnlockRegionImpl(IntPtr thisPtr, long offset, long numberOfBytes, LockType lockType) { Result result = Result.Ok; try { ((IStream)CppObjectShadow.ToShadow<ComStreamShadow>(thisPtr).Callback).UnlockRegion(offset, numberOfBytes, lockType); } catch (SharpDXException ex) { result = ex.ResultCode; } catch (Exception) { result = Result.Fail.Code; } return result; } private static Result StatImpl(IntPtr thisPtr, ref StorageStatistics.__Native statisticsPtr, StorageStatisticsFlags flags) { try { ((IStream)CppObjectShadow.ToShadow<ComStreamShadow>(thisPtr).Callback).GetStatistics(flags).__MarshalTo(ref statisticsPtr); } catch (SharpDXException ex) { return ex.ResultCode; } catch (Exception) { return Result.Fail.Code; } return Result.Ok; } private static Result CloneImpl(IntPtr thisPtr, out IntPtr streamPointer) { streamPointer = IntPtr.Zero; Result result = Result.Ok; try { IStream stream = ((IStream)CppObjectShadow.ToShadow<ComStreamShadow>(thisPtr).Callback).Clone(); streamPointer = ToIntPtr(stream); } catch (SharpDXException ex) { result = ex.ResultCode; } catch (Exception) { result = Result.Fail.Code; } return result; } } private static readonly ComStreamVtbl Vtbl = new ComStreamVtbl(); protected override CppObjectVtbl GetVtbl => Vtbl; public static IntPtr ToIntPtr(IStream stream) { return CppObject.ToCallbackPtr<IStream>(stream); } } internal class ComStringEnumerator : IEnumerator<string>, IEnumerator, IDisposable, IEnumerable<string>, IEnumerable { private readonly IEnumString enumString; private string current; public string Current => current; object IEnumerator.Current => Current; public ComStringEnumerator(IntPtr ptrToIEnumString) { enumString = (IEnumString)Marshal.GetObjectForIUnknown(ptrToIEnumString); } public void Dispose() { } public unsafe bool MoveNext() { string[] array = new string[1]; int num = 0; bool flag = enumString.Next(1, array, new IntPtr(&num)) == Result.Ok.Code; current = (flag ? array[0] : null); return flag; } public void Reset() { enumString.Reset(); } public IEnumerator<string> GetEnumerator() { return this; } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } } public class ErrorCodeHelper { public static Result ToResult(ErrorCode errorCode) { return ToResult((int)errorCode); } public static Result ToResult(int errorCode) { return new Result((errorCode <= 0) ? ((uint)errorCode) : (((uint)errorCode & 0xFFFFu) | 0x80070000u)); } } [Shadow(typeof(ComStreamShadow))] [Guid("0000000c-0000-0000-C000-000000000046")] public interface IStream : IStreamBase, IUnknown, ICallbackable, IDisposable { long Seek(long offset, SeekOrigin origin); void SetSize(long newSize); long CopyTo(IStream streamDest, long numberOfBytesToCopy, out long bytesWritten); void Commit(CommitFlags commitFlags); void Revert(); void LockRegion(long offset, long numberOfBytesToLock, LockType dwLockType); void UnlockRegion(long offset, long numberOfBytesToLock, LockType dwLockType); StorageStatistics GetStatistics(StorageStatisticsFlags storageStatisticsFlags); IStream Clone(); } [Shadow(typeof(ComStreamBaseShadow))] [Guid("0c733a30-2a1c-11ce-ade5-00aa0044773d")] public interface IStreamBase : IUnknown, ICallbackable, IDisposable { int Read(IntPtr buffer, int numberOfBytesToRead); int Write(IntPtr buffer, int numberOfBytesToRead); } [CompilerGenerated] internal class NamespaceDoc { } public struct NativeMessage { public IntPtr handle; public uint msg; public IntPtr wParam; public IntPtr lParam; public uint time; public RawPoint p; } public class PropertyBag : ComObject { [StructLayout(LayoutKind.Sequential, Pack = 1)] private struct PROPBAG2 : IDisposable { internal uint type; internal ushort vt; internal ushort cfType; internal IntPtr dwHint; internal IntPtr pstrName; internal Guid clsid; public string Name { get { return Marshal.PtrToStringUni(pstrName); } set { pstrName = Marshal.StringToCoTaskMemUni(value); } } public void Dispose() { if (pstrName != IntPtr.Zero) { Marshal.FreeCoTaskMem(pstrName); pstrName = IntPtr.Zero; } } } [ComImport] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] [Guid("22F55882-280B-11D0-A8A9-00A0C90C2004")] private interface IPropertyBag2 { [PreserveSig] Result Read([In] int cProperties, [In] ref PROPBAG2 pPropBag, IntPtr pErrLog, out object pvarValue, out Result phrError); [PreserveSig] Result Write([In] int cProperties, [In] ref PROPBAG2 pPropBag, ref object value); [PreserveSig] Result CountProperties(out int pcProperties); [PreserveSig] Result GetPropertyInfo([In] int iProperty, [In] int cProperties, out PROPBAG2 pPropBag, out int pcProperties); [PreserveSig] Result LoadObject([In][MarshalAs(UnmanagedType.LPWStr)] string pstrName, [In] uint dwHint, [In][MarshalAs(UnmanagedType.IUnknown)] object pUnkObject, IntPtr pErrLog); } private IPropertyBag2 nativePropertyBag; public int Count { get { CheckIfInitialized(); nativePropertyBag.CountProperties(out var pcProperties); return pcProperties; } } public string[] Keys { get { CheckIfInitialized(); List<string> list = new List<string>(); for (int i = 0; i < Count; i++) { nativePropertyBag.GetPropertyInfo(i, 1, out var pPropBag, out var _); list.Add(pPropBag.Name); } return list.ToArray(); } } public PropertyBag(IntPtr propertyBagPointer) : base(propertyBagPointer) { } protected override void NativePointerUpdated(IntPtr oldNativePointer) { base.NativePointerUpdated(oldNativePointer); if (base.NativePointer != IntPtr.Zero) { nativePropertyBag = (IPropertyBag2)Marshal.GetObjectForIUnknown(base.NativePointer); } else { nativePropertyBag = null; } } private void CheckIfInitialized() { if (nativePropertyBag == null) { throw new InvalidOperationException("This instance is not bound to an unmanaged IPropertyBag2"); } } public object Get(string name) { CheckIfInitialized(); PROPBAG2 pROPBAG = default(PROPBAG2); pROPBAG.Name = name; PROPBAG2 pPropBag = pROPBAG; if (nativePropertyBag.Read(1, ref pPropBag, IntPtr.Zero, out var pvarValue, out var phrError).Failure || phrError.Failure) { throw new InvalidOperationException(string.Format(CultureInfo.InvariantCulture, "Property with name [{0}] is not valid for this instance", name)); } pPropBag.Dispose(); return pvarValue; } public T1 Get<T1, T2>(PropertyBagKey<T1, T2> propertyKey) { return (T1)Convert.ChangeType(Get(propertyKey.Name), typeof(T1)); } public void Set(string name, object value) { CheckIfInitialized(); object obj = Get(name); value = Convert.ChangeType(value, (obj == null) ? value.GetType() : obj.GetType()); PROPBAG2 pROPBAG = default(PROPBAG2); pROPBAG.Name = name; PROPBAG2 pPropBag = pROPBAG; IPropertyBag2 propertyBag = nativePropertyBag; object value2 = value; propertyBag.Write(1, ref pPropBag, ref value2).CheckError(); pPropBag.Dispose(); } public void Set<T1, T2>(PropertyBagKey<T1, T2> propertyKey, T1 value) { Set(propertyKey.Name, value); } } public class PropertyBagKey<T1, T2> { public string Name { get; private set; } public PropertyBagKey(string name) { Name = name; } } public struct SecurityAttributes { public int Length; public IntPtr Descriptor; private int inheritHandle; public bool InheritHandle { get { return inheritHandle != 0; } set { inheritHandle = (value ? 1 : 0); } } } public struct Variant { [StructLayout(LayoutKind.Explicit)] private struct VariantValue { public struct CurrencyLowHigh { public uint LowValue; public int HighValue; } [StructLayout(LayoutKind.Explicit)] public struct CurrencyValue { [FieldOffset(0)] public CurrencyLowHigh LowHigh; [FieldOffset(0)] public long longValue; } public struct RecordValue
plugins/OverlayDearImGui.Shared/System.Runtime.CompilerServices.Unsafe.dll
Decompiled a month agousing System; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; [assembly: AssemblyCopyright("© Microsoft Corporation. All rights reserved.")] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: AssemblyFileVersion("4.0.0.0")] [assembly: AssemblyInformationalVersion("4.0.0.0")] [assembly: AssemblyTitle("System.Runtime.CompilerServices.Unsafe")] [assembly: AssemblyDescription("System.Runtime.CompilerServices.Unsafe")] [assembly: AssemblyMetadata(".NETFrameworkAssembly", "")] [assembly: AssemblyMetadata("Serviceable", "True")] [assembly: CompilationRelaxations(8)] [assembly: AssemblyCompany("Microsoft Corporation")] [assembly: AssemblyProduct("Microsoft® .NET Framework")] [assembly: CLSCompliant(false)] [assembly: AssemblyVersion("4.0.3.0")] namespace System.Runtime.CompilerServices { public static class Unsafe : Object { [MethodImpl(256)] [NonVersionable] public unsafe static T Read<T>(void* source) { return Unsafe.Read<T>(source); } [MethodImpl(256)] [NonVersionable] public unsafe static T ReadUnaligned<T>(void* source) { return Unsafe.ReadUnaligned<T>(source); } [MethodImpl(256)] [NonVersionable] public static T ReadUnaligned<T>(ref byte source) { return Unsafe.ReadUnaligned<T>(ref source); } [MethodImpl(256)] [NonVersionable] public unsafe static void Write<T>(void* destination, T value) { Unsafe.Write(destination, value); } [MethodImpl(256)] [NonVersionable] public unsafe static void WriteUnaligned<T>(void* destination, T value) { Unsafe.WriteUnaligned(destination, value); } [MethodImpl(256)] [NonVersionable] public static void WriteUnaligned<T>(ref byte destination, T value) { Unsafe.WriteUnaligned(ref destination, value); } [MethodImpl(256)] [NonVersionable] public unsafe static void Copy<T>(void* destination, ref T source) { Unsafe.Write(destination, source); } [MethodImpl(256)] [NonVersionable] public unsafe static void Copy<T>(ref T destination, void* source) { destination = Unsafe.Read<T>(source); } [MethodImpl(256)] [NonVersionable] public unsafe static void* AsPointer<T>(ref T value) { return Unsafe.AsPointer(ref value); } [MethodImpl(256)] [NonVersionable] public static int SizeOf<T>() { return Unsafe.SizeOf<T>(); } [MethodImpl(256)] [NonVersionable] public unsafe static void CopyBlock(void* destination, void* source, uint byteCount) { // IL cpblk instruction Unsafe.CopyBlock(destination, source, byteCount); } [MethodImpl(256)] [NonVersionable] public static void CopyBlock(ref byte destination, ref byte source, uint byteCount) { // IL cpblk instruction Unsafe.CopyBlock(ref destination, ref source, byteCount); } [MethodImpl(256)] [NonVersionable] public unsafe static void CopyBlockUnaligned(void* destination, void* source, uint byteCount) { // IL cpblk instruction Unsafe.CopyBlockUnaligned(destination, source, byteCount); } [MethodImpl(256)] [NonVersionable] public static void CopyBlockUnaligned(ref byte destination, ref byte source, uint byteCount) { // IL cpblk instruction Unsafe.CopyBlockUnaligned(ref destination, ref source, byteCount); } [MethodImpl(256)] [NonVersionable] public unsafe static void InitBlock(void* startAddress, byte value, uint byteCount) { // IL initblk instruction Unsafe.InitBlock(startAddress, value, byteCount); } [MethodImpl(256)] [NonVersionable] public static void InitBlock(ref byte startAddress, byte value, uint byteCount) { // IL initblk instruction Unsafe.InitBlock(ref startAddress, value, byteCount); } [MethodImpl(256)] [NonVersionable] public unsafe static void InitBlockUnaligned(void* startAddress, byte value, uint byteCount) { // IL initblk instruction Unsafe.InitBlockUnaligned(startAddress, value, byteCount); } [MethodImpl(256)] [NonVersionable] public static void InitBlockUnaligned(ref byte startAddress, byte value, uint byteCount) { // IL initblk instruction Unsafe.InitBlockUnaligned(ref startAddress, value, byteCount); } [MethodImpl(256)] [NonVersionable] public static T As<T>(object o) where T : class { return (T)o; } [MethodImpl(256)] [NonVersionable] public unsafe static ref T AsRef<T>(void* source) { return ref *(T*)source; } [MethodImpl(256)] [NonVersionable] public static ref TTo As<TFrom, TTo>(ref TFrom source) { return ref Unsafe.As<TFrom, TTo>(ref source); } [MethodImpl(256)] [NonVersionable] public static ref T Add<T>(ref T source, int elementOffset) { return ref Unsafe.Add(ref source, elementOffset); } [MethodImpl(256)] [NonVersionable] public static ref T Add<T>(ref T source, System.IntPtr elementOffset) { return ref Unsafe.Add(ref source, elementOffset); } [MethodImpl(256)] [NonVersionable] public static ref T AddByteOffset<T>(ref T source, System.IntPtr byteOffset) { return ref Unsafe.AddByteOffset(ref source, byteOffset); } [MethodImpl(256)] [NonVersionable] public static ref T Subtract<T>(ref T source, int elementOffset) { return ref Unsafe.Subtract(ref source, elementOffset); } [MethodImpl(256)] [NonVersionable] public static ref T Subtract<T>(ref T source, System.IntPtr elementOffset) { return ref Unsafe.Subtract(ref source, elementOffset); } [MethodImpl(256)] [NonVersionable] public static ref T SubtractByteOffset<T>(ref T source, System.IntPtr byteOffset) { return ref Unsafe.SubtractByteOffset(ref source, byteOffset); } [MethodImpl(256)] [NonVersionable] public static System.IntPtr ByteOffset<T>(ref T origin, ref T target) { return Unsafe.ByteOffset(target: ref target, origin: ref origin); } [MethodImpl(256)] [NonVersionable] public static bool AreSame<T>(ref T left, ref T right) { return Unsafe.AreSame(ref left, ref right); } } } namespace System.Runtime.Versioning { [AttributeUsage(/*Could not decode attribute arguments.*/)] internal sealed class NonVersionableAttribute : Attribute { } }
plugins/OverlayDearImGui.Shared/SharpDX.Direct3D11.dll
Decompiled a month ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Diagnostics; using System.Globalization; using System.IO; using System.Reflection; using System.Resources; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using SharpDX.DXGI; using SharpDX.Direct3D; using SharpDX.Direct3D11; using SharpDX.Mathematics.Interop; using SharpDX.Win32; [assembly: AssemblyMetadata("RepositoryUrl", "https://github.com/xiaoxiao921/SharpDX")] [assembly: AssemblyTitle("SharpDX.Direct3D11")] [assembly: AssemblyProduct("SharpDX.Direct3D11")] [assembly: AssemblyDescription("Assembly providing DirectX - Direct3D11, Direct3D11.1 and Effects11 managed API.")] [assembly: AssemblyCopyright("Copyright (c) 2010-2016 Alexandre Mutel")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyCompany("Alexandre Mutel")] [assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")] [assembly: AssemblyInformationalVersion("4.2.1-beta0+7abb72df54")] [assembly: AssemblyFileVersion("4.2.1.34")] [assembly: ComVisible(false)] [assembly: InternalsVisibleTo("SharpDX.Direct3D11.Effects")] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: NeutralResourcesLanguage("en-US")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("4.2.0.0")] [module: UnverifiableCode] internal class <Module> { static <Module>() { ModuleInit.Setup(); } } internal sealed class ThisAssembly { internal const string AssemblyVersion = "4.2.0.0"; internal const string AssemblyFileVersion = "4.2.1.34"; internal const string AssemblyInformationalVersion = "4.2.1-beta0+7abb72df54"; internal const string AssemblyName = "SharpDX.Direct3D11"; internal const string AssemblyTitle = "SharpDX.Direct3D11"; internal const string AssemblyConfiguration = "Release"; internal const string GitCommitId = "7abb72df544eaede656c546ee71a8ad1be9dd19b"; internal const string RootNamespace = "SharpDX.Direct3D11"; private ThisAssembly() { } } namespace SharpDX.Direct3D11; [CompilerGenerated] internal class AssemblyDoc { } [Guid("75b68faa-347d-4159-8f45-a0640f01cd9a")] public class BlendState : DeviceChild { public BlendStateDescription Description { get { GetDescription(out var descRef); return descRef; } } public BlendState(Device device, BlendStateDescription description) : base(IntPtr.Zero) { device.CreateBlendState(ref description, this); } public BlendState(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator BlendState(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new BlendState(nativePtr); } return null; } internal unsafe void GetDescription(out BlendStateDescription descRef) { BlendStateDescription.__Native @ref = default(BlendStateDescription.__Native); descRef = default(BlendStateDescription); ((delegate* unmanaged[Stdcall]<void*, void*, void>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)7 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, &@ref); descRef.__MarshalFrom(ref @ref); } } [Guid("cc86fabe-da55-401d-85e7-e3c9de2877e9")] public class BlendState1 : BlendState { public BlendStateDescription1 Description1 { get { GetDescription1(out var descRef); return descRef; } } public BlendState1(Device1 device, BlendStateDescription1 description) : base(IntPtr.Zero) { device.CreateBlendState1(ref description, this); } public BlendState1(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator BlendState1(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new BlendState1(nativePtr); } return null; } internal unsafe void GetDescription1(out BlendStateDescription1 descRef) { BlendStateDescription1.__Native @ref = default(BlendStateDescription1.__Native); descRef = default(BlendStateDescription1); ((delegate* unmanaged[Stdcall]<void*, void*, void>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)8 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, &@ref); descRef.__MarshalFrom(ref @ref); } } public struct BlendStateDescription { [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] internal struct __Native { public RawBool AlphaToCoverageEnable; public RawBool IndependentBlendEnable; public RenderTargetBlendDescription RenderTarget; public RenderTargetBlendDescription __RenderTarget1; public RenderTargetBlendDescription __RenderTarget2; public RenderTargetBlendDescription __RenderTarget3; public RenderTargetBlendDescription __RenderTarget4; public RenderTargetBlendDescription __RenderTarget5; public RenderTargetBlendDescription __RenderTarget6; public RenderTargetBlendDescription __RenderTarget7; } public RawBool AlphaToCoverageEnable; public RawBool IndependentBlendEnable; internal RenderTargetBlendDescription[] _RenderTarget; public RenderTargetBlendDescription[] RenderTarget { get { return _RenderTarget ?? (_RenderTarget = new RenderTargetBlendDescription[8]); } private set { _RenderTarget = value; } } public static BlendStateDescription Default() { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) BlendStateDescription blendStateDescription = default(BlendStateDescription); blendStateDescription.AlphaToCoverageEnable = RawBool.op_Implicit(false); blendStateDescription.IndependentBlendEnable = RawBool.op_Implicit(false); BlendStateDescription result = blendStateDescription; RenderTargetBlendDescription[] renderTarget = result.RenderTarget; for (int i = 0; i < renderTarget.Length; i++) { renderTarget[i].IsBlendEnabled = RawBool.op_Implicit(false); renderTarget[i].SourceBlend = BlendOption.One; renderTarget[i].DestinationBlend = BlendOption.Zero; renderTarget[i].BlendOperation = BlendOperation.Add; renderTarget[i].SourceAlphaBlend = BlendOption.One; renderTarget[i].DestinationAlphaBlend = BlendOption.Zero; renderTarget[i].AlphaBlendOperation = BlendOperation.Add; renderTarget[i].RenderTargetWriteMask = ColorWriteMaskFlags.All; } return result; } public BlendStateDescription Clone() { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) BlendStateDescription blendStateDescription = default(BlendStateDescription); blendStateDescription.AlphaToCoverageEnable = AlphaToCoverageEnable; blendStateDescription.IndependentBlendEnable = IndependentBlendEnable; BlendStateDescription result = blendStateDescription; RenderTargetBlendDescription[] renderTarget = RenderTarget; RenderTargetBlendDescription[] renderTarget2 = result.RenderTarget; for (int i = 0; i < renderTarget.Length; i++) { renderTarget2[i] = renderTarget[i]; } return result; } internal void __MarshalFree(ref __Native @ref) { } internal unsafe void __MarshalFrom(ref __Native @ref) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) AlphaToCoverageEnable = @ref.AlphaToCoverageEnable; IndependentBlendEnable = @ref.IndependentBlendEnable; fixed (RenderTargetBlendDescription* ptr = &RenderTarget[0]) { void* ptr2 = ptr; fixed (RenderTargetBlendDescription* ptr3 = &@ref.RenderTarget) { void* ptr4 = ptr3; Utilities.CopyMemory((IntPtr)ptr2, (IntPtr)ptr4, 8 * Unsafe.SizeOf<RenderTargetBlendDescription>()); } } } internal unsafe void __MarshalTo(ref __Native @ref) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) @ref.AlphaToCoverageEnable = AlphaToCoverageEnable; @ref.IndependentBlendEnable = IndependentBlendEnable; fixed (RenderTargetBlendDescription* ptr = &RenderTarget[0]) { void* ptr2 = ptr; fixed (RenderTargetBlendDescription* ptr3 = &@ref.RenderTarget) { void* ptr4 = ptr3; Utilities.CopyMemory((IntPtr)ptr4, (IntPtr)ptr2, 8 * Unsafe.SizeOf<RenderTargetBlendDescription>()); } } } } public struct BlendStateDescription1 { [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] internal struct __Native { public RawBool AlphaToCoverageEnable; public RawBool IndependentBlendEnable; public RenderTargetBlendDescription1 RenderTarget; public RenderTargetBlendDescription1 __RenderTarget1; public RenderTargetBlendDescription1 __RenderTarget2; public RenderTargetBlendDescription1 __RenderTarget3; public RenderTargetBlendDescription1 __RenderTarget4; public RenderTargetBlendDescription1 __RenderTarget5; public RenderTargetBlendDescription1 __RenderTarget6; public RenderTargetBlendDescription1 __RenderTarget7; } public RawBool AlphaToCoverageEnable; public RawBool IndependentBlendEnable; internal RenderTargetBlendDescription1[] _RenderTarget; public RenderTargetBlendDescription1[] RenderTarget { get { return _RenderTarget ?? (_RenderTarget = new RenderTargetBlendDescription1[8]); } private set { _RenderTarget = value; } } public static BlendStateDescription1 Default() { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) BlendStateDescription1 blendStateDescription = default(BlendStateDescription1); blendStateDescription.AlphaToCoverageEnable = RawBool.op_Implicit(false); blendStateDescription.IndependentBlendEnable = RawBool.op_Implicit(false); BlendStateDescription1 result = blendStateDescription; RenderTargetBlendDescription1[] renderTarget = result.RenderTarget; for (int i = 0; i < renderTarget.Length; i++) { renderTarget[i].IsBlendEnabled = RawBool.op_Implicit(false); renderTarget[i].IsLogicOperationEnabled = RawBool.op_Implicit(false); renderTarget[i].SourceBlend = BlendOption.One; renderTarget[i].DestinationBlend = BlendOption.Zero; renderTarget[i].BlendOperation = BlendOperation.Add; renderTarget[i].SourceAlphaBlend = BlendOption.One; renderTarget[i].DestinationAlphaBlend = BlendOption.Zero; renderTarget[i].AlphaBlendOperation = BlendOperation.Add; renderTarget[i].RenderTargetWriteMask = ColorWriteMaskFlags.All; renderTarget[i].LogicOperation = LogicOperation.Noop; } return result; } public BlendStateDescription1 Clone() { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) BlendStateDescription1 blendStateDescription = default(BlendStateDescription1); blendStateDescription.AlphaToCoverageEnable = AlphaToCoverageEnable; blendStateDescription.IndependentBlendEnable = IndependentBlendEnable; BlendStateDescription1 result = blendStateDescription; RenderTargetBlendDescription1[] renderTarget = RenderTarget; RenderTargetBlendDescription1[] renderTarget2 = result.RenderTarget; for (int i = 0; i < renderTarget.Length; i++) { renderTarget2[i] = renderTarget[i]; } return result; } internal void __MarshalFree(ref __Native @ref) { } internal unsafe void __MarshalFrom(ref __Native @ref) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) AlphaToCoverageEnable = @ref.AlphaToCoverageEnable; IndependentBlendEnable = @ref.IndependentBlendEnable; fixed (RenderTargetBlendDescription1* ptr = &RenderTarget[0]) { void* ptr2 = ptr; fixed (RenderTargetBlendDescription1* ptr3 = &@ref.RenderTarget) { void* ptr4 = ptr3; Utilities.CopyMemory((IntPtr)ptr2, (IntPtr)ptr4, 8 * Unsafe.SizeOf<RenderTargetBlendDescription1>()); } } } internal unsafe void __MarshalTo(ref __Native @ref) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) @ref.AlphaToCoverageEnable = AlphaToCoverageEnable; @ref.IndependentBlendEnable = IndependentBlendEnable; fixed (RenderTargetBlendDescription1* ptr = &RenderTarget[0]) { void* ptr2 = ptr; fixed (RenderTargetBlendDescription1* ptr3 = &@ref.RenderTarget) { void* ptr4 = ptr3; Utilities.CopyMemory((IntPtr)ptr4, (IntPtr)ptr2, 8 * Unsafe.SizeOf<RenderTargetBlendDescription1>()); } } } } [Guid("48570b85-d1ee-4fcd-a250-eb350722b037")] public class Buffer : Resource { public BufferDescription Description { get { GetDescription(out var descRef); return descRef; } } public Buffer(Device device, BufferDescription description) : base(IntPtr.Zero) { device.CreateBuffer(ref description, null, this); } public Buffer(Device device, DataStream data, BufferDescription description) : base(IntPtr.Zero) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) device.CreateBuffer(ref description, (DataBox?)new DataBox(data.PositionPointer, 0, 0), this); } public Buffer(Device device, IntPtr dataPointer, BufferDescription description) : base(IntPtr.Zero) { //IL_0029: Unknown result type (might be due to invalid IL or missing references) device.CreateBuffer(ref description, (dataPointer != IntPtr.Zero) ? new DataBox?(new DataBox(dataPointer, 0, 0)) : null, this); } public Buffer(Device device, int sizeInBytes, ResourceUsage usage, BindFlags bindFlags, CpuAccessFlags accessFlags, ResourceOptionFlags optionFlags, int structureByteStride) : base(IntPtr.Zero) { BufferDescription descRef = new BufferDescription { BindFlags = bindFlags, CpuAccessFlags = accessFlags, OptionFlags = optionFlags, SizeInBytes = sizeInBytes, Usage = usage, StructureByteStride = structureByteStride }; device.CreateBuffer(ref descRef, null, this); } public Buffer(Device device, DataStream data, int sizeInBytes, ResourceUsage usage, BindFlags bindFlags, CpuAccessFlags accessFlags, ResourceOptionFlags optionFlags, int structureByteStride) : base(IntPtr.Zero) { //IL_0055: Unknown result type (might be due to invalid IL or missing references) BufferDescription descRef = new BufferDescription { BindFlags = bindFlags, CpuAccessFlags = accessFlags, OptionFlags = optionFlags, SizeInBytes = sizeInBytes, Usage = usage, StructureByteStride = structureByteStride }; device.CreateBuffer(ref descRef, (DataBox?)new DataBox(data.PositionPointer, 0, 0), this); } public unsafe static Buffer Create<T>(Device device, BindFlags bindFlags, ref T data, int sizeInBytes = 0, ResourceUsage usage = ResourceUsage.Default, CpuAccessFlags accessFlags = CpuAccessFlags.None, ResourceOptionFlags optionFlags = ResourceOptionFlags.None, int structureByteStride = 0) where T : struct { //IL_005e: Unknown result type (might be due to invalid IL or missing references) Buffer buffer = new Buffer(IntPtr.Zero); BufferDescription bufferDescription = default(BufferDescription); bufferDescription.BindFlags = bindFlags; bufferDescription.CpuAccessFlags = accessFlags; bufferDescription.OptionFlags = optionFlags; bufferDescription.SizeInBytes = ((sizeInBytes == 0) ? Utilities.SizeOf<T>() : sizeInBytes); bufferDescription.Usage = usage; bufferDescription.StructureByteStride = structureByteStride; BufferDescription descRef = bufferDescription; fixed (T* ptr = &data) { device.CreateBuffer(ref descRef, (DataBox?)new DataBox((IntPtr)ptr), buffer); return buffer; } } public unsafe static Buffer Create<T>(Device device, BindFlags bindFlags, T[] data, int sizeInBytes = 0, ResourceUsage usage = ResourceUsage.Default, CpuAccessFlags accessFlags = CpuAccessFlags.None, ResourceOptionFlags optionFlags = ResourceOptionFlags.None, int structureByteStride = 0) where T : struct { //IL_0068: Unknown result type (might be due to invalid IL or missing references) Buffer buffer = new Buffer(IntPtr.Zero); BufferDescription bufferDescription = default(BufferDescription); bufferDescription.BindFlags = bindFlags; bufferDescription.CpuAccessFlags = accessFlags; bufferDescription.OptionFlags = optionFlags; bufferDescription.SizeInBytes = ((sizeInBytes == 0) ? (Utilities.SizeOf<T>() * data.Length) : sizeInBytes); bufferDescription.Usage = usage; bufferDescription.StructureByteStride = structureByteStride; BufferDescription descRef = bufferDescription; fixed (T* ptr = &data[0]) { device.CreateBuffer(ref descRef, (DataBox?)new DataBox((IntPtr)ptr), buffer); return buffer; } } public unsafe static Buffer Create<T>(Device device, ref T data, BufferDescription description) where T : struct { //IL_002a: Unknown result type (might be due to invalid IL or missing references) Buffer buffer = new Buffer(IntPtr.Zero); if (description.SizeInBytes == 0) { description.SizeInBytes = Utilities.SizeOf<T>(); } fixed (T* ptr = &data) { device.CreateBuffer(ref description, (DataBox?)new DataBox((IntPtr)ptr), buffer); return buffer; } } public unsafe static Buffer Create<T>(Device device, T[] data, BufferDescription description) where T : struct { //IL_0034: Unknown result type (might be due to invalid IL or missing references) Buffer buffer = new Buffer(IntPtr.Zero); if (description.SizeInBytes == 0) { description.SizeInBytes = Utilities.SizeOf<T>() * data.Length; } fixed (T* ptr = &data[0]) { device.CreateBuffer(ref description, (DataBox?)new DataBox((IntPtr)ptr), buffer); return buffer; } } public Buffer(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator Buffer(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new Buffer(nativePtr); } return null; } internal unsafe void GetDescription(out BufferDescription descRef) { descRef = default(BufferDescription); fixed (BufferDescription* ptr = &descRef) { void* ptr2 = ptr; ((delegate* unmanaged[Stdcall]<void*, void*, void>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)10 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, ptr2); } } } [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] public struct BufferDescription { public int SizeInBytes; public ResourceUsage Usage; public BindFlags BindFlags; public CpuAccessFlags CpuAccessFlags; public ResourceOptionFlags OptionFlags; public int StructureByteStride; public BufferDescription(int sizeInBytes, ResourceUsage usage, BindFlags bindFlags, CpuAccessFlags cpuAccessFlags, ResourceOptionFlags optionFlags, int structureByteStride) { SizeInBytes = sizeInBytes; Usage = usage; BindFlags = bindFlags; CpuAccessFlags = cpuAccessFlags; OptionFlags = optionFlags; StructureByteStride = structureByteStride; } public BufferDescription(int sizeInBytes, BindFlags bindFlags, ResourceUsage usage) { this = default(BufferDescription); SizeInBytes = sizeInBytes; BindFlags = bindFlags; Usage = usage; } } [Guid("a6cd7faa-b0b7-4a2f-9436-8662a65797cb")] public class ClassInstance : DeviceChild { public unsafe string InstanceName { get { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) PointerSize bufferLengthRef = default(PointerSize); GetInstanceName(IntPtr.Zero, ref bufferLengthRef); sbyte* ptr = stackalloc sbyte[(int)(uint)PointerSize.op_Implicit(bufferLengthRef)]; GetInstanceName((IntPtr)ptr, ref bufferLengthRef); return Marshal.PtrToStringAnsi((IntPtr)ptr); } } public unsafe string TypeName { get { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) PointerSize bufferLengthRef = default(PointerSize); GetInstanceName(IntPtr.Zero, ref bufferLengthRef); sbyte* ptr = stackalloc sbyte[(int)(uint)PointerSize.op_Implicit(bufferLengthRef)]; GetTypeName((IntPtr)ptr, ref bufferLengthRef); return Marshal.PtrToStringAnsi((IntPtr)ptr); } } public ClassLinkage ClassLinkage { get { GetClassLinkage(out var linkageOut); return linkageOut; } } public ClassInstanceDescription Description { get { GetDescription(out var descRef); return descRef; } } public ClassInstance(ClassLinkage linkage, string classTypeName, int constantBufferOffset, int constantVectorOffset, int textureOffset, int samplerOffset) : base(IntPtr.Zero) { linkage.CreateClassInstance(classTypeName, constantBufferOffset, constantVectorOffset, textureOffset, samplerOffset, this); } public ClassInstance(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator ClassInstance(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new ClassInstance(nativePtr); } return null; } internal unsafe void GetClassLinkage(out ClassLinkage linkageOut) { IntPtr zero = IntPtr.Zero; ((delegate* unmanaged[Stdcall]<void*, void*, void>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)7 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, &zero); if (zero != IntPtr.Zero) { linkageOut = new ClassLinkage(zero); } else { linkageOut = null; } } internal unsafe void GetDescription(out ClassInstanceDescription descRef) { descRef = default(ClassInstanceDescription); fixed (ClassInstanceDescription* ptr = &descRef) { void* ptr2 = ptr; ((delegate* unmanaged[Stdcall]<void*, void*, void>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)8 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, ptr2); } } internal unsafe void GetInstanceName(IntPtr instanceNameRef, ref PointerSize bufferLengthRef) { fixed (PointerSize* ptr = &bufferLengthRef) { void* ptr2 = ptr; ((delegate* unmanaged[Stdcall]<void*, void*, void*, void>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)9 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (void*)instanceNameRef, ptr2); } } internal unsafe void GetTypeName(IntPtr typeNameRef, ref PointerSize bufferLengthRef) { fixed (PointerSize* ptr = &bufferLengthRef) { void* ptr2 = ptr; ((delegate* unmanaged[Stdcall]<void*, void*, void*, void>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)10 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (void*)typeNameRef, ptr2); } } } [Guid("ddf57cba-9543-46e4-a12b-f207a0fe7fed")] public class ClassLinkage : DeviceChild { public ClassLinkage(Device device) : base(IntPtr.Zero) { device.CreateClassLinkage(this); } public ClassLinkage(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator ClassLinkage(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new ClassLinkage(nativePtr); } return null; } public unsafe ClassInstance GetClassInstance(string classInstanceNameRef, int instanceIndex) { //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; IntPtr intPtr = Marshal.StringToHGlobalAnsi(classInstanceNameRef); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, int, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)7 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (void*)intPtr, instanceIndex, &zero)); ClassInstance result = ((!(zero != IntPtr.Zero)) ? null : new ClassInstance(zero)); Marshal.FreeHGlobal(intPtr); ((Result)(ref val)).CheckError(); return result; } internal unsafe void CreateClassInstance(string classTypeNameRef, int constantBufferOffset, int constantVectorOffset, int textureOffset, int samplerOffset, ClassInstance instanceOut) { //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; IntPtr intPtr = Marshal.StringToHGlobalAnsi(classTypeNameRef); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, int, int, int, int, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)8 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (void*)intPtr, constantBufferOffset, constantVectorOffset, textureOffset, samplerOffset, &zero)); ((CppObject)instanceOut).NativePointer = zero; Marshal.FreeHGlobal(intPtr); ((Result)(ref val)).CheckError(); } } [Guid("4f5b196e-c2bd-495e-bd01-1fded38e4969")] public class ComputeShader : DeviceChild { public unsafe ComputeShader(Device device, byte[] shaderBytecode, ClassLinkage linkage = null) : base(IntPtr.Zero) { //IL_0040: Unknown result type (might be due to invalid IL or missing references) if (shaderBytecode == null) { throw new ArgumentNullException("shaderBytecode", "ShaderBytecode cannot be null"); } fixed (byte* ptr = shaderBytecode) { void* ptr2 = ptr; device.CreateComputeShader((IntPtr)ptr2, PointerSize.op_Implicit(shaderBytecode.Length), linkage, this); } } public ComputeShader(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator ComputeShader(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new ComputeShader(nativePtr); } return null; } } [Guid("6e8c49fb-a371-4770-b440-29086022b741")] public class Counter : Asynchronous { public CounterDescription Description { get { GetDescription(out var descRef); return descRef; } } public Counter(Device device, CounterDescription description) : base(IntPtr.Zero) { device.CreateCounter(description, this); } public Counter(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator Counter(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new Counter(nativePtr); } return null; } internal unsafe void GetDescription(out CounterDescription descRef) { descRef = default(CounterDescription); fixed (CounterDescription* ptr = &descRef) { void* ptr2 = ptr; ((delegate* unmanaged[Stdcall]<void*, void*, void>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)8 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, ptr2); } } } public class CounterMetadata { public CounterType Type { get; internal set; } public int HardwareCounterCount { get; internal set; } public string Name { get; internal set; } public string Units { get; internal set; } public string Description { get; internal set; } } [Guid("03823efb-8d8f-4e1c-9aa2-f64bb2cbfdf1")] public class DepthStencilState : DeviceChild { public DepthStencilStateDescription Description { get { GetDescription(out var descRef); return descRef; } } public DepthStencilState(Device device, DepthStencilStateDescription description) : base(IntPtr.Zero) { device.CreateDepthStencilState(ref description, this); } public DepthStencilState(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator DepthStencilState(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new DepthStencilState(nativePtr); } return null; } internal unsafe void GetDescription(out DepthStencilStateDescription descRef) { descRef = default(DepthStencilStateDescription); fixed (DepthStencilStateDescription* ptr = &descRef) { void* ptr2 = ptr; ((delegate* unmanaged[Stdcall]<void*, void*, void>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)7 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, ptr2); } } } [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] public struct DepthStencilStateDescription { public RawBool IsDepthEnabled; public DepthWriteMask DepthWriteMask; public Comparison DepthComparison; public RawBool IsStencilEnabled; public byte StencilReadMask; public byte StencilWriteMask; public DepthStencilOperationDescription FrontFace; public DepthStencilOperationDescription BackFace; public static DepthStencilStateDescription Default() { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) DepthStencilStateDescription result = default(DepthStencilStateDescription); result.IsDepthEnabled = RawBool.op_Implicit(true); result.DepthWriteMask = DepthWriteMask.All; result.DepthComparison = Comparison.Less; result.IsStencilEnabled = RawBool.op_Implicit(false); result.StencilReadMask = byte.MaxValue; result.StencilWriteMask = byte.MaxValue; result.FrontFace.Comparison = Comparison.Always; result.FrontFace.DepthFailOperation = StencilOperation.Keep; result.FrontFace.FailOperation = StencilOperation.Keep; result.FrontFace.PassOperation = StencilOperation.Keep; result.BackFace.Comparison = Comparison.Always; result.BackFace.DepthFailOperation = StencilOperation.Keep; result.BackFace.FailOperation = StencilOperation.Keep; result.BackFace.PassOperation = StencilOperation.Keep; return result; } } [Guid("9fdac92a-1876-48c3-afad-25b94f84a9b6")] public class DepthStencilView : ResourceView { public DepthStencilViewDescription Description { get { GetDescription(out var descRef); return descRef; } } public DepthStencilView(Device device, Resource resource) : base(IntPtr.Zero) { device.CreateDepthStencilView(resource, null, this); } public DepthStencilView(Device device, Resource resource, DepthStencilViewDescription description) : base(IntPtr.Zero) { device.CreateDepthStencilView(resource, description, this); } public DepthStencilView(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator DepthStencilView(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new DepthStencilView(nativePtr); } return null; } internal unsafe void GetDescription(out DepthStencilViewDescription descRef) { descRef = default(DepthStencilViewDescription); fixed (DepthStencilViewDescription* ptr = &descRef) { void* ptr2 = ptr; ((delegate* unmanaged[Stdcall]<void*, void*, void>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)8 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, ptr2); } } } [Guid("db6f6ddb-ac77-4e88-8253-819df9bbf140")] public class Device : ComObject { public const int MultisampleCountMaximum = 32; protected internal DeviceContext ImmediateContext__; public unsafe string DebugName { get { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) byte* ptr = stackalloc byte[1024]; int dataSizeRef = 1023; Result privateData = GetPrivateData(CommonGuid.DebugObjectName, ref dataSizeRef, new IntPtr(ptr)); if (((Result)(ref privateData)).Failure) { return string.Empty; } ptr[dataSizeRef] = 0; return Marshal.PtrToStringAnsi(new IntPtr(ptr)); } set { if (string.IsNullOrEmpty(value)) { SetPrivateData(CommonGuid.DebugObjectName, 0, IntPtr.Zero); return; } IntPtr dataRef = Utilities.StringToHGlobalAnsi(value); SetPrivateData(CommonGuid.DebugObjectName, value.Length, dataRef); } } public FeatureLevel FeatureLevel => GetFeatureLevel(); public DeviceCreationFlags CreationFlags => GetCreationFlags(); public Result DeviceRemovedReason => GetDeviceRemovedReason(); public DeviceContext ImmediateContext { get { if (ImmediateContext__ == null) { GetImmediateContext(out ImmediateContext__); } return ImmediateContext__; } } public int ExceptionMode { get { return GetExceptionMode(); } set { SetExceptionMode(value); } } public Device(DriverType driverType) : this(driverType, DeviceCreationFlags.None) { }//IL_0001: Unknown result type (might be due to invalid IL or missing references) public Device(Adapter adapter) : this(adapter, DeviceCreationFlags.None) { } public Device(DriverType driverType, DeviceCreationFlags flags) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) CreateDevice(null, driverType, flags, null); } public Device(Adapter adapter, DeviceCreationFlags flags) { CreateDevice(adapter, (DriverType)0, flags, null); } public Device(DriverType driverType, DeviceCreationFlags flags, params FeatureLevel[] featureLevels) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) CreateDevice(null, driverType, flags, featureLevels); } public Device(Adapter adapter, DeviceCreationFlags flags, params FeatureLevel[] featureLevels) { CreateDevice(adapter, (DriverType)0, flags, featureLevels); } public static void CreateWithSwapChain(DriverType driverType, DeviceCreationFlags flags, SwapChainDescription swapChainDescription, out Device device, out SwapChain swapChain) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0004: Unknown result type (might be due to invalid IL or missing references) CreateWithSwapChain(null, driverType, flags, null, swapChainDescription, out device, out swapChain); } public static void CreateWithSwapChain(Adapter adapter, DeviceCreationFlags flags, SwapChainDescription swapChainDescription, out Device device, out SwapChain swapChain) { //IL_0004: Unknown result type (might be due to invalid IL or missing references) CreateWithSwapChain(adapter, (DriverType)0, flags, null, swapChainDescription, out device, out swapChain); } public static void CreateWithSwapChain(DriverType driverType, DeviceCreationFlags flags, FeatureLevel[] featureLevels, SwapChainDescription swapChainDescription, out Device device, out SwapChain swapChain) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0004: Unknown result type (might be due to invalid IL or missing references) CreateWithSwapChain(null, driverType, flags, featureLevels, swapChainDescription, out device, out swapChain); } public static void CreateWithSwapChain(Adapter adapter, DeviceCreationFlags flags, FeatureLevel[] featureLevels, SwapChainDescription swapChainDescription, out Device device, out SwapChain swapChain) { //IL_0004: Unknown result type (might be due to invalid IL or missing references) CreateWithSwapChain(adapter, (DriverType)0, flags, featureLevels, swapChainDescription, out device, out swapChain); } private static void CreateWithSwapChain(Adapter adapter, DriverType driverType, DeviceCreationFlags flags, FeatureLevel[] featureLevels, SwapChainDescription swapChainDescription, out Device device, out SwapChain swapChain) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Expected O, but got Unknown //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Expected O, but got Unknown device = ((adapter == null) ? new Device(driverType, flags, featureLevels) : new Device(adapter, flags, featureLevels)); Factory1 val = new Factory1(); try { swapChain = new SwapChain((Factory)(object)val, (ComObject)(object)device, swapChainDescription); } finally { ((IDisposable)val)?.Dispose(); } } public unsafe CounterMetadata GetCounterMetadata(CounterDescription counterDescription) { CounterMetadata counterMetadata = new CounterMetadata(); int num = 0; int num2 = 0; int num3 = 0; CheckCounter(counterDescription, out var typeRef, out var activeCountersRef, IntPtr.Zero, new IntPtr(&num), IntPtr.Zero, new IntPtr(&num2), IntPtr.Zero, new IntPtr(&num3)); sbyte* ptr = stackalloc sbyte[(int)(uint)num]; sbyte* ptr2 = stackalloc sbyte[(int)(uint)num2]; sbyte* ptr3 = stackalloc sbyte[(int)(uint)num3]; CheckCounter(counterDescription, out typeRef, out activeCountersRef, new IntPtr(ptr), new IntPtr(&num), new IntPtr(ptr2), new IntPtr(&num2), new IntPtr(ptr3), new IntPtr(&num3)); counterMetadata.Type = typeRef; counterMetadata.HardwareCounterCount = activeCountersRef; counterMetadata.Name = Marshal.PtrToStringAnsi((IntPtr)ptr, num); counterMetadata.Units = Marshal.PtrToStringAnsi((IntPtr)ptr2, num2); counterMetadata.Description = Marshal.PtrToStringAnsi((IntPtr)ptr3, num3); return counterMetadata; } public T OpenSharedResource<T>(IntPtr resourceHandle) where T : ComObject { OpenSharedResource(resourceHandle, Utilities.GetGuidFromType(typeof(T)), out var resourceOut); return CppObject.FromPointer<T>(resourceOut); } public unsafe ComputeShaderFormatSupport CheckComputeShaderFormatSupport(Format format) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) FeatureDataFormatSupport2 featureDataFormatSupport = default(FeatureDataFormatSupport2); featureDataFormatSupport.InFormat = format; Result val = CheckFeatureSupport(Feature.ComputeShaders, new IntPtr(&featureDataFormatSupport), Utilities.SizeOf<FeatureDataFormatSupport2>()); if (((Result)(ref val)).Failure) { return ComputeShaderFormatSupport.None; } return featureDataFormatSupport.OutFormatSupport2; } public unsafe FeatureDataD3D11Options CheckD3D11Feature() { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) FeatureDataD3D11Options result = default(FeatureDataD3D11Options); Result val = CheckFeatureSupport(Feature.D3D11Options, new IntPtr(&result), Utilities.SizeOf<FeatureDataD3D11Options>()); if (((Result)(ref val)).Failure) { return default(FeatureDataD3D11Options); } return result; } public unsafe FeatureDataShaderMinimumPrecisionSupport CheckShaderMinimumPrecisionSupport() { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) FeatureDataShaderMinimumPrecisionSupport result = default(FeatureDataShaderMinimumPrecisionSupport); Result val = CheckFeatureSupport(Feature.ShaderMinimumPrecisionSupport, new IntPtr(&result), Utilities.SizeOf<FeatureDataShaderMinimumPrecisionSupport>()); if (((Result)(ref val)).Failure) { return default(FeatureDataShaderMinimumPrecisionSupport); } return result; } public unsafe bool CheckFullNonPow2TextureSupport() { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Invalid comparison between Unknown and I4 //IL_003e: Unknown result type (might be due to invalid IL or missing references) FeatureDataD3D9Options featureDataD3D9Options = default(FeatureDataD3D9Options); Result val = CheckFeatureSupport(Feature.D3D9Options, new IntPtr(&featureDataD3D9Options), Utilities.SizeOf<FeatureDataD3D9Options>()); if ((int)FeatureLevel <= 37632) { return ((Result)(ref val)).Failure; } if (((Result)(ref val)).Failure) { return false; } return RawBool.op_Implicit(featureDataD3D9Options.FullNonPow2TextureSupport); } public unsafe bool CheckTileBasedDeferredRendererSupport() { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) FeatureDataArchitectureInformation featureDataArchitectureInformation = default(FeatureDataArchitectureInformation); Result val = CheckFeatureSupport(Feature.ArchitectureInformation, new IntPtr(&featureDataArchitectureInformation), Utilities.SizeOf<FeatureDataArchitectureInformation>()); if (((Result)(ref val)).Failure) { return false; } return RawBool.op_Implicit(featureDataArchitectureInformation.TileBasedDeferredRenderer); } public unsafe FeatureDataD3D11Options1 CheckD3D112Feature() { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) FeatureDataD3D11Options1 result = default(FeatureDataD3D11Options1); Result val = CheckFeatureSupport(Feature.D3D11Options1, new IntPtr(&result), Utilities.SizeOf<FeatureDataD3D11Options1>()); if (((Result)(ref val)).Failure) { return default(FeatureDataD3D11Options1); } return result; } public unsafe FeatureDataD3D11Options2 CheckD3D113Features2() { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) FeatureDataD3D11Options2 result = default(FeatureDataD3D11Options2); Result val = CheckFeatureSupport(Feature.D3D11Options2, new IntPtr(&result), Utilities.SizeOf<FeatureDataD3D11Options2>()); if (((Result)(ref val)).Failure) { return default(FeatureDataD3D11Options2); } return result; } public unsafe FeatureDataD3D11Options3 CheckD3D113Features3() { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) FeatureDataD3D11Options3 result = default(FeatureDataD3D11Options3); Result val = CheckFeatureSupport(Feature.D3D11Options3, new IntPtr(&result), Utilities.SizeOf<FeatureDataD3D11Options3>()); if (((Result)(ref val)).Failure) { return default(FeatureDataD3D11Options3); } return result; } public unsafe FeatureDataD3D11Options4 CheckD3D113Features4() { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) FeatureDataD3D11Options4 result = default(FeatureDataD3D11Options4); Result val = CheckFeatureSupport(Feature.D3D11Options4, new IntPtr(&result), Utilities.SizeOf<FeatureDataD3D11Options4>()); if (((Result)(ref val)).Failure) { return default(FeatureDataD3D11Options4); } return result; } public unsafe FeatureDataD3D11Options5 CheckD3D113Feature5() { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) FeatureDataD3D11Options5 result = default(FeatureDataD3D11Options5); Result val = CheckFeatureSupport(Feature.D3D11Options5, new IntPtr(&result), Utilities.SizeOf<FeatureDataD3D11Options5>()); if (((Result)(ref val)).Failure) { return default(FeatureDataD3D11Options5); } return result; } public unsafe bool CheckFeatureSupport(Feature feature) { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) Result val; switch (feature) { case Feature.ShaderDoubles: { FeatureDataDoubles featureDataDoubles = default(FeatureDataDoubles); val = CheckFeatureSupport(Feature.ShaderDoubles, new IntPtr(&featureDataDoubles), Utilities.SizeOf<FeatureDataDoubles>()); if (((Result)(ref val)).Failure) { return false; } return RawBool.op_Implicit(featureDataDoubles.DoublePrecisionFloatShaderOps); } case Feature.ComputeShaders: case Feature.D3D10XHardwareOptions: { FeatureDataD3D10XHardwareOptions featureDataD3D10XHardwareOptions = default(FeatureDataD3D10XHardwareOptions); val = CheckFeatureSupport(Feature.D3D10XHardwareOptions, new IntPtr(&featureDataD3D10XHardwareOptions), Utilities.SizeOf<FeatureDataD3D10XHardwareOptions>()); if (((Result)(ref val)).Failure) { return false; } return RawBool.op_Implicit(featureDataD3D10XHardwareOptions.ComputeShadersPlusRawAndStructuredBuffersViaShader4X); } default: throw new SharpDXException("Unsupported Feature. Use specialized CheckXXX methods", Array.Empty<object>()); } } public unsafe Result CheckThreadingSupport(out bool supportsConcurrentResources, out bool supportsCommandLists) { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) FeatureDataThreading featureDataThreading = default(FeatureDataThreading); Result result = CheckFeatureSupport(Feature.Threading, new IntPtr(&featureDataThreading), Utilities.SizeOf<FeatureDataThreading>()); if (((Result)(ref result)).Failure) { supportsConcurrentResources = false; supportsCommandLists = false; } else { supportsConcurrentResources = RawBool.op_Implicit(featureDataThreading.DriverConcurrentCreates); supportsCommandLists = RawBool.op_Implicit(featureDataThreading.DriverCommandLists); } return result; } public static bool IsSupportedFeatureLevel(FeatureLevel featureLevel) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Expected I4, but got Unknown //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) Device device = new Device(IntPtr.Zero); DeviceContext immediateContextOut = null; try { FeatureLevel featureLevelRef; Result val = D3D11.CreateDevice(null, (DriverType)1, IntPtr.Zero, DeviceCreationFlags.None, (FeatureLevel[])(object)new FeatureLevel[1] { (FeatureLevel)(int)featureLevel }, 1, 7, device, out featureLevelRef, out immediateContextOut); return ((Result)(ref val)).Success && featureLevelRef == featureLevel; } finally { if (immediateContextOut != null) { ((DisposeBase)immediateContextOut).Dispose(); } if (((CppObject)device).NativePointer != IntPtr.Zero) { ((DisposeBase)device).Dispose(); } } } public static bool IsSupportedFeatureLevel(Adapter adapter, FeatureLevel featureLevel) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Expected I4, but got Unknown //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) Device device = new Device(IntPtr.Zero); DeviceContext immediateContextOut = null; try { FeatureLevel featureLevelRef; Result val = D3D11.CreateDevice(adapter, (DriverType)0, IntPtr.Zero, DeviceCreationFlags.None, (FeatureLevel[])(object)new FeatureLevel[1] { (FeatureLevel)(int)featureLevel }, 1, 7, device, out featureLevelRef, out immediateContextOut); return ((Result)(ref val)).Success && featureLevelRef == featureLevel; } finally { if (immediateContextOut != null) { ((DisposeBase)immediateContextOut).Dispose(); } if (((CppObject)device).NativePointer != IntPtr.Zero) { ((DisposeBase)device).Dispose(); } } } public static FeatureLevel GetSupportedFeatureLevel() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) Device device = new Device(IntPtr.Zero); FeatureLevel featureLevelRef; DeviceContext immediateContextOut; Result val = D3D11.CreateDevice(null, (DriverType)1, IntPtr.Zero, DeviceCreationFlags.None, null, 0, 7, device, out featureLevelRef, out immediateContextOut); ((Result)(ref val)).CheckError(); ((DisposeBase)immediateContextOut).Dispose(); ((DisposeBase)device).Dispose(); return featureLevelRef; } public static FeatureLevel GetSupportedFeatureLevel(Adapter adapter) { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) Device device = new Device(IntPtr.Zero); FeatureLevel featureLevelRef; DeviceContext immediateContextOut; Result val = D3D11.CreateDevice(adapter, (DriverType)0, IntPtr.Zero, DeviceCreationFlags.None, null, 0, 7, device, out featureLevelRef, out immediateContextOut); ((Result)(ref val)).CheckError(); ((DisposeBase)immediateContextOut).Dispose(); ((DisposeBase)device).Dispose(); return featureLevelRef; } protected override void Dispose(bool disposing) { if (disposing && ImmediateContext__ != null) { ((DisposeBase)ImmediateContext__).Dispose(); ImmediateContext__ = null; } ((ComObject)this).Dispose(disposing); } private void CreateDevice(Adapter adapter, DriverType driverType, DeviceCreationFlags flags, FeatureLevel[] featureLevels) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) FeatureLevel featureLevelRef; Result val = D3D11.CreateDevice(adapter, driverType, IntPtr.Zero, flags, featureLevels, (featureLevels != null) ? featureLevels.Length : 0, 7, this, out featureLevelRef, out ImmediateContext__); ((Result)(ref val)).CheckError(); if (ImmediateContext__ != null) { ((IUnknown)this).AddReference(); ImmediateContext__.Device__ = this; } } public static Device CreateFromDirect3D12(ComObject d3D12Device, DeviceCreationFlags flags, FeatureLevel[] featureLevels, Adapter adapter, params ComObject[] commandQueues) { if (d3D12Device == null) { throw new ArgumentNullException("d3D12Device"); } D3D11.On12CreateDevice((IUnknown)(object)d3D12Device, flags, featureLevels, (featureLevels != null) ? featureLevels.Length : 0, (IUnknown[])(object)commandQueues, commandQueues.Length, 0, out var deviceOut, out var immediateContextOut, out var _); ((DisposeBase)immediateContextOut).Dispose(); return deviceOut; } public Device(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator Device(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new Device(nativePtr); } return null; } internal unsafe void CreateBuffer(ref BufferDescription descRef, DataBox? initialDataRef, Buffer bufferOut) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; DataBox value = default(DataBox); if (initialDataRef.HasValue) { value = initialDataRef.Value; } Result val; fixed (BufferDescription* ptr = &descRef) { void* ptr2 = ptr; void* nativePointer = ((CppObject)this)._nativePointer; DataBox* intPtr = ((!initialDataRef.HasValue) ? null : (&value)); val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)3 * (nint)sizeof(void*))))(nativePointer, ptr2, intPtr, &zero)); } ((CppObject)bufferOut).NativePointer = zero; ((Result)(ref val)).CheckError(); } internal unsafe void CreateTexture1D(ref Texture1DDescription descRef, DataBox[] initialDataRef, Texture1D texture1DOut) { //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; Result val; fixed (DataBox* ptr = initialDataRef) { void* ptr2 = ptr; fixed (Texture1DDescription* ptr3 = &descRef) { void* ptr4 = ptr3; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)4 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, ptr4, ptr2, &zero)); } } ((CppObject)texture1DOut).NativePointer = zero; ((Result)(ref val)).CheckError(); } internal unsafe void CreateTexture2D(ref Texture2DDescription descRef, DataBox[] initialDataRef, Texture2D texture2DOut) { //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; Result val; fixed (DataBox* ptr = initialDataRef) { void* ptr2 = ptr; fixed (Texture2DDescription* ptr3 = &descRef) { void* ptr4 = ptr3; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)5 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, ptr4, ptr2, &zero)); } } ((CppObject)texture2DOut).NativePointer = zero; ((Result)(ref val)).CheckError(); } internal unsafe void CreateTexture3D(ref Texture3DDescription descRef, DataBox[] initialDataRef, Texture3D texture3DOut) { //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; Result val; fixed (DataBox* ptr = initialDataRef) { void* ptr2 = ptr; fixed (Texture3DDescription* ptr3 = &descRef) { void* ptr4 = ptr3; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)6 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, ptr4, ptr2, &zero)); } } ((CppObject)texture3DOut).NativePointer = zero; ((Result)(ref val)).CheckError(); } internal unsafe void CreateShaderResourceView(Resource resourceRef, ShaderResourceViewDescription? descRef, ShaderResourceView sRViewOut) { //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; IntPtr zero2 = IntPtr.Zero; zero = CppObject.ToCallbackPtr<Resource>((ICallbackable)(object)resourceRef); ShaderResourceViewDescription value = default(ShaderResourceViewDescription); if (descRef.HasValue) { value = descRef.Value; } void* nativePointer = ((CppObject)this)._nativePointer; void* intPtr = (void*)zero; ShaderResourceViewDescription* intPtr2 = ((!descRef.HasValue) ? null : (&value)); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)7 * (nint)sizeof(void*))))(nativePointer, intPtr, intPtr2, &zero2)); ((CppObject)sRViewOut).NativePointer = zero2; ((Result)(ref val)).CheckError(); } internal unsafe void CreateUnorderedAccessView(Resource resourceRef, UnorderedAccessViewDescription? descRef, UnorderedAccessView uAViewOut) { //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; IntPtr zero2 = IntPtr.Zero; zero = CppObject.ToCallbackPtr<Resource>((ICallbackable)(object)resourceRef); UnorderedAccessViewDescription value = default(UnorderedAccessViewDescription); if (descRef.HasValue) { value = descRef.Value; } void* nativePointer = ((CppObject)this)._nativePointer; void* intPtr = (void*)zero; UnorderedAccessViewDescription* intPtr2 = ((!descRef.HasValue) ? null : (&value)); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)8 * (nint)sizeof(void*))))(nativePointer, intPtr, intPtr2, &zero2)); ((CppObject)uAViewOut).NativePointer = zero2; ((Result)(ref val)).CheckError(); } internal unsafe void CreateRenderTargetView(Resource resourceRef, RenderTargetViewDescription? descRef, RenderTargetView rTViewOut) { //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; IntPtr zero2 = IntPtr.Zero; zero = CppObject.ToCallbackPtr<Resource>((ICallbackable)(object)resourceRef); RenderTargetViewDescription value = default(RenderTargetViewDescription); if (descRef.HasValue) { value = descRef.Value; } void* nativePointer = ((CppObject)this)._nativePointer; void* intPtr = (void*)zero; RenderTargetViewDescription* intPtr2 = ((!descRef.HasValue) ? null : (&value)); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)9 * (nint)sizeof(void*))))(nativePointer, intPtr, intPtr2, &zero2)); ((CppObject)rTViewOut).NativePointer = zero2; ((Result)(ref val)).CheckError(); } internal unsafe void CreateDepthStencilView(Resource resourceRef, DepthStencilViewDescription? descRef, DepthStencilView depthStencilViewOut) { //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; IntPtr zero2 = IntPtr.Zero; zero = CppObject.ToCallbackPtr<Resource>((ICallbackable)(object)resourceRef); DepthStencilViewDescription value = default(DepthStencilViewDescription); if (descRef.HasValue) { value = descRef.Value; } void* nativePointer = ((CppObject)this)._nativePointer; void* intPtr = (void*)zero; DepthStencilViewDescription* intPtr2 = ((!descRef.HasValue) ? null : (&value)); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)10 * (nint)sizeof(void*))))(nativePointer, intPtr, intPtr2, &zero2)); ((CppObject)depthStencilViewOut).NativePointer = zero2; ((Result)(ref val)).CheckError(); } internal unsafe void CreateInputLayout(InputElement[] inputElementDescsRef, int numElements, IntPtr shaderBytecodeWithInputSignatureRef, PointerSize bytecodeLength, InputLayout inputLayoutOut) { //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) InputElement.__Native[] array = new InputElement.__Native[inputElementDescsRef.Length]; IntPtr zero = IntPtr.Zero; for (int i = 0; i < inputElementDescsRef.Length; i++) { inputElementDescsRef[i].__MarshalTo(ref array[i]); } Result val; fixed (InputElement.__Native* ptr = array) { void* ptr2 = ptr; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, int, void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)11 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, ptr2, numElements, (void*)shaderBytecodeWithInputSignatureRef, PointerSize.op_Implicit(bytecodeLength), &zero)); } ((CppObject)inputLayoutOut).NativePointer = zero; for (int j = 0; j < inputElementDescsRef.Length; j++) { inputElementDescsRef[j].__MarshalFree(ref array[j]); } ((Result)(ref val)).CheckError(); } internal unsafe void CreateVertexShader(IntPtr shaderBytecodeRef, PointerSize bytecodeLength, ClassLinkage classLinkageRef, VertexShader vertexShaderOut) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; IntPtr zero2 = IntPtr.Zero; zero = CppObject.ToCallbackPtr<ClassLinkage>((ICallbackable)(object)classLinkageRef); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)12 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (void*)shaderBytecodeRef, PointerSize.op_Implicit(bytecodeLength), (void*)zero, &zero2)); ((CppObject)vertexShaderOut).NativePointer = zero2; ((Result)(ref val)).CheckError(); } internal unsafe void CreateGeometryShader(IntPtr shaderBytecodeRef, PointerSize bytecodeLength, ClassLinkage classLinkageRef, GeometryShader geometryShaderOut) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; IntPtr zero2 = IntPtr.Zero; zero = CppObject.ToCallbackPtr<ClassLinkage>((ICallbackable)(object)classLinkageRef); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)13 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (void*)shaderBytecodeRef, PointerSize.op_Implicit(bytecodeLength), (void*)zero, &zero2)); ((CppObject)geometryShaderOut).NativePointer = zero2; ((Result)(ref val)).CheckError(); } internal unsafe void CreateGeometryShaderWithStreamOutput(IntPtr shaderBytecodeRef, PointerSize bytecodeLength, StreamOutputElement[] sODeclarationRef, int numEntries, int[] bufferStridesRef, int numStrides, int rasterizedStream, ClassLinkage classLinkageRef, GeometryShader geometryShaderOut) { //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) StreamOutputElement.__Native[] array = ((sODeclarationRef == null) ? null : new StreamOutputElement.__Native[sODeclarationRef.Length]); IntPtr zero = IntPtr.Zero; IntPtr zero2 = IntPtr.Zero; if (sODeclarationRef != null) { for (int i = 0; i < sODeclarationRef.Length; i++) { sODeclarationRef?[i].__MarshalTo(ref array[i]); } } zero = CppObject.ToCallbackPtr<ClassLinkage>((ICallbackable)(object)classLinkageRef); Result val; fixed (int* ptr = bufferStridesRef) { void* ptr2 = ptr; fixed (StreamOutputElement.__Native* ptr3 = array) { void* ptr4 = ptr3; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, void*, int, void*, int, int, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)14 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (void*)shaderBytecodeRef, PointerSize.op_Implicit(bytecodeLength), ptr4, numEntries, ptr2, numStrides, rasterizedStream, (void*)zero, &zero2)); } } ((CppObject)geometryShaderOut).NativePointer = zero2; if (sODeclarationRef != null) { for (int j = 0; j < sODeclarationRef.Length; j++) { sODeclarationRef?[j].__MarshalFree(ref array[j]); } } ((Result)(ref val)).CheckError(); } internal unsafe void CreatePixelShader(IntPtr shaderBytecodeRef, PointerSize bytecodeLength, ClassLinkage classLinkageRef, PixelShader pixelShaderOut) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; IntPtr zero2 = IntPtr.Zero; zero = CppObject.ToCallbackPtr<ClassLinkage>((ICallbackable)(object)classLinkageRef); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)15 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (void*)shaderBytecodeRef, PointerSize.op_Implicit(bytecodeLength), (void*)zero, &zero2)); ((CppObject)pixelShaderOut).NativePointer = zero2; ((Result)(ref val)).CheckError(); } internal unsafe void CreateHullShader(IntPtr shaderBytecodeRef, PointerSize bytecodeLength, ClassLinkage classLinkageRef, HullShader hullShaderOut) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; IntPtr zero2 = IntPtr.Zero; zero = CppObject.ToCallbackPtr<ClassLinkage>((ICallbackable)(object)classLinkageRef); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)16 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (void*)shaderBytecodeRef, PointerSize.op_Implicit(bytecodeLength), (void*)zero, &zero2)); ((CppObject)hullShaderOut).NativePointer = zero2; ((Result)(ref val)).CheckError(); } internal unsafe void CreateDomainShader(IntPtr shaderBytecodeRef, PointerSize bytecodeLength, ClassLinkage classLinkageRef, DomainShader domainShaderOut) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; IntPtr zero2 = IntPtr.Zero; zero = CppObject.ToCallbackPtr<ClassLinkage>((ICallbackable)(object)classLinkageRef); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)17 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (void*)shaderBytecodeRef, PointerSize.op_Implicit(bytecodeLength), (void*)zero, &zero2)); ((CppObject)domainShaderOut).NativePointer = zero2; ((Result)(ref val)).CheckError(); } internal unsafe void CreateComputeShader(IntPtr shaderBytecodeRef, PointerSize bytecodeLength, ClassLinkage classLinkageRef, ComputeShader computeShaderOut) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; IntPtr zero2 = IntPtr.Zero; zero = CppObject.ToCallbackPtr<ClassLinkage>((ICallbackable)(object)classLinkageRef); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)18 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (void*)shaderBytecodeRef, PointerSize.op_Implicit(bytecodeLength), (void*)zero, &zero2)); ((CppObject)computeShaderOut).NativePointer = zero2; ((Result)(ref val)).CheckError(); } internal unsafe void CreateClassLinkage(ClassLinkage linkageOut) { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)19 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, &zero)); ((CppObject)linkageOut).NativePointer = zero; ((Result)(ref val)).CheckError(); } internal unsafe void CreateBlendState(ref BlendStateDescription blendStateDescRef, BlendState blendStateOut) { //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) BlendStateDescription.__Native @ref = default(BlendStateDescription.__Native); IntPtr zero = IntPtr.Zero; blendStateDescRef.__MarshalTo(ref @ref); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)20 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, &@ref, &zero)); ((CppObject)blendStateOut).NativePointer = zero; blendStateDescRef.__MarshalFree(ref @ref); ((Result)(ref val)).CheckError(); } internal unsafe void CreateDepthStencilState(ref DepthStencilStateDescription depthStencilDescRef, DepthStencilState depthStencilStateOut) { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; Result val; fixed (DepthStencilStateDescription* ptr = &depthStencilDescRef) { void* ptr2 = ptr; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)21 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, ptr2, &zero)); } ((CppObject)depthStencilStateOut).NativePointer = zero; ((Result)(ref val)).CheckError(); } internal unsafe void CreateRasterizerState(ref RasterizerStateDescription rasterizerDescRef, RasterizerState rasterizerStateOut) { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; Result val; fixed (RasterizerStateDescription* ptr = &rasterizerDescRef) { void* ptr2 = ptr; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)22 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, ptr2, &zero)); } ((CppObject)rasterizerStateOut).NativePointer = zero; ((Result)(ref val)).CheckError(); } internal unsafe void CreateSamplerState(ref SamplerStateDescription samplerDescRef, SamplerState samplerStateOut) { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; Result val; fixed (SamplerStateDescription* ptr = &samplerDescRef) { void* ptr2 = ptr; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)23 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, ptr2, &zero)); } ((CppObject)samplerStateOut).NativePointer = zero; ((Result)(ref val)).CheckError(); } internal unsafe void CreateQuery(QueryDescription queryDescRef, Query queryOut) { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)24 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, &queryDescRef, &zero)); ((CppObject)queryOut).NativePointer = zero; ((Result)(ref val)).CheckError(); } internal unsafe void CreatePredicate(QueryDescription predicateDescRef, Predicate predicateOut) { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)25 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, &predicateDescRef, &zero)); ((CppObject)predicateOut).NativePointer = zero; ((Result)(ref val)).CheckError(); } internal unsafe void CreateCounter(CounterDescription counterDescRef, Counter counterOut) { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)26 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, &counterDescRef, &zero)); ((CppObject)counterOut).NativePointer = zero; ((Result)(ref val)).CheckError(); } internal unsafe void CreateDeferredContext(int contextFlags, DeviceContext deferredContextOut) { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, int, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)27 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, contextFlags, &zero)); ((CppObject)deferredContextOut).NativePointer = zero; ((Result)(ref val)).CheckError(); } internal unsafe void OpenSharedResource(IntPtr hResource, Guid returnedInterface, out IntPtr resourceOut) { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) Result val; fixed (IntPtr* ptr = &resourceOut) { void* ptr2 = ptr; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)28 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (void*)hResource, &returnedInterface, ptr2)); } ((Result)(ref val)).CheckError(); } public unsafe FormatSupport CheckFormatSupport(Format format) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Expected I4, but got Unknown //IL_0022: Unknown result type (might be due to invalid IL or missing references) FormatSupport result = default(FormatSupport); Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, int, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)29 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (int)format, &result)); return result; } public unsafe int CheckMultisampleQualityLevels(Format format, int sampleCount) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Expected I4, but got Unknown //IL_0023: Unknown result type (might be due to invalid IL or missing references) int result = default(int); Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, int, int, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)30 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (int)format, sampleCount, &result)); return result; } public unsafe CounterCapabilities GetCounterCapabilities() { CounterCapabilities result = default(CounterCapabilities); ((delegate* unmanaged[Stdcall]<void*, void*, void>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)31 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, &result); return result; } internal unsafe void CheckCounter(CounterDescription descRef, out CounterType typeRef, out int activeCountersRef, IntPtr szName, IntPtr nameLengthRef, IntPtr szUnits, IntPtr unitsLengthRef, IntPtr szDescription, IntPtr descriptionLengthRef) { //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) Result val; fixed (int* ptr = &activeCountersRef) { void* ptr2 = ptr; fixed (CounterType* ptr3 = &typeRef) { void* ptr4 = ptr3; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)32 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, &descRef, ptr4, ptr2, (void*)szName, (void*)nameLengthRef, (void*)szUnits, (void*)unitsLengthRef, (void*)szDescription, (void*)descriptionLengthRef)); } } ((Result)(ref val)).CheckError(); } internal unsafe Result CheckFeatureSupport(Feature feature, IntPtr featureSupportDataRef, int featureSupportDataSize) { //IL_0026: Unknown result type (might be due to invalid IL or missing references) return Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, int, void*, int, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)33 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (int)feature, (void*)featureSupportDataRef, featureSupportDataSize)); } public unsafe Result GetPrivateData(Guid guid, ref int dataSizeRef, IntPtr dataRef) { //IL_002d: Unknown result type (might be due to invalid IL or missing references) Result result; fixed (int* ptr = &dataSizeRef) { void* ptr2 = ptr; result = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)34 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, &guid, ptr2, (void*)dataRef)); } return result; } public unsafe void SetPrivateData(Guid guid, int dataSize, IntPtr dataRef) { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, int, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)35 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, &guid, dataSize, (void*)dataRef)); ((Result)(ref val)).CheckError(); } public unsafe void SetPrivateDataInterface(Guid guid, IUnknown dataRef) { //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; zero = CppObject.ToCallbackPtr<IUnknown>((ICallbackable)(object)dataRef); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)36 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, &guid, (void*)zero)); ((Result)(ref val)).CheckError(); } internal unsafe FeatureLevel GetFeatureLevel() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) return ((delegate* unmanaged[Stdcall]<void*, FeatureLevel>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)37 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer); } internal unsafe DeviceCreationFlags GetCreationFlags() { return ((delegate* unmanaged[Stdcall]<void*, DeviceCreationFlags>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)38 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer); } internal unsafe Result GetDeviceRemovedReason() { //IL_001e: Unknown result type (might be due to invalid IL or missing references) return Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)39 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer)); } internal unsafe void GetImmediateContext(out DeviceContext immediateContextOut) { IntPtr zero = IntPtr.Zero; ((delegate* unmanaged[Stdcall]<void*, void*, void>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)40 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, &zero); if (zero != IntPtr.Zero) { immediateContextOut = new DeviceContext(zero); } else { immediateContextOut = null; } } internal unsafe void SetExceptionMode(int raiseFlags) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, int, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)41 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, raiseFlags)); ((Result)(ref val)).CheckError(); } internal unsafe int GetExceptionMode() { return ((delegate* unmanaged[Stdcall]<void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)42 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer); } } [Guid("a04bfb29-08ef-43d6-a49c-a9bdbdcbe686")] public class Device1 : Device { protected internal DeviceContext1 ImmediateContext1__; public DeviceContext1 ImmediateContext1 { get { if (ImmediateContext1__ == null) { GetImmediateContext1(out ImmediateContext1__); } return ImmediateContext1__; } } public DeviceContextState CreateDeviceContextState<T>(CreateDeviceContextStateFlags flags, FeatureLevel[] featureLevelsRef, out FeatureLevel chosenFeatureLevelRef) where T : ComObject { DeviceContextState deviceContextState = new DeviceContextState(IntPtr.Zero); CreateDeviceContextState(flags, featureLevelsRef, featureLevelsRef.Length, 7, Utilities.GetGuidFromType(typeof(T)), out chosenFeatureLevelRef, deviceContextState); return deviceContextState; } public T OpenSharedResource1<T>(IntPtr resourceHandle) where T : ComObject { OpenSharedResource1(resourceHandle, Utilities.GetGuidFromType(typeof(T)), out var resourceOut); return CppObject.FromPointer<T>(resourceOut); } public T OpenSharedResource1<T>(string name, SharedResourceFlags desiredAccess) where T : ComObject { //IL_0002: Unknown result type (might be due to invalid IL or missing references) OpenSharedResourceByName(name, desiredAccess, Utilities.GetGuidFromType(typeof(T)), out var resourceOut); return CppObject.FromPointer<T>(resourceOut); } protected override void Dispose(bool disposing) { if (disposing && ImmediateContext1__ != null) { ((DisposeBase)ImmediateContext1__).Dispose(); ImmediateContext1__ = null; } base.Dispose(disposing); } public Device1(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator Device1(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new Device1(nativePtr); } return null; } internal unsafe void GetImmediateContext1(out DeviceContext1 immediateContextOut) { IntPtr zero = IntPtr.Zero; ((delegate* unmanaged[Stdcall]<void*, void*, void>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)43 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, &zero); if (zero != IntPtr.Zero) { immediateContextOut = new DeviceContext1(zero); } else { immediateContextOut = null; } } internal unsafe void CreateDeferredContext1(int contextFlags, DeviceContext1 deferredContextOut) { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, int, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)44 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, contextFlags, &zero)); ((CppObject)deferredContextOut).NativePointer = zero; ((Result)(ref val)).CheckError(); } internal unsafe void CreateBlendState1(ref BlendStateDescription1 blendStateDescRef, BlendState1 blendStateOut) { //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) BlendStateDescription1.__Native @ref = default(BlendStateDescription1.__Native); IntPtr zero = IntPtr.Zero; blendStateDescRef.__MarshalTo(ref @ref); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)45 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, &@ref, &zero)); ((CppObject)blendStateOut).NativePointer = zero; blendStateDescRef.__MarshalFree(ref @ref); ((Result)(ref val)).CheckError(); } internal unsafe void CreateRasterizerState1(ref RasterizerStateDescription1 rasterizerDescRef, RasterizerState1 rasterizerStateOut) { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; Result val; fixed (RasterizerStateDescription1* ptr = &rasterizerDescRef) { void* ptr2 = ptr; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)46 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, ptr2, &zero)); } ((CppObject)rasterizerStateOut).NativePointer = zero; ((Result)(ref val)).CheckError(); } internal unsafe void CreateDeviceContextState(CreateDeviceContextStateFlags flags, FeatureLevel[] featureLevelsRef, int featureLevels, int sDKVersion, Guid emulatedInterface, out FeatureLevel chosenFeatureLevelRef, DeviceContextState contextStateOut) { //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; Result val; fixed (FeatureLevel* ptr = &chosenFeatureLevelRef) { void* ptr2 = ptr; fixed (FeatureLevel* ptr3 = featureLevelsRef) { void* ptr4 = ptr3; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, int, void*, int, int, void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)47 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (int)flags, ptr4, featureLevels, sDKVersion, &emulatedInterface, ptr2, &zero)); } } ((CppObject)contextStateOut).NativePointer = zero; ((Result)(ref val)).CheckError(); } internal unsafe void OpenSharedResource1(IntPtr hResource, Guid returnedInterface, out IntPtr resourceOut) { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) Result val; fixed (IntPtr* ptr = &resourceOut) { void* ptr2 = ptr; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)48 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (void*)hResource, &returnedInterface, ptr2)); } ((Result)(ref val)).CheckError(); } internal unsafe void OpenSharedResourceByName(string lpName, SharedResourceFlags dwDesiredAccess, Guid returnedInterface, out IntPtr resourceOut) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Expected I4, but got Unknown //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) Result val; fixed (IntPtr* ptr = &resourceOut) { void* ptr2 = ptr; fixed (char* ptr3 = lpName) { val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, int, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)49 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, ptr3, (int)dwDesiredAccess, &returnedInterface, ptr2)); } } ((Result)(ref val)).CheckError(); } } [Guid("9d06dffa-d1e5-4d07-83a8-1bb123f2f841")] public class Device2 : Device1 { protected internal DeviceContext2 ImmediateContext2__; public DeviceContext2 ImmediateContext2 { get { if (ImmediateContext2__ == null) { GetImmediateContext2(out ImmediateContext2__); } return ImmediateContext2__; } } protected override void Dispose(bool disposing) { if (disposing && ImmediateContext2__ != null) { ((DisposeBase)ImmediateContext2__).Dispose(); ImmediateContext2__ = null; } base.Dispose(disposing); } public Device2(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator Device2(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new Device2(nativePtr); } return null; } internal unsafe void GetImmediateContext2(out DeviceContext2 immediateContextOut) { IntPtr zero = IntPtr.Zero; ((delegate* unmanaged[Stdcall]<void*, void*, void>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)50 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, &zero); if (zero != IntPtr.Zero) { immediateContextOut = new DeviceContext2(zero); } else { immediateContextOut = null; } } internal unsafe void CreateDeferredContext2(int contextFlags, DeviceContext2 deferredContextOut) { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, int, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)51 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, contextFlags, &zero)); ((CppObject)deferredContextOut).NativePointer = zero; ((Result)(ref val)).CheckError(); } public unsafe void GetResourceTiling(Resource tiledResourceRef, out int numTilesForEntireResourceRef, out PackedMipDescription packedMipDescRef, out TileShape standardTileShapeForNonPackedMipsRef, ref int numSubresourceTilingsRef, int firstSubresourceTilingToGet, SubResourceTiling[] subresourceTilingsForNonPackedMipsRef) { IntPtr zero = IntPtr.Zero; packedMipDescRef = default(PackedMipDescription); standardTileShapeForNonPackedMipsRef = default(TileShape); zero = CppObject.ToCallbackPtr<Resource>((ICallbackable)(object)tiledResourceRef); fixed (SubResourceTiling* ptr = subresourceTilingsForNonPackedMipsRef) { void* ptr2 = ptr; fixed (int* ptr3 = &numSubresourceTilingsRef) { void* ptr4 = ptr3; fixed (TileShape* ptr5 = &standardTileShapeForNonPackedMipsRef) { void* ptr6 = ptr5; fixed (PackedMipDescription* ptr7 = &packedMipDescRef) { void* ptr8 = ptr7; fixed (int* ptr9 = &numTilesForEntireResourceRef) { void* ptr10 = ptr9; ((delegate* unmanaged[Stdcall]<void*, void*, void*, void*, void*, void*, int, void*, void>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)52 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (void*)zero, ptr10, ptr8, ptr6, ptr4, firstSubresourceTilingToGet, ptr2); } } } } } } public unsafe int CheckMultisampleQualityLevels1(Format format, int sampleCount, CheckMultisampleQualityLevelsFlags flags) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Expected I4, but got Unknown //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) int result = default(int); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, int, int, int, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)53 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (int)format, sampleCount, (int)flags, &result)); ((Result)(ref val)).CheckError(); return result; } } [Guid("A05C8C37-D2C6-4732-B3A0-9CE0B0DC9AE6")] public class Device3 : Device2 { protected internal DeviceContext3 ImmediateContext3__; public DeviceContext3 ImmediateContext3 { get { if (ImmediateContext3__ == null) { GetImmediateContext3(out ImmediateContext3__); } return ImmediateContext3__; } } protected override void Dispose(bool disposing) { if (disposing && ImmediateContext3__ != null) { ((DisposeBase)ImmediateContext3__).Dispose(); ImmediateContext3__ = null; } base.Dispose(disposing); } public Device3(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator Device3(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new Device3(nativePtr); } return null; } internal unsafe void CreateTexture2D1(ref Texture2DDescription1 desc1Ref, DataBox[] initialDataRef, Texture2D1 texture2DOut) { //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; Result val; fixed (DataBox* ptr = initialDataRef) { void* ptr2 = ptr; fixed (Texture2DDescription1* ptr3 = &desc1Ref) { void* ptr4 = ptr3; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)54 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, ptr4, ptr2, &zero)); } } ((CppObject)texture2DOut).NativePointer = zero; ((Result)(ref val)).CheckError(); } internal unsafe void CreateTexture3D1(ref Texture3DDescription1 desc1Ref, DataBox[] initialDataRef, Texture3D1 texture3DOut) { //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; Result val; fixed (DataBox* ptr = initialDataRef) { void* ptr2 = ptr; fixed (Texture3DDescription1* ptr3 = &desc1Ref) { void* ptr4 = ptr3; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)55 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, ptr4, ptr2, &zero)); } } ((CppObject)texture3DOut).NativePointer = zero; ((Result)(ref val)).CheckError(); } internal unsafe void CreateRasterizerState2(ref RasterizerStateDescription2 rasterizerDescRef, RasterizerState2 rasterizerStateOut) { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; Result val; fixed (RasterizerStateDescription2* ptr = &rasterizerDescRef) { void* ptr2 = ptr; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)56 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, ptr2, &zero)); } ((CppObject)rasterizerStateOut).NativePointer = zero; ((Result)(ref val)).CheckError(); } internal unsafe void CreateShaderResourceView1(Resource resourceRef, ShaderResourceViewDescription1? desc1Ref, ShaderResourceView1 sRView1Out) { //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; IntPtr zero2 = IntPtr.Zero; zero = CppObject.ToCallbackPtr<Resource>((ICallbackable)(object)resourceRef); ShaderResourceViewDescription1 value = default(ShaderResourceViewDescription1); if (desc1Ref.HasValue) { value = desc1Ref.Value; } void* nativePointer = ((CppObject)this)._nativePointer; void* intPtr = (void*)zero; ShaderResourceViewDescription1* intPtr2 = ((!desc1Ref.HasValue) ? null : (&value)); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)57 * (nint)sizeof(void*))))(nativePointer, intPtr, intPtr2, &zero2)); ((CppObject)sRView1Out).NativePointer = zero2; ((Result)(ref val)).CheckError(); } internal unsafe void CreateUnorderedAccessView1(Resource resourceRef, UnorderedAccessViewDescription1? desc1Ref, UnorderedAccessView1 uAView1Out) { //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; IntPtr zero2 = IntPtr.Zero; zero = CppObject.ToCallbackPtr<Resource>((ICallbackable)(object)resourceRef); UnorderedAccessViewDescription1 value = default(UnorderedAccessViewDescription1); if (desc1Ref.HasValue) { value = desc1Ref.Value; } void* nativePointer = ((CppObject)this)._nativePointer; void* intPtr = (void*)zero; UnorderedAccessViewDescription1* intPtr2 = ((!desc1Ref.HasValue) ? null : (&value)); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)58 * (nint)sizeof(void*))))(nativePointer, intPtr, intPtr2, &zero2)); ((CppObject)uAView1Out).NativePointer = zero2; ((Result)(ref val)).CheckError(); } internal unsafe void CreateRenderTargetView1(Resource resourceRef, RenderTargetViewDescription1? desc1Ref, RenderTargetView1 rTView1Out) { //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; IntPtr zero2 = IntPtr.Zero; zero = CppObject.ToCallbackPtr<Resource>((ICallbackable)(object)resourceRef); RenderTargetViewDescription1 value = default(RenderTargetViewDescription1); if (desc1Ref.HasValue) { value = desc1Ref.Value; } void* nativePointer = ((CppObject)this)._nativePointer; void* intPtr = (void*)zero; RenderTargetViewDescription1* intPtr2 = ((!desc1Ref.HasValue) ? null : (&value)); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePoi
plugins/OverlayDearImGui.Shared/OverlayDearImGui.Shared.dll
Decompiled a month ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections.Generic; using System.Diagnostics; using System.Drawing; using System.Globalization; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using ImGuiNET; using Microsoft.CodeAnalysis; using OverlayDearImGui.Windows; using SharpDX; using SharpDX.DXGI; using SharpDX.Direct3D; using SharpDX.Direct3D11; using SharpDX.Mathematics.Interop; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: InternalsVisibleTo("OverlayDearImGui.BepInEx5")] [assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")] [assembly: AssemblyCompany("OverlayDearImGui.Shared")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("2.0.0.0")] [assembly: AssemblyInformationalVersion("2.0.0+56b0830b20d078c5218c3627d661348962d8145d")] [assembly: AssemblyProduct("OverlayDearImGui.Shared")] [assembly: AssemblyTitle("OverlayDearImGui.Shared")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("2.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace AutoThunderstoreVersion { [AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)] internal class AutoVersionAttribute : Attribute { } } namespace OverlayDearImGui { internal sealed class ClonedDrawData : IDisposable { public unsafe ImDrawData* Data { get; private set; } public unsafe ClonedDrawData(ImDrawDataPtr inp) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) long num = Marshal.SizeOf<ImDrawData>(); Data = (ImDrawData*)(void*)ImGui.MemAlloc((uint)num); Buffer.MemoryCopy(ImDrawDataPtr.op_Implicit(inp), Data, num, num); int size = ((ImDrawDataPtr)(ref inp)).CmdLists.Size; IntPtr intPtr = ImGui.MemAlloc((uint)(Marshal.SizeOf<IntPtr>() * size)); Unsafe.Write(&((ImDrawData)Data).CmdLists, new ImVector(size, size, intPtr)); for (int i = 0; i < ((ImDrawDataPtr)(ref inp)).CmdLists.Size; i++) { ((ImVector)(&((ImDrawData)Data).CmdLists)).Ref<ImDrawListPtr>(i) = ((ImDrawListPtr)(ref ((ImDrawDataPtr)(ref inp)).CmdLists[i])).CloneOutput(); } } public unsafe void Dispose() { if (Data != null) { for (int i = 0; i < ((ImDrawData)Data).CmdListsCount; i++) { ((ImDrawListPtr)(ref ((ImVector)(&((ImDrawData)Data).CmdLists)).Ref<ImDrawListPtr>(i))).Destroy(); } ImGuiNative.ImDrawData_destroy(Data); Data = null; } } } internal sealed class DisposableList<U> : List<U>, IDisposable where U : IDisposable { public DisposableList() { } public DisposableList(int capacity) : base(capacity) { } public void Dispose() { using (Enumerator enumerator = GetEnumerator()) { while (enumerator.MoveNext()) { enumerator.Current.Dispose(); } } Clear(); } } public interface IConfigEntry<T> { T Get(); void Set(T value); } public static class ImGuiDX11Impl { public struct VERTEX_CONSTANT_BUFFER_DX11 { public unsafe fixed float mvp[16]; } private unsafe delegate void ImDrawUserCallBack(ImDrawList* a, ImDrawCmd* b); private class StateBackup { public InputLayout InputLayout; public PrimitiveTopology PrimitiveTopology; public Buffer IndexBuffer; public Format IndexBufferFormat; public int IndexBufferOffset; public Buffer[] VertexBuffers; public int[] VertexBufferStrides; public int[] VertexBufferOffsets; public RasterizerState RS; public Rectangle[] ScissorRects; public RawViewportF[] Viewports; public BlendState BlendState; public RawColor4 BlendFactor; public int SampleMask; public DepthStencilState DepthStencilState; public int DepthStencilRef; public DepthStencilView DepthStencilView; public RenderTargetView[] RenderTargetViews; public VertexShader VS; public Buffer[] VSConstantBuffers; public SamplerState[] VSSamplers; public ShaderResourceView[] VSResourceViews; public HullShader HS; public Buffer[] HSConstantBuffers; public SamplerState[] HSSamplers; public ShaderResourceView[] HSResourceViews; public DomainShader DS; public Buffer[] DSConstantBuffers; public SamplerState[] DSSamplers; public ShaderResourceView[] DSResourceViews; public GeometryShader GS; public Buffer[] GSConstantBuffers; public SamplerState[] GSSamplers; public ShaderResourceView[] GSResourceViews; public PixelShader PS; public Buffer[] PSConstantBuffers; public SamplerState[] PSSamplers; public ShaderResourceView[] PSResourceViews; public ComputeShader CS; public Buffer[] CSConstantBuffers; public SamplerState[] CSSamplers; public ShaderResourceView[] CSResourceViews; public UnorderedAccessView[] CSUAVs; } private static IntPtr _renderNamePtr; private static Device _device; private static DeviceContext _deviceContext; private static ShaderResourceView _fontResourceView; private static SamplerState _fontSampler; private static VertexShader _vertexShader; private static PixelShader _pixelShader; private static InputLayout _inputLayout; private static Buffer _vertexConstantBuffer; private static BlendState _blendState; private static RasterizerState _rasterizerState; private static DepthStencilState _depthStencilState; private static Buffer _vertexBuffer; private static Buffer _indexBuffer; private static int _vertexBufferSize; private static int _indexBufferSize; private static VertexBufferBinding _vertexBinding; private static RawColor4 _blendColor = new RawColor4(0f, 0f, 0f, 0f); private unsafe static void ImGui_ImplDX11_SetupRenderState(ImDrawData* draw_data, IntPtr ID3D11DeviceContextPtr) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Unknown result type (might be due to invalid IL or missing references) DeviceContext val = new DeviceContext(ID3D11DeviceContextPtr); val.Rasterizer.SetViewport(0f, 0f, ((Vector2)(&((ImDrawData)draw_data).DisplaySize)).x, ((Vector2)(&((ImDrawData)draw_data).DisplaySize)).y, 0f, 1f); val.InputAssembler.InputLayout = _inputLayout; InputAssemblerStage inputAssembler = val.InputAssembler; VertexBufferBinding val2 = default(VertexBufferBinding); ((VertexBufferBinding)(ref val2)).Stride = Unsafe.SizeOf<ImDrawVert>(); ((VertexBufferBinding)(ref val2)).Offset = 0; ((VertexBufferBinding)(ref val2)).Buffer = _vertexBuffer; inputAssembler.SetVertexBuffers(0, val2); val.InputAssembler.SetIndexBuffer(_indexBuffer, (Format)57, 0); val.InputAssembler.PrimitiveTopology = (PrimitiveTopology)4; ((CommonShaderStage)val.VertexShader).SetShader((DeviceChild)(object)_vertexShader, (ClassInstance[])null, 0); ((CommonShaderStage)val.VertexShader).SetConstantBuffer(0, _vertexConstantBuffer); ((CommonShaderStage)val.PixelShader).SetShader((DeviceChild)(object)_pixelShader, (ClassInstance[])null, 0); ((CommonShaderStage)val.PixelShader).SetSampler(0, _fontSampler); ((CommonShaderStage)val.GeometryShader).SetShader((DeviceChild)null, (ClassInstance[])null, 0); ((CommonShaderStage)val.HullShader).SetShader((DeviceChild)null, (ClassInstance[])null, 0); ((CommonShaderStage)val.DomainShader).SetShader((DeviceChild)null, (ClassInstance[])null, 0); ((CommonShaderStage)val.ComputeShader).SetShader((DeviceChild)null, (ClassInstance[])null, 0); RawColor4 value = default(RawColor4); ((RawColor4)(ref value))..ctor(0f, 0f, 0f, 0f); val.OutputMerger.SetBlendState(_blendState, (RawColor4?)value, uint.MaxValue); val.OutputMerger.SetDepthStencilState(_depthStencilState, 0); val.Rasterizer.State = _rasterizerState; } public unsafe static void RenderDrawData(ImDrawData* draw_data) { //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Expected O, but got Unknown //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_0169: Unknown result type (might be due to invalid IL or missing references) //IL_0179: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Unknown result type (might be due to invalid IL or missing references) //IL_0142: Unknown result type (might be due to invalid IL or missing references) //IL_014e: Unknown result type (might be due to invalid IL or missing references) //IL_0153: Unknown result type (might be due to invalid IL or missing references) //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Expected O, but got Unknown //IL_0275: Unknown result type (might be due to invalid IL or missing references) //IL_0483: Unknown result type (might be due to invalid IL or missing references) //IL_0488: Unknown result type (might be due to invalid IL or missing references) //IL_04bd: Unknown result type (might be due to invalid IL or missing references) //IL_04c2: Unknown result type (might be due to invalid IL or missing references) //IL_04c4: Unknown result type (might be due to invalid IL or missing references) //IL_051d: Unknown result type (might be due to invalid IL or missing references) //IL_051f: Unknown result type (might be due to invalid IL or missing references) //IL_0529: Unknown result type (might be due to invalid IL or missing references) //IL_0531: Unknown result type (might be due to invalid IL or missing references) //IL_0533: Unknown result type (might be due to invalid IL or missing references) //IL_053d: Unknown result type (might be due to invalid IL or missing references) //IL_054c: Unknown result type (might be due to invalid IL or missing references) //IL_054e: Unknown result type (might be due to invalid IL or missing references) //IL_0558: Unknown result type (might be due to invalid IL or missing references) //IL_0560: Unknown result type (might be due to invalid IL or missing references) //IL_0562: Unknown result type (might be due to invalid IL or missing references) //IL_056c: Unknown result type (might be due to invalid IL or missing references) //IL_0579: Unknown result type (might be due to invalid IL or missing references) //IL_0580: Unknown result type (might be due to invalid IL or missing references) //IL_04d7: Unknown result type (might be due to invalid IL or missing references) //IL_04e5: Unknown result type (might be due to invalid IL or missing references) //IL_058c: Unknown result type (might be due to invalid IL or missing references) //IL_0593: Unknown result type (might be due to invalid IL or missing references) //IL_05a1: Unknown result type (might be due to invalid IL or missing references) //IL_05a9: Unknown result type (might be due to invalid IL or missing references) //IL_05b1: Unknown result type (might be due to invalid IL or missing references) //IL_05b9: Unknown result type (might be due to invalid IL or missing references) //IL_05d4: Unknown result type (might be due to invalid IL or missing references) //IL_05d6: Unknown result type (might be due to invalid IL or missing references) //IL_05e7: Unknown result type (might be due to invalid IL or missing references) //IL_05ee: Unknown result type (might be due to invalid IL or missing references) //IL_05f8: Expected O, but got Unknown //IL_05f9: Unknown result type (might be due to invalid IL or missing references) //IL_0600: Unknown result type (might be due to invalid IL or missing references) //IL_060d: Unknown result type (might be due to invalid IL or missing references) if (draw_data == null || ((Vector2)(&((ImDrawData)draw_data).DisplaySize)).x <= 0f || ((Vector2)(&((ImDrawData)draw_data).DisplaySize)).y <= 0f) { return; } DeviceContext deviceContext = _deviceContext; if (_vertexBuffer == null || _vertexBufferSize < ((ImDrawData)draw_data).TotalVtxCount) { Buffer vertexBuffer = _vertexBuffer; if (vertexBuffer != null) { ((DisposeBase)vertexBuffer).Dispose(); } _vertexBufferSize = ((ImDrawData)draw_data).TotalVtxCount + 5000; _vertexBuffer = new Buffer(_device, new BufferDescription { Usage = (ResourceUsage)2, SizeInBytes = _vertexBufferSize * Unsafe.SizeOf<ImDrawVert>(), BindFlags = (BindFlags)1, CpuAccessFlags = (CpuAccessFlags)65536, OptionFlags = (ResourceOptionFlags)0 }); VertexBufferBinding vertexBinding = default(VertexBufferBinding); ((VertexBufferBinding)(ref vertexBinding)).Buffer = _vertexBuffer; ((VertexBufferBinding)(ref vertexBinding)).Stride = Unsafe.SizeOf<ImDrawVert>(); ((VertexBufferBinding)(ref vertexBinding)).Offset = 0; _vertexBinding = vertexBinding; } if (_indexBuffer == null || _indexBufferSize < ((ImDrawData)draw_data).TotalIdxCount) { Buffer indexBuffer = _indexBuffer; if (indexBuffer != null) { ((DisposeBase)indexBuffer).Dispose(); } _indexBufferSize = ((ImDrawData)draw_data).TotalIdxCount + 10000; _indexBuffer = new Buffer(_device, new BufferDescription { Usage = (ResourceUsage)2, SizeInBytes = _indexBufferSize * 2, BindFlags = (BindFlags)2, CpuAccessFlags = (CpuAccessFlags)65536 }); } DataStream val = default(DataStream); deviceContext.MapSubresource(_vertexBuffer, (MapMode)4, (MapFlags)0, ref val); DataStream val2 = default(DataStream); deviceContext.MapSubresource(_indexBuffer, (MapMode)4, (MapFlags)0, ref val2); ImDrawVert* ptr = (ImDrawVert*)(void*)val.DataPointer; ushort* ptr2 = (ushort*)(void*)val2.DataPointer; for (int i = 0; i < ((ImDrawData)draw_data).CmdListsCount; i++) { ImDrawList* ptr3 = (ImDrawList*)(void*)((ImVector)(&((ImDrawData)draw_data).CmdLists)).Ref<IntPtr>(i); int num = ((ImVector)(&((ImDrawList)ptr3).VtxBuffer)).Size * Unsafe.SizeOf<ImDrawVert>(); Buffer.MemoryCopy((void*)((ImVector)(&((ImDrawList)ptr3).VtxBuffer)).Data, ptr, num, num); num = ((ImVector)(&((ImDrawList)ptr3).IdxBuffer)).Size * 2; Buffer.MemoryCopy((void*)((ImVector)(&((ImDrawList)ptr3).IdxBuffer)).Data, ptr2, num, num); ptr = (ImDrawVert*)((byte*)ptr + (nint)((ImVector)(&((ImDrawList)ptr3).VtxBuffer)).Size * (nint)Unsafe.SizeOf<ImDrawVert>()); ptr2 += ((ImVector)(&((ImDrawList)ptr3).IdxBuffer)).Size; } deviceContext.UnmapSubresource((Resource)(object)_vertexBuffer, 0); deviceContext.UnmapSubresource((Resource)(object)_indexBuffer, 0); DataStream val3 = default(DataStream); deviceContext.MapSubresource(_vertexConstantBuffer, (MapMode)4, (MapFlags)0, ref val3); VERTEX_CONSTANT_BUFFER_DX11* ptr4 = (VERTEX_CONSTANT_BUFFER_DX11*)(void*)val3.DataPointer; float x = ((Vector2)(&((ImDrawData)draw_data).DisplayPos)).x; float num2 = ((Vector2)(&((ImDrawData)draw_data).DisplayPos)).x + ((Vector2)(&((ImDrawData)draw_data).DisplaySize)).x; float y = ((Vector2)(&((ImDrawData)draw_data).DisplayPos)).y; float num3 = ((Vector2)(&((ImDrawData)draw_data).DisplayPos)).y + ((Vector2)(&((ImDrawData)draw_data).DisplaySize)).y; float* fixedElementField = ptr4->mvp; *fixedElementField = 2f / (num2 - x); ptr4->mvp[1] = 0f; ptr4->mvp[2] = 0f; ptr4->mvp[3] = 0f; ptr4->mvp[4] = 0f; ptr4->mvp[5] = 2f / (y - num3); ptr4->mvp[6] = 0f; ptr4->mvp[7] = 0f; ptr4->mvp[8] = 0f; ptr4->mvp[9] = 0f; ptr4->mvp[10] = 0.5f; ptr4->mvp[11] = 0f; ptr4->mvp[12] = (num2 + x) / (x - num2); ptr4->mvp[13] = (y + num3) / (num3 - y); ptr4->mvp[14] = 0.5f; ptr4->mvp[15] = 1f; deviceContext.UnmapSubresource((Resource)(object)_vertexConstantBuffer, 0); StateBackup old = BackupRenderState(deviceContext); ImGui_ImplDX11_SetupRenderState(draw_data, ((CppObject)deviceContext).NativePointer); int num4 = 0; int num5 = 0; Vector2 displayPos = ((ImDrawData)draw_data).DisplayPos; Vector2 val5 = default(Vector2); Vector2 val6 = default(Vector2); RawRectangle val7 = default(RawRectangle); for (int j = 0; j < ((ImDrawData)draw_data).CmdListsCount; j++) { ImDrawList* ptr5 = (ImDrawList*)(void*)((ImVector)(&((ImDrawData)draw_data).CmdLists)).Ref<IntPtr>(j); for (int k = 0; k < ((ImVector)(&((ImDrawList)ptr5).CmdBuffer)).Size; k++) { ImDrawCmd val4 = ((ImVector)(&((ImDrawList)ptr5).CmdBuffer)).Ref<ImDrawCmd>(k); if (val4.UserCallback != IntPtr.Zero) { ImDrawUserCallBack delegateForFunctionPointer = Marshal.GetDelegateForFunctionPointer<ImDrawUserCallBack>(val4.UserCallback); if (val4.UserCallback == new IntPtr(-1)) { ImGui_ImplDX11_SetupRenderState(draw_data, ((CppObject)deviceContext).NativePointer); } else { delegateForFunctionPointer(ptr5, &val4); } continue; } ((Vector2)(ref val5))..ctor(val4.ClipRect.x - displayPos.x, val4.ClipRect.y - displayPos.y); ((Vector2)(ref val6))..ctor(val4.ClipRect.z - displayPos.x, val4.ClipRect.w - displayPos.y); if (!(val6.x <= val5.x) && !(val6.y <= val5.y)) { ((RawRectangle)(ref val7))..ctor((int)val5.x, (int)val5.y, (int)val6.x, (int)val6.y); deviceContext.Rasterizer.SetScissorRectangles<RawRectangle>((RawRectangle[])(object)new RawRectangle[1] { val7 }); ((CommonShaderStage)deviceContext.PixelShader).SetShaderResource(0, new ShaderResourceView(val4.TextureId)); deviceContext.DrawIndexed((int)val4.ElemCount, (int)(val4.IdxOffset + num4), (int)(val4.VtxOffset + num5)); } } num4 += ((ImVector)(&((ImDrawList)ptr5).IdxBuffer)).Size; num5 += ((ImVector)(&((ImDrawList)ptr5).VtxBuffer)).Size; } RestoreRenderState(deviceContext, old); } private static StateBackup BackupRenderState(DeviceContext ctx) { //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) StateBackup stateBackup = new StateBackup { ScissorRects = new Rectangle[16], Viewports = (RawViewportF[])(object)new RawViewportF[16], VertexBuffers = (Buffer[])(object)new Buffer[32], VertexBufferStrides = new int[32], VertexBufferOffsets = new int[32], InputLayout = ctx.InputAssembler.InputLayout }; ctx.InputAssembler.GetIndexBuffer(ref stateBackup.IndexBuffer, ref stateBackup.IndexBufferFormat, ref stateBackup.IndexBufferOffset); stateBackup.PrimitiveTopology = ctx.InputAssembler.PrimitiveTopology; ctx.InputAssembler.GetVertexBuffers(0, 32, stateBackup.VertexBuffers, stateBackup.VertexBufferStrides, stateBackup.VertexBufferOffsets); stateBackup.RS = ctx.Rasterizer.State; ctx.Rasterizer.GetScissorRectangles<Rectangle>(stateBackup.ScissorRects); ctx.Rasterizer.GetViewports<RawViewportF>(stateBackup.Viewports); stateBackup.BlendState = ctx.OutputMerger.GetBlendState(ref stateBackup.BlendFactor, ref stateBackup.SampleMask); stateBackup.DepthStencilState = ctx.OutputMerger.GetDepthStencilState(ref stateBackup.DepthStencilRef); stateBackup.RenderTargetViews = ctx.OutputMerger.GetRenderTargets(8, ref stateBackup.DepthStencilView); stateBackup.VS = ((CommonShaderStage<VertexShader>)(object)ctx.VertexShader).Get(); stateBackup.VSSamplers = ((CommonShaderStage)ctx.VertexShader).GetSamplers(0, 16); stateBackup.VSConstantBuffers = ((CommonShaderStage)ctx.VertexShader).GetConstantBuffers(0, 14); stateBackup.VSResourceViews = ((CommonShaderStage)ctx.VertexShader).GetShaderResources(0, 128); stateBackup.HS = ((CommonShaderStage<HullShader>)(object)ctx.HullShader).Get(); stateBackup.HSSamplers = ((CommonShaderStage)ctx.HullShader).GetSamplers(0, 16); stateBackup.HSConstantBuffers = ((CommonShaderStage)ctx.HullShader).GetConstantBuffers(0, 14); stateBackup.HSResourceViews = ((CommonShaderStage)ctx.HullShader).GetShaderResources(0, 128); stateBackup.DS = ((CommonShaderStage<DomainShader>)(object)ctx.DomainShader).Get(); stateBackup.DSSamplers = ((CommonShaderStage)ctx.DomainShader).GetSamplers(0, 16); stateBackup.DSConstantBuffers = ((CommonShaderStage)ctx.DomainShader).GetConstantBuffers(0, 14); stateBackup.DSResourceViews = ((CommonShaderStage)ctx.DomainShader).GetShaderResources(0, 128); stateBackup.GS = ((CommonShaderStage<GeometryShader>)(object)ctx.GeometryShader).Get(); stateBackup.GSSamplers = ((CommonShaderStage)ctx.GeometryShader).GetSamplers(0, 16); stateBackup.GSConstantBuffers = ((CommonShaderStage)ctx.GeometryShader).GetConstantBuffers(0, 14); stateBackup.GSResourceViews = ((CommonShaderStage)ctx.GeometryShader).GetShaderResources(0, 128); stateBackup.PS = ((CommonShaderStage<PixelShader>)(object)ctx.PixelShader).Get(); stateBackup.PSSamplers = ((CommonShaderStage)ctx.PixelShader).GetSamplers(0, 16); stateBackup.PSConstantBuffers = ((CommonShaderStage)ctx.PixelShader).GetConstantBuffers(0, 14); stateBackup.PSResourceViews = ((CommonShaderStage)ctx.PixelShader).GetShaderResources(0, 128); stateBackup.CS = ((CommonShaderStage<ComputeShader>)(object)ctx.ComputeShader).Get(); stateBackup.CSSamplers = ((CommonShaderStage)ctx.ComputeShader).GetSamplers(0, 16); stateBackup.CSConstantBuffers = ((CommonShaderStage)ctx.ComputeShader).GetConstantBuffers(0, 14); stateBackup.CSResourceViews = ((CommonShaderStage)ctx.ComputeShader).GetShaderResources(0, 128); stateBackup.CSUAVs = ctx.ComputeShader.GetUnorderedAccessViews(0, 8); return stateBackup; } private static void RestoreRenderState(DeviceContext ctx, StateBackup old) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) ctx.InputAssembler.InputLayout = old.InputLayout; ctx.InputAssembler.SetIndexBuffer(old.IndexBuffer, old.IndexBufferFormat, old.IndexBufferOffset); ctx.InputAssembler.PrimitiveTopology = old.PrimitiveTopology; ctx.InputAssembler.SetVertexBuffers(0, old.VertexBuffers, old.VertexBufferStrides, old.VertexBufferOffsets); ctx.Rasterizer.State = old.RS; ctx.Rasterizer.SetScissorRectangles<Rectangle>(old.ScissorRects); ctx.Rasterizer.SetViewports(old.Viewports, old.Viewports.Length); ctx.OutputMerger.SetBlendState(old.BlendState, (RawColor4?)old.BlendFactor, old.SampleMask); ctx.OutputMerger.SetDepthStencilState(old.DepthStencilState, old.DepthStencilRef); ctx.OutputMerger.SetRenderTargets(old.DepthStencilView, old.RenderTargetViews); ((CommonShaderStage<VertexShader>)(object)ctx.VertexShader).Set(old.VS); ((CommonShaderStage)ctx.VertexShader).SetSamplers(0, old.VSSamplers); ((CommonShaderStage)ctx.VertexShader).SetConstantBuffers(0, old.VSConstantBuffers); ((CommonShaderStage)ctx.VertexShader).SetShaderResources(0, old.VSResourceViews); ((CommonShaderStage<HullShader>)(object)ctx.HullShader).Set(old.HS); ((CommonShaderStage)ctx.HullShader).SetSamplers(0, old.HSSamplers); ((CommonShaderStage)ctx.HullShader).SetConstantBuffers(0, old.HSConstantBuffers); ((CommonShaderStage)ctx.HullShader).SetShaderResources(0, old.HSResourceViews); ((CommonShaderStage<DomainShader>)(object)ctx.DomainShader).Set(old.DS); ((CommonShaderStage)ctx.DomainShader).SetSamplers(0, old.DSSamplers); ((CommonShaderStage)ctx.DomainShader).SetConstantBuffers(0, old.DSConstantBuffers); ((CommonShaderStage)ctx.DomainShader).SetShaderResources(0, old.DSResourceViews); ((CommonShaderStage<GeometryShader>)(object)ctx.GeometryShader).Set(old.GS); ((CommonShaderStage)ctx.GeometryShader).SetSamplers(0, old.GSSamplers); ((CommonShaderStage)ctx.GeometryShader).SetConstantBuffers(0, old.GSConstantBuffers); ((CommonShaderStage)ctx.GeometryShader).SetShaderResources(0, old.GSResourceViews); ((CommonShaderStage<PixelShader>)(object)ctx.PixelShader).Set(old.PS); ((CommonShaderStage)ctx.PixelShader).SetSamplers(0, old.PSSamplers); ((CommonShaderStage)ctx.PixelShader).SetConstantBuffers(0, old.PSConstantBuffers); ((CommonShaderStage)ctx.PixelShader).SetShaderResources(0, old.PSResourceViews); ((CommonShaderStage<ComputeShader>)(object)ctx.ComputeShader).Set(old.CS); ((CommonShaderStage)ctx.ComputeShader).SetSamplers(0, old.CSSamplers); ((CommonShaderStage)ctx.ComputeShader).SetConstantBuffers(0, old.CSConstantBuffers); ((CommonShaderStage)ctx.ComputeShader).SetShaderResources(0, old.CSResourceViews); ctx.ComputeShader.SetUnorderedAccessViews(0, old.CSUAVs); } public static void CreateFontsTexture() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Expected O, but got Unknown //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Expected O, but got Unknown //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_013b: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_016c: Unknown result type (might be due to invalid IL or missing references) //IL_016e: Unknown result type (might be due to invalid IL or missing references) //IL_0178: Expected O, but got Unknown ImGuiIOPtr iO = ImGui.GetIO(); ImFontAtlasPtr fonts = ((ImGuiIOPtr)(ref iO)).Fonts; IntPtr intPtr = default(IntPtr); int num = default(int); int height = default(int); int num2 = default(int); ((ImFontAtlasPtr)(ref fonts)).GetTexDataAsRGBA32(ref intPtr, ref num, ref height, ref num2); Texture2DDescription val = default(Texture2DDescription); val.Width = num; val.Height = height; val.MipLevels = 1; val.ArraySize = 1; val.Format = (Format)28; val.SampleDescription = new SampleDescription(1, 0); val.Usage = (ResourceUsage)1; val.BindFlags = (BindFlags)8; val.CpuAccessFlags = (CpuAccessFlags)0; val.OptionFlags = (ResourceOptionFlags)0; Texture2DDescription val2 = val; Texture2D val3 = new Texture2D(_device, val2, (DataRectangle[])(object)new DataRectangle[1] { new DataRectangle(intPtr, num * num2) }); try { _fontResourceView = new ShaderResourceView(_device, (Resource)(object)val3, new ShaderResourceViewDescription { Format = val2.Format, Dimension = (ShaderResourceViewDimension)4, Texture2D = { MipLevels = val2.MipLevels } }); } finally { ((IDisposable)val3)?.Dispose(); } fonts = ((ImGuiIOPtr)(ref iO)).Fonts; ((ImFontAtlasPtr)(ref fonts)).SetTexID(((CppObject)_fontResourceView).NativePointer); _fontSampler = new SamplerState(_device, new SamplerStateDescription { Filter = (Filter)21, AddressU = (TextureAddressMode)1, AddressV = (TextureAddressMode)1, AddressW = (TextureAddressMode)1, MipLodBias = 0f, ComparisonFunction = (Comparison)8, MinimumLod = 0f, MaximumLod = 0f }); } public static bool CreateDeviceObjects() { //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Expected O, but got Unknown //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Expected O, but got Unknown //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Expected O, but got Unknown //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Expected O, but got Unknown //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Unknown result type (might be due to invalid IL or missing references) //IL_0142: Unknown result type (might be due to invalid IL or missing references) //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_0168: Unknown result type (might be due to invalid IL or missing references) //IL_017b: Unknown result type (might be due to invalid IL or missing references) //IL_018e: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_01b5: Unknown result type (might be due to invalid IL or missing references) //IL_01bf: Unknown result type (might be due to invalid IL or missing references) //IL_01c0: Unknown result type (might be due to invalid IL or missing references) //IL_01ca: Expected O, but got Unknown //IL_01d1: Unknown result type (might be due to invalid IL or missing references) //IL_01da: Unknown result type (might be due to invalid IL or missing references) //IL_01e2: Unknown result type (might be due to invalid IL or missing references) //IL_01ea: Unknown result type (might be due to invalid IL or missing references) //IL_01ef: Unknown result type (might be due to invalid IL or missing references) //IL_01f7: Unknown result type (might be due to invalid IL or missing references) //IL_01fc: Unknown result type (might be due to invalid IL or missing references) //IL_0201: Unknown result type (might be due to invalid IL or missing references) //IL_0203: Unknown result type (might be due to invalid IL or missing references) //IL_020d: Expected O, but got Unknown //IL_0214: Unknown result type (might be due to invalid IL or missing references) //IL_021d: Unknown result type (might be due to invalid IL or missing references) //IL_0222: Unknown result type (might be due to invalid IL or missing references) //IL_022a: Unknown result type (might be due to invalid IL or missing references) //IL_0232: Unknown result type (might be due to invalid IL or missing references) //IL_023a: Unknown result type (might be due to invalid IL or missing references) //IL_023f: Unknown result type (might be due to invalid IL or missing references) //IL_024c: Unknown result type (might be due to invalid IL or missing references) //IL_0259: Unknown result type (might be due to invalid IL or missing references) //IL_0266: Unknown result type (might be due to invalid IL or missing references) //IL_0273: Unknown result type (might be due to invalid IL or missing references) //IL_0280: Unknown result type (might be due to invalid IL or missing references) //IL_028d: Unknown result type (might be due to invalid IL or missing references) //IL_029a: Unknown result type (might be due to invalid IL or missing references) //IL_02a7: Unknown result type (might be due to invalid IL or missing references) //IL_02ac: Unknown result type (might be due to invalid IL or missing references) //IL_02ae: Unknown result type (might be due to invalid IL or missing references) //IL_02b8: Expected O, but got Unknown if (_device == null) { return false; } if (_fontSampler != null) { InvalidateDeviceObjects(); } string path = Path.Combine(Overlay.AssetsFolderPath, "Shaders"); byte[] array = File.ReadAllBytes(Path.Combine(path, "imgui-vertex.hlsl.bytes")); _vertexShader = new VertexShader(_device, array, (ClassLinkage)null); _inputLayout = new InputLayout(_device, array, (InputElement[])(object)new InputElement[3] { new InputElement("POSITION", 0, (Format)16, 0), new InputElement("TEXCOORD", 0, (Format)16, 0), new InputElement("COLOR", 0, (Format)28, 0) }); _vertexConstantBuffer = new Buffer(_device, new BufferDescription { Usage = (ResourceUsage)2, BindFlags = (BindFlags)4, CpuAccessFlags = (CpuAccessFlags)65536, OptionFlags = (ResourceOptionFlags)0, SizeInBytes = 64 }); byte[] array2 = File.ReadAllBytes(Path.Combine(path, "imgui-frag.hlsl.bytes")); _pixelShader = new PixelShader(_device, array2, (ClassLinkage)null); BlendStateDescription val = default(BlendStateDescription); val.AlphaToCoverageEnable = RawBool.op_Implicit(false); BlendStateDescription val2 = val; ((BlendStateDescription)(ref val2)).RenderTarget[0].IsBlendEnabled = RawBool.op_Implicit(true); ((BlendStateDescription)(ref val2)).RenderTarget[0].SourceBlend = (BlendOption)5; ((BlendStateDescription)(ref val2)).RenderTarget[0].DestinationBlend = (BlendOption)6; ((BlendStateDescription)(ref val2)).RenderTarget[0].BlendOperation = (BlendOperation)1; ((BlendStateDescription)(ref val2)).RenderTarget[0].SourceAlphaBlend = (BlendOption)8; ((BlendStateDescription)(ref val2)).RenderTarget[0].DestinationAlphaBlend = (BlendOption)2; ((BlendStateDescription)(ref val2)).RenderTarget[0].AlphaBlendOperation = (BlendOperation)1; ((BlendStateDescription)(ref val2)).RenderTarget[0].RenderTargetWriteMask = (ColorWriteMaskFlags)15; _blendState = new BlendState(_device, val2); _rasterizerState = new RasterizerState(_device, new RasterizerStateDescription { FillMode = (FillMode)3, CullMode = (CullMode)1, IsScissorEnabled = RawBool.op_Implicit(true), IsDepthClipEnabled = RawBool.op_Implicit(true) }); _depthStencilState = new DepthStencilState(_device, new DepthStencilStateDescription { IsDepthEnabled = RawBool.op_Implicit(false), DepthWriteMask = (DepthWriteMask)1, DepthComparison = (Comparison)8, IsStencilEnabled = RawBool.op_Implicit(false), FrontFace = { FailOperation = (StencilOperation)1 }, FrontFace = { DepthFailOperation = (StencilOperation)1 }, FrontFace = { PassOperation = (StencilOperation)1 }, FrontFace = { Comparison = (Comparison)8 }, BackFace = { FailOperation = (StencilOperation)1 }, BackFace = { DepthFailOperation = (StencilOperation)1 }, BackFace = { PassOperation = (StencilOperation)1 }, BackFace = { Comparison = (Comparison)8 } }); CreateFontsTexture(); return true; } public static void InvalidateDeviceObjects() { //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) if (_device != null) { SamplerState fontSampler = _fontSampler; if (fontSampler != null) { ((DisposeBase)fontSampler).Dispose(); } _fontSampler = null; ShaderResourceView fontResourceView = _fontResourceView; if (fontResourceView != null) { ((DisposeBase)fontResourceView).Dispose(); } _fontResourceView = null; ImGuiIOPtr iO = ImGui.GetIO(); ImFontAtlasPtr fonts = ((ImGuiIOPtr)(ref iO)).Fonts; ((ImFontAtlasPtr)(ref fonts)).SetTexID(IntPtr.Zero); Buffer indexBuffer = _indexBuffer; if (indexBuffer != null) { ((DisposeBase)indexBuffer).Dispose(); } _indexBuffer = null; Buffer vertexBuffer = _vertexBuffer; if (vertexBuffer != null) { ((DisposeBase)vertexBuffer).Dispose(); } _vertexBuffer = null; BlendState blendState = _blendState; if (blendState != null) { ((DisposeBase)blendState).Dispose(); } _blendState = null; DepthStencilState depthStencilState = _depthStencilState; if (depthStencilState != null) { ((DisposeBase)depthStencilState).Dispose(); } _depthStencilState = null; RasterizerState rasterizerState = _rasterizerState; if (rasterizerState != null) { ((DisposeBase)rasterizerState).Dispose(); } _rasterizerState = null; PixelShader pixelShader = _pixelShader; if (pixelShader != null) { ((DisposeBase)pixelShader).Dispose(); } _pixelShader = null; Buffer vertexConstantBuffer = _vertexConstantBuffer; if (vertexConstantBuffer != null) { ((DisposeBase)vertexConstantBuffer).Dispose(); } _vertexConstantBuffer = null; InputLayout inputLayout = _inputLayout; if (inputLayout != null) { ((DisposeBase)inputLayout).Dispose(); } _inputLayout = null; VertexShader vertexShader = _vertexShader; if (vertexShader != null) { ((DisposeBase)vertexShader).Dispose(); } _vertexShader = null; } } public static void Shutdown() { InvalidateDeviceObjects(); _device = null; _deviceContext = null; if (_renderNamePtr != IntPtr.Zero) { Marshal.FreeHGlobal(_renderNamePtr); _renderNamePtr = IntPtr.Zero; } } public static void NewFrame() { if (_fontSampler == null) { CreateDeviceObjects(); } } internal unsafe static void Init(void* device, void* deviceContext) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Expected O, but got Unknown //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Expected O, but got Unknown ImGuiIOPtr iO = ImGui.GetIO(); ref ImGuiBackendFlags backendFlags = ref ((ImGuiIOPtr)(ref iO)).BackendFlags; iO = ImGui.GetIO(); backendFlags = (ImGuiBackendFlags)((uint)((ImGuiIOPtr)(ref iO)).BackendFlags | 8u); _renderNamePtr = Marshal.StringToHGlobalAnsi("imgui_impl_dx11_c#"); iO = ImGui.GetIO(); ((ImGuiIO)((ImGuiIOPtr)(ref iO)).NativePtr).BackendRendererName = (byte*)_renderNamePtr.ToPointer(); _device = new Device((IntPtr)device); _deviceContext = new DeviceContext((IntPtr)deviceContext); } } public static class ImGuiWin32Impl { private delegate uint XInputGetCapabilitiesDelegate(uint a, uint b, IntPtr c); private delegate uint XInputGetStateDelegate(uint a, IntPtr b); private static IntPtr _windowHandle; private static IntPtr _mouseHandle; private static int _mouseTrackedArea; private static int _mouseButtonsDown; private static long _time; private static long _ticksPerSecond; private static ImGuiMouseCursor _lastMouseCursor; private static IntPtr _xInputDLL; private static XInputGetCapabilitiesDelegate _xInputGetCapabilities; private static XInputGetStateDelegate _xInputGetState; public const VirtualKey IM_VK_KEYPAD_ENTER = (VirtualKey)269; private const int XBUTTON1 = 1; private const int WHEEL_DELTA = 120; public static readonly IntPtr DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 = new IntPtr(-4); private unsafe static bool ImGui_ImplWin32_InitEx(void* windowHandle, bool platform_has_own_dc) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) ImGuiIOPtr iO = ImGui.GetIO(); if (_windowHandle != IntPtr.Zero) { Log.Error("Already initialized a platform backend!", "/home/runner/work/OverlayDearImGui/OverlayDearImGui/OverlayDearImGui.Shared/ImGuiWin32Impl.cs", "ImGui_ImplWin32_InitEx", 35); return false; } if (!Kernel32.QueryPerformanceFrequency(out var frequency)) { return false; } if (!Kernel32.QueryPerformanceCounter(out var lpPerformanceCount)) { return false; } ((ImGuiIO)((ImGuiIOPtr)(ref iO)).NativePtr).BackendPlatformName = (byte*)(void*)Marshal.StringToHGlobalAnsi("imgui_impl_win32"); ref ImGuiBackendFlags backendFlags = ref ((ImGuiIOPtr)(ref iO)).BackendFlags; backendFlags = (ImGuiBackendFlags)((uint)backendFlags | 2u); ref ImGuiBackendFlags backendFlags2 = ref ((ImGuiIOPtr)(ref iO)).BackendFlags; backendFlags2 = (ImGuiBackendFlags)((uint)backendFlags2 | 4u); _windowHandle = (IntPtr)windowHandle; _ticksPerSecond = frequency; _time = lpPerformanceCount; _lastMouseCursor = (ImGuiMouseCursor)9; ImGuiViewportPtr mainViewport = ImGui.GetMainViewport(); ((ImGuiViewport)((ImGuiViewportPtr)(ref mainViewport)).NativePtr).PlatformHandleRaw = windowHandle; List<string> list = new List<string> { "xinput1_4.dll", "xinput1_3.dll", "xinput9_1_0.dll", "xinput1_2.dll", "xinput1_1.dll" }; for (int i = 0; i < list.Count; i++) { IntPtr intPtr = Kernel32.LoadLibrary(list[i]); if (intPtr != IntPtr.Zero) { _xInputDLL = intPtr; _xInputGetCapabilities = Marshal.GetDelegateForFunctionPointer<XInputGetCapabilitiesDelegate>(Kernel32.GetProcAddress(intPtr, "XInputGetCapabilities")); _xInputGetState = Marshal.GetDelegateForFunctionPointer<XInputGetStateDelegate>(Kernel32.GetProcAddress(intPtr, "XInputGetState")); break; } } return true; } public unsafe static bool ImGui_ImplWin32_Init(void* hwnd) { return ImGui_ImplWin32_InitEx(hwnd, platform_has_own_dc: false); } public unsafe static bool ImGui_ImplWin32_InitForOpenGL(void* hwnd) { return ImGui_ImplWin32_InitEx(hwnd, platform_has_own_dc: true); } public unsafe static void Shutdown() { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) if (_windowHandle == IntPtr.Zero) { Log.Error("No platform backend to shutdown, or already shutdown?", "/home/runner/work/OverlayDearImGui/OverlayDearImGui/OverlayDearImGui.Shared/ImGuiWin32Impl.cs", "Shutdown", 99); return; } ImGuiIOPtr iO = ImGui.GetIO(); if (_xInputDLL != IntPtr.Zero) { Kernel32.FreeLibrary(_xInputDLL); } ((ImGuiIO)((ImGuiIOPtr)(ref iO)).NativePtr).BackendPlatformName = null; ((ImGuiIO)((ImGuiIOPtr)(ref iO)).NativePtr).BackendPlatformUserData = null; ref ImGuiBackendFlags backendFlags = ref ((ImGuiIOPtr)(ref iO)).BackendFlags; backendFlags = (ImGuiBackendFlags)((uint)backendFlags & 0xFFFFFFF8u); } private static bool ImGui_ImplWin32_UpdateMouseCursor() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Invalid comparison between Unknown and I4 //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Expected I4, but got Unknown ImGuiIOPtr iO = ImGui.GetIO(); if (((uint)((ImGuiIOPtr)(ref iO)).ConfigFlags & 0x20u) != 0) { return false; } ImGuiMouseCursor mouseCursor = ImGui.GetMouseCursor(); if ((int)mouseCursor == -1 || ((ImGuiIOPtr)(ref iO)).MouseDrawCursor) { User32.SetCursor(IntPtr.Zero); } else { int lpCursorName = 32512; switch ((int)mouseCursor) { case 0: lpCursorName = 32512; break; case 1: lpCursorName = 32513; break; case 2: lpCursorName = 32646; break; case 4: lpCursorName = 32644; break; case 3: lpCursorName = 32645; break; case 5: lpCursorName = 32643; break; case 6: lpCursorName = 32642; break; case 7: lpCursorName = 32649; break; case 8: lpCursorName = 32648; break; } User32.SetCursor(User32.LoadCursor(IntPtr.Zero, lpCursorName)); } return true; } private static bool IsVkDown(VirtualKey vk) { return (User32.GetKeyState(vk) & 0x8000) != 0; } private static void ImGui_ImplWin32_AddKeyEvent(ImGuiKey key, bool down, VirtualKey native_keycode, int native_scancode = -1) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) ImGuiIOPtr iO = ImGui.GetIO(); ((ImGuiIOPtr)(ref iO)).AddKeyEvent(key, down); ((ImGuiIOPtr)(ref iO)).SetKeyEventNativeData(key, (int)native_keycode, native_scancode); } private static void ImGui_ImplWin32_ProcessKeyEventsWorkarounds() { if (ImGui.IsKeyDown((ImGuiKey)528) && !IsVkDown(VirtualKey.LeftShift)) { ImGui_ImplWin32_AddKeyEvent((ImGuiKey)528, down: false, VirtualKey.LeftShift); } if (ImGui.IsKeyDown((ImGuiKey)532) && !IsVkDown(VirtualKey.RightShift)) { ImGui_ImplWin32_AddKeyEvent((ImGuiKey)532, down: false, VirtualKey.RightShift); } if (ImGui.IsKeyDown((ImGuiKey)530) && !IsVkDown(VirtualKey.LeftWindows)) { ImGui_ImplWin32_AddKeyEvent((ImGuiKey)530, down: false, VirtualKey.LeftWindows); } if (ImGui.IsKeyDown((ImGuiKey)534) && !IsVkDown(VirtualKey.RightWindows)) { ImGui_ImplWin32_AddKeyEvent((ImGuiKey)534, down: false, VirtualKey.RightWindows); } } public static void ImGui_ImplWin32_UpdateKeyModifiers() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) ImGuiIOPtr iO = ImGui.GetIO(); ((ImGuiIOPtr)(ref iO)).AddKeyEvent((ImGuiKey)4096, IsVkDown(VirtualKey.Control)); ((ImGuiIOPtr)(ref iO)).AddKeyEvent((ImGuiKey)8192, IsVkDown(VirtualKey.Shift)); ((ImGuiIOPtr)(ref iO)).AddKeyEvent((ImGuiKey)16384, IsVkDown(VirtualKey.Menu)); ((ImGuiIOPtr)(ref iO)).AddKeyEvent((ImGuiKey)32768, IsVkDown(VirtualKey.Application)); } public static void ImGui_ImplWin32_UpdateMouseData() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) ImGuiIOPtr iO = ImGui.GetIO(); if (!(User32.GetForegroundWindow() == _windowHandle)) { return; } if (((ImGuiIOPtr)(ref iO)).WantSetMousePos) { User32.POINT lpPoint = new User32.POINT((int)((ImGuiIOPtr)(ref iO)).MousePos.x, (int)((ImGuiIOPtr)(ref iO)).MousePos.y); if (User32.ClientToScreen(_windowHandle, ref lpPoint)) { User32.SetCursorPos(lpPoint.X, lpPoint.Y); } } if (!((ImGuiIOPtr)(ref iO)).WantSetMousePos && _mouseTrackedArea == 0 && User32.GetCursorPos(out var point) && User32.ScreenToClient(_windowHandle, ref point)) { ((ImGuiIOPtr)(ref iO)).AddMousePosEvent((float)point.X, (float)point.Y); } } private static void ImGui_ImplWin32_UpdateGamepads() { } public unsafe static void NewFrame() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) ImGuiIOPtr iO = ImGui.GetIO(); User32.GetClientRect(_windowHandle, out var lpRect); Unsafe.Write(&((ImGuiIO)((ImGuiIOPtr)(ref iO)).NativePtr).DisplaySize, new Vector2((float)(lpRect.Right - lpRect.Left), (float)(lpRect.Bottom - lpRect.Top))); Kernel32.QueryPerformanceCounter(out var lpPerformanceCount); ((ImGuiIO)((ImGuiIOPtr)(ref iO)).NativePtr).DeltaTime = (float)(lpPerformanceCount - _time) / (float)_ticksPerSecond; _time = lpPerformanceCount; ImGui_ImplWin32_UpdateMouseData(); ImGui_ImplWin32_ProcessKeyEventsWorkarounds(); ImGuiMouseCursor val = (ImGuiMouseCursor)(((ImGuiIOPtr)(ref iO)).MouseDrawCursor ? (-1) : ((int)ImGui.GetMouseCursor())); if (_lastMouseCursor != val) { _lastMouseCursor = val; ImGui_ImplWin32_UpdateMouseCursor(); } ImGui_ImplWin32_UpdateGamepads(); } public static ImGuiKey ImGui_ImplWin32_VirtualKeyToImGuiKey(VirtualKey wParam) { return (ImGuiKey)(wParam switch { VirtualKey.Tab => 512, VirtualKey.Left => 513, VirtualKey.Right => 514, VirtualKey.Up => 515, VirtualKey.Down => 516, VirtualKey.Prior => 517, VirtualKey.Next => 518, VirtualKey.Home => 519, VirtualKey.End => 520, VirtualKey.Insert => 521, VirtualKey.Delete => 522, VirtualKey.Back => 523, VirtualKey.Space => 524, VirtualKey.Return => 525, VirtualKey.Escape => 526, VirtualKey.OEM7 => 596, VirtualKey.OEMComma => 597, VirtualKey.OEMMinus => 598, VirtualKey.OEMPeriod => 599, VirtualKey.OEM2 => 600, VirtualKey.OEM1 => 601, VirtualKey.OEMPlus => 602, VirtualKey.OEM4 => 603, VirtualKey.OEM5 => 604, VirtualKey.OEM6 => 605, VirtualKey.OEM3 => 606, VirtualKey.CapsLock => 607, VirtualKey.ScrollLock => 608, VirtualKey.NumLock => 609, VirtualKey.Snapshot => 610, VirtualKey.Pause => 611, VirtualKey.Numpad0 => 612, VirtualKey.Numpad1 => 613, VirtualKey.Numpad2 => 614, VirtualKey.Numpad3 => 615, VirtualKey.Numpad4 => 616, VirtualKey.Numpad5 => 617, VirtualKey.Numpad6 => 618, VirtualKey.Numpad7 => 619, VirtualKey.Numpad8 => 620, VirtualKey.Numpad9 => 621, VirtualKey.Decimal => 622, VirtualKey.Divide => 623, VirtualKey.Multiply => 624, VirtualKey.Subtract => 625, VirtualKey.Add => 626, (VirtualKey)269 => 627, VirtualKey.LeftShift => 528, VirtualKey.LeftControl => 527, VirtualKey.LeftMenu => 529, VirtualKey.LeftWindows => 530, VirtualKey.RightShift => 532, VirtualKey.RightControl => 531, VirtualKey.RightMenu => 533, VirtualKey.RightWindows => 534, VirtualKey.Application => 535, VirtualKey.N0 => 536, VirtualKey.N1 => 537, VirtualKey.N2 => 538, VirtualKey.N3 => 539, VirtualKey.N4 => 540, VirtualKey.N5 => 541, VirtualKey.N6 => 542, VirtualKey.N7 => 543, VirtualKey.N8 => 544, VirtualKey.N9 => 545, VirtualKey.A => 546, VirtualKey.B => 547, VirtualKey.C => 548, VirtualKey.D => 549, VirtualKey.E => 550, VirtualKey.F => 551, VirtualKey.G => 552, VirtualKey.H => 553, VirtualKey.I => 554, VirtualKey.J => 555, VirtualKey.K => 556, VirtualKey.L => 557, VirtualKey.M => 558, VirtualKey.N => 559, VirtualKey.O => 560, VirtualKey.P => 561, VirtualKey.Q => 562, VirtualKey.R => 563, VirtualKey.S => 564, VirtualKey.T => 565, VirtualKey.U => 566, VirtualKey.V => 567, VirtualKey.W => 568, VirtualKey.X => 569, VirtualKey.Y => 570, VirtualKey.Z => 571, VirtualKey.F1 => 572, VirtualKey.F2 => 573, VirtualKey.F3 => 574, VirtualKey.F4 => 575, VirtualKey.F5 => 576, VirtualKey.F6 => 577, VirtualKey.F7 => 578, VirtualKey.F8 => 579, VirtualKey.F9 => 580, VirtualKey.F10 => 581, VirtualKey.F11 => 582, VirtualKey.F12 => 583, _ => 0, }); } private static ImGuiMouseSource GetMouseSourceFromMessageExtraInfo() { uint num = (uint)(int)User32.GetMessageExtraInfo(); if ((num & 0xFFFFFF80u) != 4283520768u) { if ((num & 0xFFFFFF80u) != 4283520896u) { return (ImGuiMouseSource)0; } return (ImGuiMouseSource)1; } return (ImGuiMouseSource)2; } public static int GET_X_LPARAM(IntPtr lp) { return (short)(long)lp; } public static int GET_Y_LPARAM(IntPtr lp) { return (short)((long)lp >> 16); } public static ushort HIWORD(IntPtr dwValue) { return (ushort)((long)dwValue >> 16); } public static ushort HIWORD(UIntPtr dwValue) { return (ushort)((ulong)dwValue >> 16); } public static ushort LOWORD(IntPtr dwValue) { return (ushort)(long)dwValue; } public static ushort LOWORD(UIntPtr dwValue) { return (ushort)(ulong)dwValue; } public static ushort GET_XBUTTON_WPARAM(UIntPtr val) { return HIWORD(val); } public static ushort GET_XBUTTON_WPARAM(IntPtr val) { return HIWORD(val); } internal static int GET_WHEEL_DELTA_WPARAM(IntPtr wParam) { return (short)HIWORD(wParam); } internal static int GET_WHEEL_DELTA_WPARAM(UIntPtr wParam) { return (short)HIWORD(wParam); } public static byte LOBYTE(ushort wValue) { return (byte)(wValue & 0xFFu); } public unsafe static IntPtr WndProcHandler(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam) { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_01e5: Unknown result type (might be due to invalid IL or missing references) //IL_01ea: Unknown result type (might be due to invalid IL or missing references) //IL_0291: Unknown result type (might be due to invalid IL or missing references) //IL_0296: Unknown result type (might be due to invalid IL or missing references) //IL_03b5: Unknown result type (might be due to invalid IL or missing references) //IL_03ba: Unknown result type (might be due to invalid IL or missing references) //IL_03c9: Unknown result type (might be due to invalid IL or missing references) //IL_03cd: Unknown result type (might be due to invalid IL or missing references) //IL_0178: Unknown result type (might be due to invalid IL or missing references) //IL_0302: Unknown result type (might be due to invalid IL or missing references) //IL_027a: Unknown result type (might be due to invalid IL or missing references) if (ImGui.GetCurrentContext() == IntPtr.Zero) { return IntPtr.Zero; } ImGuiIOPtr iO = ImGui.GetIO(); int num; int num6; int num2; bool flag; switch (msg) { case WindowMessage.WM_NCMOUSEMOVE: case WindowMessage.WM_MOUSEFIRST: { ImGuiMouseSource mouseSourceFromMessageExtraInfo3 = GetMouseSourceFromMessageExtraInfo(); int num5 = ((msg == WindowMessage.WM_MOUSEFIRST) ? 1 : 2); _mouseHandle = hwnd; if (_mouseTrackedArea != num5) { User32.TRACKMOUSEEVENT lpEventTrack = new User32.TRACKMOUSEEVENT(User32.TMEFlags.TME_CANCEL, hwnd, 0u); User32.TRACKMOUSEEVENT lpEventTrack2 = new User32.TRACKMOUSEEVENT((num5 == 2) ? (User32.TMEFlags.TME_LEAVE | User32.TMEFlags.TME_NONCLIENT) : User32.TMEFlags.TME_LEAVE, hwnd, 0u); if (_mouseTrackedArea != 0) { User32.TrackMouseEvent(ref lpEventTrack); } User32.TrackMouseEvent(ref lpEventTrack2); _mouseTrackedArea = num5; } User32.POINT lpPoint = new User32.POINT(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)); if (msg != WindowMessage.WM_NCMOUSEMOVE || User32.ScreenToClient(hwnd, ref lpPoint)) { ((ImGuiIOPtr)(ref iO)).AddMouseSourceEvent(mouseSourceFromMessageExtraInfo3); ((ImGuiIOPtr)(ref iO)).AddMousePosEvent((float)lpPoint.X, (float)lpPoint.Y); } break; } case WindowMessage.WM_NCMOUSELEAVE: num = 2; goto IL_01a4; case WindowMessage.WM_MOUSELEAVE: num = 1; goto IL_01a4; case WindowMessage.WM_LBUTTONDOWN: case WindowMessage.WM_LBUTTONDBLCLK: case WindowMessage.WM_RBUTTONDOWN: case WindowMessage.WM_RBUTTONDBLCLK: case WindowMessage.WM_MBUTTONDOWN: case WindowMessage.WM_MBUTTONDBLCLK: case WindowMessage.WM_XBUTTONDOWN: case WindowMessage.WM_XBUTTONDBLCLK: { ImGuiMouseSource mouseSourceFromMessageExtraInfo = GetMouseSourceFromMessageExtraInfo(); int num3 = 0; if (msg == WindowMessage.WM_LBUTTONDOWN || msg == WindowMessage.WM_LBUTTONDBLCLK) { num3 = 0; } if (msg == WindowMessage.WM_RBUTTONDOWN || msg == WindowMessage.WM_RBUTTONDBLCLK) { num3 = 1; } if (msg == WindowMessage.WM_MBUTTONDOWN || msg == WindowMessage.WM_MBUTTONDBLCLK) { num3 = 2; } if (msg == WindowMessage.WM_XBUTTONDOWN || msg == WindowMessage.WM_XBUTTONDBLCLK) { num3 = ((GET_XBUTTON_WPARAM(wParam) == 1) ? 3 : 4); } if (_mouseButtonsDown == 0 && User32.GetCapture() == IntPtr.Zero) { User32.SetCapture(hwnd); } _mouseButtonsDown |= 1 << num3; ((ImGuiIOPtr)(ref iO)).AddMouseSourceEvent(mouseSourceFromMessageExtraInfo); ((ImGuiIOPtr)(ref iO)).AddMouseButtonEvent(num3, true); return IntPtr.Zero; } case WindowMessage.WM_LBUTTONUP: case WindowMessage.WM_RBUTTONUP: case WindowMessage.WM_MBUTTONUP: case WindowMessage.WM_XBUTTONUP: { ImGuiMouseSource mouseSourceFromMessageExtraInfo2 = GetMouseSourceFromMessageExtraInfo(); int num4 = 0; if (msg == WindowMessage.WM_LBUTTONUP) { num4 = 0; } if (msg == WindowMessage.WM_RBUTTONUP) { num4 = 1; } if (msg == WindowMessage.WM_MBUTTONUP) { num4 = 2; } if (msg == WindowMessage.WM_XBUTTONUP) { num4 = ((GET_XBUTTON_WPARAM(wParam) == 1) ? 3 : 4); } _mouseButtonsDown &= ~(1 << num4); if (_mouseButtonsDown == 0 && User32.GetCapture() == hwnd) { User32.ReleaseCapture(); } ((ImGuiIOPtr)(ref iO)).AddMouseSourceEvent(mouseSourceFromMessageExtraInfo2); ((ImGuiIOPtr)(ref iO)).AddMouseButtonEvent(num4, false); return IntPtr.Zero; } case WindowMessage.WM_MOUSEWHEEL: ((ImGuiIOPtr)(ref iO)).AddMouseWheelEvent(0f, (float)GET_WHEEL_DELTA_WPARAM(wParam) / 120f); return IntPtr.Zero; case WindowMessage.WM_MOUSEHWHEEL: ((ImGuiIOPtr)(ref iO)).AddMouseWheelEvent((0f - (float)GET_WHEEL_DELTA_WPARAM(wParam)) / 120f, 0f); return IntPtr.Zero; case WindowMessage.WM_KEYUP: case WindowMessage.WM_SYSKEYDOWN: case WindowMessage.WM_SYSKEYUP: num6 = ((msg == WindowMessage.WM_SYSKEYDOWN) ? 1 : 0); goto IL_036b; case WindowMessage.WM_KEYFIRST: num6 = 1; goto IL_036b; case WindowMessage.WM_SETFOCUS: case WindowMessage.WM_KILLFOCUS: ((ImGuiIOPtr)(ref iO)).AddFocusEvent(msg == WindowMessage.WM_SETFOCUS); return IntPtr.Zero; case WindowMessage.WM_CHAR: if (User32.IsWindowUnicode(hwnd)) { if ((int)wParam > 0 && (int)wParam < 65536) { ((ImGuiIOPtr)(ref iO)).AddInputCharacterUTF16((ushort)(int)wParam); } } else { byte[] lpMultiByteStr = new byte[1] { *(byte*)(&wParam) }; IntPtr intPtr = Marshal.AllocHGlobal(1); Kernel32.MultiByteToWideChar(0u, 1u, lpMultiByteStr, 1, intPtr, 1); char c = *(char*)(void*)intPtr; ((ImGuiIOPtr)(ref iO)).AddInputCharacter((uint)c); Marshal.FreeHGlobal(intPtr); } return IntPtr.Zero; case WindowMessage.WM_SETCURSOR: if (LOWORD(lParam) == 1 && ImGui_ImplWin32_UpdateMouseCursor()) { return new IntPtr(1); } return IntPtr.Zero; case WindowMessage.WM_DEVICECHANGE: { return IntPtr.Zero; } IL_01a4: num2 = num; if (_mouseTrackedArea == num2) { if (_mouseHandle == hwnd) { _mouseHandle = IntPtr.Zero; } _mouseTrackedArea = 0; ((ImGuiIOPtr)(ref iO)).AddMousePosEvent(float.MinValue, float.MinValue); } break; IL_036b: flag = (byte)num6 != 0; if ((int)wParam < 256) { ImGui_ImplWin32_UpdateKeyModifiers(); VirtualKey virtualKey = (VirtualKey)(int)wParam; bool num7 = (ushort)(int)wParam == 13; bool flag2 = (HIWORD(lParam) & 0x100) != 0; if (num7 && flag2) { virtualKey = (VirtualKey)269; } ImGuiKey val = ImGui_ImplWin32_VirtualKeyToImGuiKey(virtualKey); int native_scancode = LOBYTE(HIWORD(lParam)); if ((int)val != 0) { ImGui_ImplWin32_AddKeyEvent(val, flag, virtualKey, native_scancode); } switch (virtualKey) { case VirtualKey.Shift: if (IsVkDown(VirtualKey.LeftShift) == flag) { ImGui_ImplWin32_AddKeyEvent((ImGuiKey)528, flag, VirtualKey.LeftShift, native_scancode); } if (IsVkDown(VirtualKey.RightShift) == flag) { ImGui_ImplWin32_AddKeyEvent((ImGuiKey)532, flag, VirtualKey.RightShift, native_scancode); } break; case VirtualKey.Control: if (IsVkDown(VirtualKey.LeftControl) == flag) { ImGui_ImplWin32_AddKeyEvent((ImGuiKey)527, flag, VirtualKey.LeftControl, native_scancode); } if (IsVkDown(VirtualKey.RightControl) == flag) { ImGui_ImplWin32_AddKeyEvent((ImGuiKey)531, flag, VirtualKey.RightControl, native_scancode); } break; case VirtualKey.Menu: if (IsVkDown(VirtualKey.LeftMenu) == flag) { ImGui_ImplWin32_AddKeyEvent((ImGuiKey)529, flag, VirtualKey.LeftMenu, native_scancode); } if (IsVkDown(VirtualKey.RightMenu) == flag) { ImGui_ImplWin32_AddKeyEvent((ImGuiKey)533, flag, VirtualKey.RightMenu, native_scancode); } break; } } return IntPtr.Zero; } return IntPtr.Zero; } private unsafe static bool _IsWindowsVersionOrGreater(short major, short minor, short unused) { OSVERSIONINFOEX oSVERSIONINFOEX = OSVERSIONINFOEX.Create(); ulong dwlConditionMask = 0uL; oSVERSIONINFOEX.dwMajorVersion = major; oSVERSIONINFOEX.dwMinorVersion = minor; Kernel32.VER_SET_CONDITION(ref dwlConditionMask, 2u, 3); Kernel32.VER_SET_CONDITION(ref dwlConditionMask, 1u, 3); return Ntdll.RtlVerifyVersionInfo(&oSVERSIONINFOEX, VER_MASK.VER_MAJORVERSION | VER_MASK.VER_MINORVERSION, (long)dwlConditionMask) == NtStatus.Success; } private static bool _IsWindowsVistaOrGreater() { return _IsWindowsVersionOrGreater((short)Kernel32.HiByte(1536), LOBYTE(1536), 0); } private static bool _IsWindows8OrGreater() { return _IsWindowsVersionOrGreater((short)Kernel32.HiByte(1538), LOBYTE(1538), 0); } private static bool _IsWindows8Point1OrGreater() { return _IsWindowsVersionOrGreater((short)Kernel32.HiByte(1539), LOBYTE(1539), 0); } private static bool _IsWindows10OrGreater() { return _IsWindowsVersionOrGreater((short)Kernel32.HiByte(2560), LOBYTE(2560), 0); } private static void ImGui_ImplWin32_EnableDpiAwareness() { if (_IsWindows10OrGreater()) { User32.SetThreadDpiAwarenessContext(DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2); } else if (_IsWindows8Point1OrGreater()) { Shellscalingapi.SetProcessDpiAwareness(PROCESS_DPI_AWARENESS.PROCESS_PER_MONITOR_DPI_AWARE); } else { User32.SetProcessDPIAware(); } } public unsafe static float ImGui_ImplWin32_GetDpiScaleForMonitor(void* monitor) { uint dpiX; if (_IsWindows8Point1OrGreater()) { Shellscalingapi.GetDpiForMonitor((IntPtr)monitor, MONITOR_DPI_TYPE.MDT_EFFECTIVE_DPI, out dpiX, out var _); return (float)dpiX / 96f; } IntPtr dC = User32.GetDC(IntPtr.Zero); dpiX = (uint)Gdi32.GetDeviceCaps(dC, 88); User32.ReleaseDC(IntPtr.Zero, dC); return (float)dpiX / 96f; } public unsafe static float ImGui_ImplWin32_GetDpiScaleForHwnd(void* hwnd) { return ImGui_ImplWin32_GetDpiScaleForMonitor((void*)User32.MonitorFromWindow((IntPtr)hwnd, 2u)); } public unsafe static void ImGui_ImplWin32_EnableAlphaCompositing(void* hwnd) { if (_IsWindowsVistaOrGreater() && Dwmapi.DwmIsCompositionEnabled(out var enabled) == 0 && enabled) { uint ColorizationColor; bool ColorizationOpaqueBlend; int num = Dwmapi.DwmGetColorizationColor(out ColorizationColor, out ColorizationOpaqueBlend); if (_IsWindows8OrGreater() || (num == 0 && !ColorizationOpaqueBlend)) { IntPtr intPtr = Gdi32.CreateRectRgn(0, 0, -1, -1); Dwmapi.DWM_BLURBEHIND blurBehind = new Dwmapi.DWM_BLURBEHIND(enabled: true); blurBehind.dwFlags |= Dwmapi.DWM_BB.BlurRegion; blurBehind.hRgnBlur = intPtr; Dwmapi.DwmEnableBlurBehindWindow((IntPtr)hwnd, ref blurBehind); Gdi32.DeleteObject(intPtr); } else { Dwmapi.DWM_BLURBEHIND blurBehind2 = new Dwmapi.DWM_BLURBEHIND(enabled: true); Dwmapi.DwmEnableBlurBehindWindow((IntPtr)hwnd, ref blurBehind2); } } } internal unsafe static void Init(IntPtr windowHandle) { ImGui_ImplWin32_Init((void*)windowHandle); } } internal interface ILog { internal void Debug(object data, [CallerFilePath] string file = "", [CallerMemberName] string member = "", [CallerLineNumber] int line = 0); internal void Error(object data, [CallerFilePath] string file = "", [CallerMemberName] string member = "", [CallerLineNumber] int line = 0); internal void Fatal(object data, [CallerFilePath] string file = "", [CallerMemberName] string member = "", [CallerLineNumber] int line = 0); internal void Info(object data, [CallerFilePath] string file = "", [CallerMemberName] string member = "", [CallerLineNumber] int line = 0); internal void Message(object data, [CallerFilePath] string file = "", [CallerMemberName] string member = "", [CallerLineNumber] int line = 0); internal void Warning(object data, [CallerFilePath] string file = "", [CallerMemberName] string member = "", [CallerLineNumber] int line = 0); } internal static class Log { private static ILog _log; internal static void Init(ILog log) { _log = log; } internal static void Debug(object data, [CallerFilePath] string file = "", [CallerMemberName] string member = "", [CallerLineNumber] int line = 0) { _log.Debug(data, file, member, line); } internal static void Error(object data, [CallerFilePath] string file = "", [CallerMemberName] string member = "", [CallerLineNumber] int line = 0) { _log.Error(data, file, member, line); } internal static void Fatal(object data, [CallerFilePath] string file = "", [CallerMemberName] string member = "", [CallerLineNumber] int line = 0) { _log.Fatal(data, file, member, line); } internal static void Info(object data, [CallerFilePath] string file = "", [CallerMemberName] string member = "", [CallerLineNumber] int line = 0) { _log.Info(data, file, member, line); } internal static void Message(object data, [CallerFilePath] string file = "", [CallerMemberName] string member = "", [CallerLineNumber] int line = 0) { _log.Message(data, file, member, line); } internal static void Warning(object data, [CallerFilePath] string file = "", [CallerMemberName] string member = "", [CallerLineNumber] int line = 0) { _log.Warning(data, file, member, line); } } public class Overlay { private Device _device; private DeviceContext _deviceContext; private SwapChain _swapChain; private RenderTargetView _mainRenderTargetView; internal const VirtualKey OverlayToggleDefault = VirtualKey.Insert; private const string IniFileName = "iDeathHD.OverlayDearImGui_imgui.ini"; private static RECT _gameRect; private static uint _resizeWidth; private static uint _resizeHeight; private static DisposableList<ClonedDrawData> _nextFrameDrawData; private static DisposableList<ClonedDrawData> _currentRenderDrawData; private static readonly object _drawDataLock = new object(); public static IConfigEntry<VirtualKey> OverlayToggle { get; internal set; } public static string AssetsFolderPath { get; private set; } = ""; public static string ImGuiIniConfigPath { get; private set; } public static bool IsOpen { get; private set; } public static RECT GameRect { get { return _gameRect; } private set { _gameRect = value; } } public static IntPtr GameHwnd { get; private set; } public static event Action OnRender; internal void CreateRenderTarget() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Expected O, but got Unknown Texture2D backBuffer = _swapChain.GetBackBuffer<Texture2D>(0); try { _mainRenderTargetView = new RenderTargetView(_device, (Resource)(object)backBuffer); } finally { ((IDisposable)backBuffer)?.Dispose(); } } public void CleanupRenderTarget() { if (_mainRenderTargetView != null) { ((DisposeBase)_mainRenderTargetView).Dispose(); _mainRenderTargetView = null; } } public void CleanupDeviceD3D() { CleanupRenderTarget(); if (_swapChain != null) { ((DisposeBase)_swapChain).Dispose(); _swapChain = null; } if (_deviceContext != null) { ((DisposeBase)_deviceContext).Dispose(); _deviceContext = null; } if (_device != null) { ((DisposeBase)_device).Dispose(); _device = null; } } public bool CreateDeviceD3D(IntPtr hWnd) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) SwapChainDescription val = default(SwapChainDescription); val.BufferCount = 2; val.ModeDescription = new ModeDescription { Width = 0, Height = 0, Format = (Format)28, RefreshRate = new Rational(60, 1) }; val.Usage = (Usage)32; val.OutputHandle = hWnd; val.SampleDescription = new SampleDescription(1, 0); val.IsWindowed = RawBool.op_Implicit(true); val.SwapEffect = (SwapEffect)0; val.Flags = (SwapChainFlags)2; SwapChainDescription val2 = val; FeatureLevel[] array = (FeatureLevel[])(object)new FeatureLevel[2] { (FeatureLevel)45056, (FeatureLevel)40960 }; try { Device.CreateWithSwapChain((DriverType)1, (DeviceCreationFlags)0, array, val2, ref _device, ref _swapChain); } catch (Exception data) { Log.Error(data, "/home/runner/work/OverlayDearImGui/OverlayDearImGui/OverlayDearImGui.Shared/Overlay.cs", "CreateDeviceD3D", 146); try { Device.CreateWithSwapChain((DriverType)5, (DeviceCreationFlags)0, array, val2, ref _device, ref _swapChain); } catch (Exception data2) { Log.Error(data2, "/home/runner/work/OverlayDearImGui/OverlayDearImGui/OverlayDearImGui.Shared/Overlay.cs", "CreateDeviceD3D", 161); return false; } } _deviceContext = _device.ImmediateContext; CreateRenderTarget(); return true; } private unsafe static void CloneRenderData() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) ImGuiPlatformIOPtr platformIO = ImGui.GetPlatformIO(); DisposableList<ClonedDrawData> disposableList = new DisposableList<ClonedDrawData>(((ImGuiPlatformIOPtr)(ref platformIO)).Viewports.Size); for (int i = 0; i < ((ImGuiPlatformIOPtr)(ref platformIO)).Viewports.Size; i++) { ImGuiViewportPtr val = ((ImGuiPlatformIOPtr)(ref platformIO)).Viewports[i]; if (!((Enum)((ImGuiViewportPtr)(ref val)).Flags).HasFlag((Enum)(object)(ImGuiViewportFlags)4096)) { disposableList.Add(new ClonedDrawData(new ImDrawDataPtr(ImDrawDataPtr.op_Implicit(((ImGuiViewportPtr)(ref val)).DrawData)))); } } lock (_drawDataLock) { _nextFrameDrawData?.Dispose(); _nextFrameDrawData = disposableList; } } internal static void UpdateOverlayDrawData() { ImGui.GetCurrentContext(); ImGuiDX11Impl.NewFrame(); ImGuiWin32Impl.NewFrame(); ImGui.NewFrame(); if (IsOpen && Overlay.OnRender != null) { Delegate[] invocationList = Overlay.OnRender.GetInvocationList(); for (int i = 0; i < invocationList.Length; i++) { Action action = (Action)invocationList[i]; try { action(); } catch (Exception data) { Log.Error(data, "/home/runner/work/OverlayDearImGui/OverlayDearImGui/OverlayDearImGui.Shared/Overlay.cs", "UpdateOverlayDrawData", 216); } } } ImGui.Render(); CloneRenderData(); } public unsafe void Render(string windowName, string windowClass, string assetsFolderPath, string imguiIniConfigFolderPath, IConfigEntry<VirtualKey> overlayToggleKeybind) { //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Unknown result type (might be due to invalid IL or missing references) //IL_013a: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Unknown result type (might be due to invalid IL or missing references) //IL_0355: Unknown result type (might be due to invalid IL or missing references) //IL_035c: Unknown result type (might be due to invalid IL or missing references) //IL_0363: Unknown result type (might be due to invalid IL or missing references) //IL_036a: Unknown result type (might be due to invalid IL or missing references) //IL_0371: Unknown result type (might be due to invalid IL or missing references) //IL_03f5: Unknown result type (might be due to invalid IL or missing references) ImGuiIniConfigPath = Path.Combine(imguiIniConfigFolderPath, "iDeathHD.OverlayDearImGui_imgui.ini"); AssetsFolderPath = assetsFolderPath ?? Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "Assets"); OverlayToggle = overlayToggleKeybind; GameHwnd = User32.FindWindowW(windowClass, windowName); User32.GetWindowRect(GameHwnd, out _gameRect); (IntPtr hwnd, WNDCLASSEXW wc) tuple = WindowFactory.CreateClassicWindow("OverlayDearImGui"); IntPtr item = tuple.hwnd; WNDCLASSEXW item2 = tuple.wc; MARGINS mARGINS = default(MARGINS); mARGINS.cxLeftWidth = -1; MARGINS margins = mARGINS; Dwmapi.DwmExtendFrameIntoClientArea(item, ref margins); if (!CreateDeviceD3D(item)) { CleanupDeviceD3D(); User32.UnregisterClass(item2.lpszClassName, item2.hInstance); Log.Error("Failed CreateDeviceD3D", "/home/runner/work/OverlayDearImGui/OverlayDearImGui/OverlayDearImGui.Shared/Overlay.cs", "Render", 246); return; } User32.ShowWindow(item, User32.ShowWindowCommand.ShowDefault); User32.UpdateWindow(item); ImGui.CreateContext(); ImGuiIOPtr iO = ImGui.GetIO(); ref ImGuiConfigFlags configFlags = ref ((ImGuiIOPtr)(ref iO)).ConfigFlags; configFlags = (ImGuiConfigFlags)((uint)configFlags | 3u); ((ImGuiIO)((ImGuiIOPtr)(ref iO)).NativePtr).IniFilename = (byte*)(void*)Marshal.StringToHGlobalAnsi(ImGuiIniConfigPath); ImGui.StyleColorsDark(); string text = Path.Combine(AssetsFolderPath, "Fonts", "Bombardier-Regular.ttf"); ImFontAtlasPtr fonts = ((ImGuiIOPtr)(ref iO)).Fonts; ImFontPtr val = ((ImFontAtlasPtr)(ref fonts)).AddFontFromFileTTF(text, 16f); ((ImGuiIO)((ImGuiIOPtr)(ref iO)).NativePtr).FontDefault = ImFontPtr.op_Implicit(val); ImGuiWin32Impl.Init(item); ImGuiDX11Impl.Init((void*)((CppObject)_device).NativePointer, (void*)((CppObject)_deviceContext).NativePointer); bool flag = false; ToggleOverlay(item); RawVector4 val2 = default(RawVector4); ((RawVector4)(ref val2))..ctor(0f, 0f, 0f, 0f); bool flag2 = false; while (!flag2) { User32.MSG lpMsg; while (User32.PeekMessage(out lpMsg, item, 0u, 0u, 1u)) { User32.TranslateMessage(ref lpMsg); User32.DispatchMessage(ref lpMsg); if (lpMsg.message == WindowMessage.WM_QUIT) { flag2 = true; break; } } bool num = (User32.GetAsyncKeyState(OverlayToggle.Get()) & 0x8000) != 0; if (num && !flag) { ToggleOverlay(item); } flag = num; if (_resizeWidth != 0 && _resizeHeight != 0) { CleanupRenderTarget(); _swapChain.ResizeBuffers(0, (int)_resizeWidth, (int)_resizeHeight, (Format)0, (SwapChainFlags)0); _resizeWidth = (_resizeHeight = 0u); CreateRenderTarget(); } IntPtr foregroundWindow = User32.GetForegroundWindow(); if (!(foregroundWindow == item) && !(foregroundWindow == GameHwnd)) { Kernel32.Sleep(16u); } bool flag3 = User32.IsWindowVisible(GameHwnd); User32.ShowWindow(item, flag3 ? User32.ShowWindowCommand.Show : User32.ShowWindowCommand.Hide); if (!flag3) { Kernel32.Sleep(16u); } User32.GetWindowRect(GameHwnd, out var lpRect); if (lpRect.Left != GameRect.Left || lpRect.Bottom != GameRect.Bottom || lpRect.Top != GameRect.Top || lpRect.Right != GameRect.Right) { GameRect = lpRect; User32.SetWindowPos(item, (IntPtr)(-2), GameRect.X, GameRect.Y, GameRect.Width, GameRect.Height, 8u); } User32.SetWindowDisplayAffinity(item, User32.DisplayAffinity.None); _deviceContext.OutputMerger.SetRenderTargets(_mainRenderTargetView); _deviceContext.ClearRenderTargetView(_mainRenderTargetView, new RawColor4(val2.X, val2.Y, val2.Z, val2.W)); DisposableList<ClonedDrawData> disposableList = null; lock (_drawDataLock) { if (_nextFrameDrawData != null) { _currentRenderDrawData?.Dispose(); _currentRenderDrawData = _nextFrameDrawData; _nextFrameDrawData = null; } disposableList = _currentRenderDrawData; } if (disposableList != null && disposableList.Count > 0) { ImGuiDX11Impl.RenderDrawData(disposableList[0].Data); } _swapChain.Present(1, (PresentFlags)0); } ImGuiDX11Impl.Shutdown(); ImGuiWin32Impl.Shutdown(); ImGui.DestroyContext(); CleanupDeviceD3D(); User32.DestroyWindow(item); User32.UnregisterClass(item2.lpszClassName, item2.hInstance); } private static void ToggleOverlay(IntPtr hwnd) { IsOpen = !IsOpen; if (IsOpen) { User32.ShowWindow(hwnd, User32.ShowWindowCommand.Restore); User32.ShowWindow(hwnd, User32.ShowWindowCommand.Show); User32.SetForegroundWindow(hwnd); } else { User32.ShowWindow(hwnd, User32.ShowWindowCommand.Hide); User32.ShowWindow(hwnd, User32.ShowWindowCommand.Minimize); User32.BringWindowToTop(GameHwnd); User32.SetForegroundWindow(GameHwnd); } } public static IntPtr WndProc(IntPtr hWnd, WindowMessage msg, IntPtr wParam, IntPtr lParam) { if (ImGuiWin32Impl.WndProcHandler(hWnd, msg, wParam, lParam) != IntPtr.Zero) { return new IntPtr(1); } return User32.DefWindowProc(hWnd, msg, wParam, lParam); } } } namespace OverlayDearImGui.Windows { public static class Dwmapi { public struct DWM_BLURBEHIND { public DWM_BB dwFlags; public bool fEnable; public IntPtr hRgnBlur; public bool fTransitionOnMaximized; public bool TransitionOnMaximized { get { return fTransitionOnMaximized; } set { fTransitionOnMaximized = value; dwFlags |= DWM_BB.TransitionMaximized; } } public DWM_BLURBEHIND(bool enabled) { fEnable = enabled; hRgnBlur = IntPtr.Zero; fTransitionOnMaximized = false; dwFlags = DWM_BB.Enable; } } [Flags] public enum DWM_BB { Enable = 1, BlurRegion = 2, TransitionMaximized = 4 } [DllImport("dwmapi.dll")] public static extern int DwmGetColorizationColor(out uint ColorizationColor, [MarshalAs(UnmanagedType.Bool)] out bool ColorizationOpaqueBlend); [DllImport("dwmapi.dll")] public static extern int DwmIsCompositionEnabled(out bool enabled); [DllImport("dwmapi.dll")] public static extern void DwmEnableBlurBehindWindow(IntPtr hwnd, ref DWM_BLURBEHIND blurBehind); [DllImport("dwmapi.dll")] public static extern int DwmExtendFrameIntoClientArea(IntPtr hwnd, ref MARGINS margins); } public static class Gdi32 { [DllImport("gdi32.dll")] public static extern int GetDeviceCaps(IntPtr hdc, int nIndex); [DllImport("gdi32.dll")] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool DeleteObject([In] IntPtr hObject); [DllImport("gdi32.dll")] public static extern IntPtr CreateRectRgn(int nLeftRect, int nTopRect, int nRightRect, int nBottomRect); } public static class User32 { public enum GetWindowType : uint { GW_HWNDFIRST, GW_HWNDLAST, GW_HWNDNEXT, GW_HWNDPREV, GW_OWNER, GW_CHILD, GW_ENABLEDPOPUP } public struct MSG { public IntPtr hwnd; public WindowMessage message; public IntPtr wParam; public IntPtr lParam; public uint time; public POINT pt; } public struct POINT { public int X; public int Y; public POINT(int x, int y) { X = x; Y = y; } } public enum SystemMetric { SM_ARRANGE = 56, SM_CLEANBOOT = 67, SM_CMONITORS = 80, SM_CMOUSEBUTTONS = 43, SM_CXBORDER = 5, SM_CXCURSOR = 13, SM_CXDLGFRAME = 7, SM_CXDOUBLECLK = 36, SM_CXDRAG = 68, SM_CXEDGE = 45, SM_CXFIXEDFRAME = 7, SM_CXFOCUSBORDER = 83, SM_CXFRAME = 32, SM_CXFULLSCREEN = 16, SM_CXHSCROLL = 21, SM_CXHTHUMB = 10, SM_CXICON = 11, SM_CXICONSPACING = 38, SM_CXMAXIMIZED = 61, SM_CXMAXTRACK = 59, SM_CXMENUCHECK = 71, SM_CXMENUSIZE = 54, SM_CXMIN = 28, SM_CXMINIMIZED = 57, SM_CXMINSPACING = 47, SM_CXMINTRACK = 34, SM_CXPADDEDBORDER = 92, SM_CXSCREEN = 0, SM_CXSIZE = 30, SM_CXSIZEFRAME = 32, SM_CXSMICON = 49, SM_CXSMSIZE = 52, SM_CXVIRTUALSCREEN = 78, SM_CXVSCROLL = 2, SM_CYBORDER = 6, SM_CYCAPTION = 4, SM_CYCURSOR = 14, SM_CYDLGFRAME = 8, SM_CYDOUBLECLK = 37, SM_CYDRAG = 69, SM_CYEDGE = 46, SM_CYFIXEDFRAME = 8, SM_CYFOCUSBORDER = 84, SM_CYFRAME = 33, SM_CYFULLSCREEN = 17, SM_CYHSCROLL = 3, SM_CYICON = 12, SM_CYICONSPACING = 39, SM_CYKANJIWINDOW = 18, SM_CYMAXIMIZED = 62, SM_CYMAXTRACK = 60, SM_CYMENU = 15, SM_CYMENUCHECK = 72, SM_CYMENUSIZE = 55, SM_CYMIN = 29, SM_CYMINIMIZED = 58, SM_CYMINSPACING = 48, SM_CYMINTRACK = 35, SM_CYSCREEN = 1, SM_CYSIZE = 31, SM_CYSIZEFRAME = 33, SM_CYSMCAPTION = 51, SM_CYSMICON = 50, SM_CYSMSIZE = 53, SM_CYVIRTUALSCREEN = 79, SM_CYVSCROLL = 20, SM_CYVTHUMB = 9, SM_DBCSENABLED = 42, SM_DEBUG = 22, SM_DIGITIZER = 94, SM_IMMENABLED = 82, SM_MAXIMUMTOUCHES = 95, SM_MEDIACENTER = 87, SM_MENUDROPALIGNMENT = 40, SM_MIDEASTENABLED = 74, SM_MOUSEPRESENT = 19, SM_MOUSEHORIZONTALWHEELPRESENT = 91, SM_MOUSEWHEELPRESENT = 75, SM_NETWORK = 63, SM_PENWINDOWS = 41, SM_REMOTECONTROL = 8193, SM_REMOTESESSION = 4096, SM_SAMEDISPLAYFORMAT = 81, SM_SECURE = 44, SM_SERVERR2 = 89, SM_SHOWSOUNDS = 70, SM_SHUTTINGDOWN = 8192, SM_SLOWMACHINE = 73, SM_STARTER = 88, SM_SWAPBUTTON = 23, SM_TABLETPC = 86, SM_XVIRTUALSCREEN = 76, SM_YVIRTUALSCREEN = 77 } [Flags] public enum KeyFlag { KF_EXTENDED = 0x100, KF_DLGMODE = 0x800, KF_MENUMODE = 0x1000, KF_ALTDOWN = 0x2000, KF_REPEAT = 0x4000, KF_UP = 0x8000 } public enum ShowWindowCommand { Hide, ShowNormal, ShowMinimized, ShowMaximized, ShowNoActivate, Show, Minimize, ShowMinNoActive, ShowNA, Restore, ShowDefault, ForceMinimize } [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] public struct MonitorInfoEx { public int Size; public RectStruct Monitor; public RectStruct WorkArea; public uint Flags; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] public string DeviceName; public void Init() { Size = 104; DeviceName = string.Empty; } } public struct RectStruct { public int Left; public int Top; public int Right; public int Bottom; } [Flags] public enum TMEFlags : uint { TME_CANCEL = 0x80000000u, TME_HOVER = 1u, TME_LEAVE = 2u, TME_NONCLIENT = 0x10u, TME_QUERY = 0x40000000u } public struct TRACKMOUSEEVENT { public int cbSize; [MarshalAs(UnmanagedType.U4)] public TMEFlags dwFlags; public IntPtr hWnd; public uint dwHoverTime; public TRACKMOUSEEVENT(TMEFlags dwFlags, IntPtr hWnd, uint dwHoverTime) { cbSize = Marshal.SizeOf(typeof(TRACKMOUSEEVENT)); this.dwFlags = dwFlags; this.hWnd = hWnd; this.dwHoverTime = dwHoverTime; } } public enum DisplayAffinity : uint { None, Monitor } [Flags] public enum WindowStylesEx : uint { WS_EX_ACCEPTFILES = 0x10u, WS_EX_APPWINDOW = 0x40000u, WS_EX_CLIENTEDGE = 0x200u, WS_EX_COMPOSITED = 0x2000000u, WS_EX_CONTEXTHELP = 0x400u, WS_EX_CONTROLPARENT = 0x10000u, WS_EX_DLGMODALFRAME = 1u, WS_EX_LAYERED = 0x80000u, WS_EX_LAYOUTRTL = 0x400000u, WS_EX_LEFT = 0u, WS_EX_LEFTSCROLLBAR = 0x4000u, WS_EX_LTRREADING = 0u, WS_EX_MDICHILD = 0x40u, WS_EX_NOACTIVATE = 0x8000000u, WS_EX_NOINHERITLAYOUT = 0x100000u, WS_EX_NOPARENTNOTIFY = 4u, WS_EX_OVERLAPPEDWINDOW = 0x300u, WS_EX_PALETTEWINDOW = 0x188u, WS_EX_RIGHT = 0x1000u, WS_EX_RIGHTSCROLLBAR = 0u, WS_EX_RTLREADING = 0x2000u, WS_EX_STATICEDGE = 0x20000u, WS_EX_TOOLWINDOW = 0x80u, WS_EX_TOPMOST = 8u, WS_EX_TRANSPARENT = 0x20u, WS_EX_WINDOWEDGE = 0x100u } private const int CCHDEVICENAME = 32; public const uint SWP_NOREDRAW = 8u; public const int GWL_EXSTYLE = -20; public const uint PM_REMOVE = 1u; [DllImport("user32.dll")] public static extern IntPtr SetThreadDpiAwarenessContext(IntPtr dpiContext); [DllImport("user32.dll", SetLastError = true)] public static extern bool GetWindowRect(IntPtr hwnd, out RECT lpRect); [DllImport("user32.dll")] public static extern bool SetLayeredWindowAttributes(IntPtr hwnd, uint crKey, byte bAlpha, uint dwFlags); [DllImport("user32.dll")] public static extern bool UnregisterClass(string lpClassName, IntPtr hInstance); [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool IsWindowVisible(IntPtr hWnd); [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool SetForegroundWindow(IntPtr hWnd); [DllImport("user32.dll")] public static extern bool ShowWindow(IntPtr hWnd, ShowWindowCommand nCmdShow); [DllImport("user32.dll")] public static extern bool BringWindowToTop(IntPtr hWnd); [DllImport("user32.dll")] public static extern bool UpdateWindow(IntPtr hWnd); [DllImport("user32.dll")] public static extern IntPtr DefWindowProc(IntPtr hWnd, WindowMessage uMsg, IntPtr wParam, IntPtr lParam); [DllImport("user32.dll")] public static extern void PostQuitMessage(int nExitCode); [DllImport("user32.dll")] public static extern IntPtr GetThreadDpiAwarenessContext(); [DllImport("user32.dll")] public static extern IntPtr MonitorFromWindow(IntPtr hwnd, uint dwFlags); [DllImport("User32.dll")] public static extern bool GetMonitorInfo(IntPtr hMonitor, ref MonitorInfoEx lpmi); [DllImport("user32.dll")] public static extern IntPtr GetDC(IntPtr hWnd); [DllImport("user32.dll")] public static extern int GetSystemMetrics(SystemMetric smIndex); [DllImport("user32.dll")] public static extern bool ReleaseDC(IntPtr hWnd, IntPtr hDC); [DllImport("user32.dll", SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool IsWindowUnicode(IntPtr hWnd); [DllImport("user32.dll")] public static extern bool IsChild(IntPtr hWndParent, IntPtr hWnd); [DllImport("user32.dll", CharSet = CharSet.Unicode, SetLastError = true)] public static extern ushort RegisterClassExW(ref WNDCLASSEXW lpwcx); [DllImport("user32.dll", SetLastError = true)] public static extern bool SetProcessDPIAware(); [DllImport("user32.dll", CharSet = CharSet.Unicode, SetLastError = true)] public static extern IntPtr FindWindowW(string lpClassName, string lpWindowName); [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern int MessageBox(IntPtr hWnd, string text, string caption, int options); [DllImport("user32.dll")] public static extern bool AdjustWindowRectEx(ref RECT lpRect, uint dwStyle, bool bMenu, uint dwExStyle); [DllImport("user32.dll")] public static extern short GetAsyncKeyState(VirtualKey vKey); public static IntPtr CreateWindowW([Optional][In] string lpClassName, [Optional][In] string lpWindowName, [In] uint dwStyle, [In] int X, [In] int Y, [In] int nWidth, [In] int nHeight, [Optional][In] IntPtr hWndParent, [Optional][In] IntPtr hMenu, [Optional][In] IntPtr hInstance, [Optional][In] IntPtr lpParam) { return CreateWindowExW(0u, lpClassName, lpWindowName, dwStyle, X, Y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam); } [DllImport("user32.dll")] public static extern int TrackMouseEvent(ref TRACKMOUSEEVENT lpEventTrack); [DllImport("user32.dll")] public static extern bool ReleaseCapture(); [DllImport("user32.dll")] public static extern IntPtr SetCapture(IntPtr hWnd); [DllImport("user32.dll")] public static extern IntPtr GetCapture(); [DllImport("user32.dll")] public static extern bool GetClientRect(IntPtr hWnd, out RECT lpRect); [DllImport("user32.dll")] public static extern bool ScreenToClient(IntPtr hWnd, ref POINT lpPoint); [DllImport("user32.dll")] public static extern IntPtr WindowFromPoint(POINT p); [DllImport("user32.dll")] public static extern bool ClientToScreen(IntPtr hWnd, ref POINT lpPoint); [DllImport("user32.dll")] public static extern IntPtr GetForegroundWindow(); [DllImport("user32.dll", CharSet = CharSet.Unicode, SetLastError = true)] public static extern IntPtr CreateWindowExW(uint dwExStyle, [MarshalAs(UnmanagedType.LPWStr)] string lpClassName, [MarshalAs(UnmanagedType.LPWStr)] string lpWindowName, uint dwStyle, int X, int Y, int nWidth, int nHeight, IntPtr hWndParent, IntPtr hMenu, IntPtr hInstance, IntPtr lpParam); [DllImport("user32.dll", SetLastError = true)] public static extern IntPtr GetWindow(IntPtr hWnd, GetWindowType uCmd); [DllImport("user32.dll", SetLastError = true)] public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags); [DllImport("user32.dll")] public static extern bool SetWindowDisplayAffinity(IntPtr hwnd, DisplayAffinity affinity); [DllImport("user32.dll", CharSet = CharSet.Unicode, SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool DestroyWindow(IntPtr hwnd); public static IntPtr SetWindowLongPtr(IntPtr hWnd, int nIndex, IntPtr dwNewLong) { if (IntPtr.Size == 8) { return SetWindowLongPtr64(hWnd, nIndex, dwNewLong); } return new IntPtr(SetWindowLong32(hWnd, nIndex, dwNewLong.ToInt32())); } [DllImport("user32.dll", EntryPoint = "SetWindowLong")] private static extern int SetWindowLong32(HandleRef hWnd, int nIndex, int dwNewLong); [DllImport("user32.dll", EntryPoint = "SetWindowLongPtr")] private static extern IntPtr SetWindowLongPtr64(HandleRef hWnd, int nIndex, IntPtr dwNewLong); [DllImport("USER32.dll")] public static extern short GetKeyState(VirtualKey nVirtKey); [DllImport("user32.dll")] public static extern IntPtr GetMessageExtraInfo(); [DllImport("user32.dll")] public static extern IntPtr DispatchMessage([In] ref MSG lpmsg); [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool PeekMessage(out MSG lpMsg, IntPtr hWnd, uint wMsgFilterMin, uint wMsgFilterMax, uint wRemoveMsg); [DllImport("user32.dll")] public static extern bool TranslateMessage([In] ref MSG lpMsg); [DllImport("user32.dll")] public static extern IntPtr LoadCursor(IntPtr hInstance, int lpCursorName); [DllImport("user32.dll")] public static extern IntPtr SetCursor(IntPtr handle); [DllImport("user32.dll", EntryPoint = "GetWindowLong")] public static extern IntPtr GetWindowLongPtr32(IntPtr hWnd, int nIndex); [DllImport("user32.dll", EntryPoint = "GetWindowLongPtr")] public static extern IntPtr GetWindowL
plugins/OverlayDearImGui.Shared/SharpDX.DXGI.dll
Decompiled a month ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Resources; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using SharpDX.DXGI; using SharpDX.Direct3D; using SharpDX.Mathematics.Interop; using SharpDX.Win32; [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: InternalsVisibleTo("SharpDX.Direct3D10")] [assembly: InternalsVisibleTo("SharpDX.Direct3D11")] [assembly: InternalsVisibleTo("SharpDX.Direct2D1")] [assembly: ComVisible(false)] [assembly: AssemblyFileVersion("4.2.1.34")] [assembly: AssemblyInformationalVersion("4.2.1-beta0+7abb72df54")] [assembly: AssemblyCompany("Alexandre Mutel")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyCopyright("Copyright (c) 2010-2016 Alexandre Mutel")] [assembly: AssemblyDescription("Assembly providing DirectX - DXGI managed API.")] [assembly: AssemblyProduct("SharpDX.DXGI")] [assembly: AssemblyTitle("SharpDX.DXGI")] [assembly: AssemblyMetadata("RepositoryUrl", "https://github.com/xiaoxiao921/SharpDX")] [assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")] [assembly: NeutralResourcesLanguage("en-US")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("4.2.0.0")] [module: UnverifiableCode] internal class <Module> { static <Module>() { ModuleInit.Setup(); } } internal sealed class ThisAssembly { internal const string AssemblyVersion = "4.2.0.0"; internal const string AssemblyFileVersion = "4.2.1.34"; internal const string AssemblyInformationalVersion = "4.2.1-beta0+7abb72df54"; internal const string AssemblyName = "SharpDX.DXGI"; internal const string AssemblyTitle = "SharpDX.DXGI"; internal const string AssemblyConfiguration = "Release"; internal const string GitCommitId = "7abb72df544eaede656c546ee71a8ad1be9dd19b"; internal const string RootNamespace = "SharpDX.DXGI"; private ThisAssembly() { } } namespace SharpDX.DXGI; [Guid("2411e7e1-12ac-4ccf-bd14-9798e8534dc0")] public class Adapter : DXGIObject { public Output[] Outputs { get { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) List<Output> list = new List<Output>(); Output outputOut; while (!(GetOutput(list.Count, out outputOut) == ResultDescriptor.op_Implicit(ResultCode.NotFound)) && outputOut != null) { list.Add(outputOut); } return list.ToArray(); } } public AdapterDescription Description { get { GetDescription(out var descRef); return descRef; } } public bool IsInterfaceSupported(Type type) { long userModeVersion; return IsInterfaceSupported(type, out userModeVersion); } public bool IsInterfaceSupported<T>() where T : ComObject { long userModeVersion; return IsInterfaceSupported(typeof(T), out userModeVersion); } public bool IsInterfaceSupported<T>(out long userModeVersion) where T : ComObject { return IsInterfaceSupported(typeof(T), out userModeVersion); } public bool IsInterfaceSupported(Type type, out long userModeVersion) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) Result val = CheckInterfaceSupport(Utilities.GetGuidFromType(type), out userModeVersion); return ((Result)(ref val)).Success; } public Output GetOutput(int outputIndex) { //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) Output outputOut; Result output = GetOutput(outputIndex, out outputOut); ((Result)(ref output)).CheckError(); return outputOut; } public int GetOutputCount() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) int i; Output outputOut; for (i = 0; !(GetOutput(i, out outputOut) == ResultDescriptor.op_Implicit(ResultCode.NotFound)); i++) { if (outputOut == null) { break; } ((DisposeBase)outputOut).Dispose(); } return i; } public Adapter(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator Adapter(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new Adapter(nativePtr); } return null; } internal unsafe Result GetOutput(int output, out Output outputOut) { //IL_0027: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; Result result = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, int, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)7 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, output, &zero)); if (zero != IntPtr.Zero) { outputOut = new Output(zero); return result; } outputOut = null; return result; } internal unsafe void GetDescription(out AdapterDescription descRef) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) AdapterDescription.__Native @ref = default(AdapterDescription.__Native); descRef = default(AdapterDescription); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)8 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, &@ref)); descRef.__MarshalFrom(ref @ref); ((Result)(ref val)).CheckError(); } internal unsafe Result CheckInterfaceSupport(Guid interfaceName, out long uMDVersionRef) { //IL_0027: Unknown result type (might be due to invalid IL or missing references) Result result; fixed (long* ptr = &uMDVersionRef) { void* ptr2 = ptr; result = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)9 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, &interfaceName, ptr2)); } return result; } } [CompilerGenerated] internal class AssemblyDoc { } public static class DebugId { public static readonly Guid All = new Guid("e48ae283-da80-490b-87e6-43e9a9cfda08"); public static readonly Guid App = new Guid("06cd6e01-4219-4ebd-8709-27ed23360c62"); public static readonly Guid Dx = new Guid("35cdd7fc-13b2-421d-a5d7-7e4451287d64"); public static readonly Guid Dxgi = new Guid("25cddaa4-b1c6-47e1-ac3e-98875b5a2e2a"); } internal static class DebugInterface { [UnmanagedFunctionPointer(CallingConvention.Winapi)] private delegate Result GetDebugInterface(ref Guid guid, out IntPtr result); private static readonly GetDebugInterface getDebugInterface; static DebugInterface() { getDebugInterface = null; } public static bool TryCreateComPtr<T>(out IntPtr comPtr) where T : class { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) comPtr = IntPtr.Zero; if (getDebugInterface == null) { return false; } Guid guid = typeof(T).GetTypeInfo().GUID; Result val = getDebugInterface(ref guid, out comPtr); if (((Result)(ref val)).Failure) { return false; } return comPtr != IntPtr.Zero; } } [Guid("54ec77fa-1377-44e6-8c32-88fd5f44c84c")] public class Device : DXGIObject { public Adapter Adapter { get { GetAdapter(out var adapterRef); return adapterRef; } } public int GPUThreadPriority { get { GetGPUThreadPriority(out var priorityRef); return priorityRef; } set { SetGPUThreadPriority(value); } } public Residency[] QueryResourceResidency(params ComObject[] comObjects) { int num = comObjects.Length; Residency[] array = new Residency[num]; QueryResourceResidency((IUnknown[])(object)comObjects, array, num); return array; } public Device(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator Device(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new Device(nativePtr); } return null; } internal unsafe void GetAdapter(out Adapter adapterRef) { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)7 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, &zero)); if (zero != IntPtr.Zero) { adapterRef = new Adapter(zero); } else { adapterRef = null; } ((Result)(ref val)).CheckError(); } internal unsafe void CreateSurface(ref SurfaceDescription descRef, int numSurfaces, int usage, SharedResource? sharedResourceRef, out Surface surfaceOut) { //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; SharedResource value = default(SharedResource); if (sharedResourceRef.HasValue) { value = sharedResourceRef.Value; } Result val; fixed (SurfaceDescription* ptr = &descRef) { void* ptr2 = ptr; void* nativePointer = ((CppObject)this)._nativePointer; SharedResource* intPtr = ((!sharedResourceRef.HasValue) ? null : (&value)); val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, int, int, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)8 * (nint)sizeof(void*))))(nativePointer, ptr2, numSurfaces, usage, intPtr, &zero)); } if (zero != IntPtr.Zero) { surfaceOut = new Surface(zero); } else { surfaceOut = null; } ((Result)(ref val)).CheckError(); } internal unsafe void QueryResourceResidency(IUnknown[] resourcesOut, Residency[] residencyStatusRef, int numResources) { //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) IntPtr* ptr = null; if (resourcesOut != null) { ptr = stackalloc IntPtr[resourcesOut.Length]; } if (resourcesOut != null) { for (int i = 0; i < resourcesOut.Length; i++) { ptr[i] = CppObject.ToCallbackPtr<IUnknown>((ICallbackable)(object)resourcesOut[i]); } } Result val; fixed (Residency* ptr2 = residencyStatusRef) { void* ptr3 = ptr2; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, int, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)9 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, ptr, ptr3, numResources)); } ((Result)(ref val)).CheckError(); } internal unsafe void SetGPUThreadPriority(int priority) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, int, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)10 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, priority)); ((Result)(ref val)).CheckError(); } internal unsafe void GetGPUThreadPriority(out int priorityRef) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) Result val; fixed (int* ptr = &priorityRef) { void* ptr2 = ptr; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)11 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, ptr2)); } ((Result)(ref val)).CheckError(); } } [Guid("3d3e0379-f9de-4d58-bb6c-18d62992f1a6")] public class DeviceChild : DXGIObject { public unsafe string DebugName { get { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) byte* ptr = stackalloc byte[1024]; int dataSizeRef = 1023; Result privateData = GetPrivateData(CommonGuid.DebugObjectName, ref dataSizeRef, new IntPtr(ptr)); if (((Result)(ref privateData)).Failure) { return string.Empty; } ptr[dataSizeRef] = 0; return Marshal.PtrToStringAnsi(new IntPtr(ptr)); } set { if (string.IsNullOrEmpty(value)) { SetPrivateData(CommonGuid.DebugObjectName, 0, IntPtr.Zero); return; } IntPtr dataRef = Utilities.StringToHGlobalAnsi(value); SetPrivateData(CommonGuid.DebugObjectName, value.Length, dataRef); } } public T GetDevice<T>() where T : ComObject { GetDevice(Utilities.GetGuidFromType(typeof(T)), out var deviceOut); return CppObject.FromPointer<T>(deviceOut); } public DeviceChild(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator DeviceChild(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new DeviceChild(nativePtr); } return null; } public unsafe void GetDevice(Guid riid, out IntPtr deviceOut) { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) Result val; fixed (IntPtr* ptr = &deviceOut) { void* ptr2 = ptr; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)7 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, &riid, ptr2)); } ((Result)(ref val)).CheckError(); } } [Guid("119E7452-DE9E-40fe-8806-88F90C12B441")] public class DXGIDebug : ComObject { public static DXGIDebug TryCreate() { if (!DebugInterface.TryCreateComPtr<DXGIDebug>(out var comPtr)) { return null; } return new DXGIDebug(comPtr); } public DXGIDebug(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator DXGIDebug(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new DXGIDebug(nativePtr); } return null; } public unsafe void ReportLiveObjects(Guid apiid, DebugRloFlags flags) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, Guid, int, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)3 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, apiid, (int)flags)); ((Result)(ref val)).CheckError(); } } [Guid("c5a05f0c-16f2-4adf-9f4d-a8c4d58ac550")] public class DXGIDebug1 : DXGIDebug { public RawBool IsLeakTrackingEnabledForThread => IsLeakTrackingEnabledForThread_(); public new static DXGIDebug1 TryCreate() { if (!DebugInterface.TryCreateComPtr<DXGIDebug1>(out var comPtr)) { return null; } return new DXGIDebug1(comPtr); } public DXGIDebug1(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator DXGIDebug1(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new DXGIDebug1(nativePtr); } return null; } public unsafe void EnableLeakTrackingForThread() { ((delegate* unmanaged[Stdcall]<void*, void>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)4 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer); } public unsafe void DisableLeakTrackingForThread() { ((delegate* unmanaged[Stdcall]<void*, void>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)5 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer); } internal unsafe RawBool IsLeakTrackingEnabledForThread_() { //IL_0018: Unknown result type (might be due to invalid IL or missing references) return ((delegate* unmanaged[Stdcall]<void*, RawBool>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)6 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer); } } [Guid("aec22fb8-76f3-4639-9be0-28eb43a67a2e")] public class DXGIObject : ComObject { public T GetParent<T>() where T : ComObject { GetParent(Utilities.GetGuidFromType(typeof(T)), out var parentOut); return CppObject.FromPointer<T>(parentOut); } public DXGIObject(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator DXGIObject(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new DXGIObject(nativePtr); } return null; } public unsafe void SetPrivateData(Guid name, int dataSize, IntPtr dataRef) { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, int, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)3 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, &name, dataSize, (void*)dataRef)); ((Result)(ref val)).CheckError(); } public unsafe void SetPrivateDataInterface(Guid name, IUnknown unknownRef) { //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; zero = CppObject.ToCallbackPtr<IUnknown>((ICallbackable)(object)unknownRef); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)4 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, &name, (void*)zero)); ((Result)(ref val)).CheckError(); } public unsafe Result GetPrivateData(Guid name, ref int dataSizeRef, IntPtr dataRef) { //IL_002c: Unknown result type (might be due to invalid IL or missing references) Result result; fixed (int* ptr = &dataSizeRef) { void* ptr2 = ptr; result = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)5 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, &name, ptr2, (void*)dataRef)); } return result; } public unsafe void GetParent(Guid riid, out IntPtr parentOut) { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) Result val; fixed (IntPtr* ptr = &parentOut) { void* ptr2 = ptr; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)6 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, &riid, ptr2)); } ((Result)(ref val)).CheckError(); } } [Guid("7b7166ec-21c7-44ae-b21a-c9ae321ae369")] public class Factory : DXGIObject { public Adapter[] Adapters { get { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) List<Adapter> list = new List<Adapter>(); Adapter adapterOut; while (!(GetAdapter(list.Count, out adapterOut) == ResultDescriptor.op_Implicit(ResultCode.NotFound))) { list.Add(adapterOut); } return list.ToArray(); } } public Adapter GetAdapter(int index) { //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) Adapter adapterOut; Result adapter = GetAdapter(index, out adapterOut); ((Result)(ref adapter)).CheckError(); return adapterOut; } public int GetAdapterCount() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) int num = 0; while (true) { Adapter adapterOut; Result adapter = GetAdapter(num, out adapterOut); if (adapterOut != null) { ((DisposeBase)adapterOut).Dispose(); } if (adapter == ResultDescriptor.op_Implicit(ResultCode.NotFound)) { break; } num++; } return num; } public Factory(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator Factory(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new Factory(nativePtr); } return null; } internal unsafe Result GetAdapter(int adapter, out Adapter adapterOut) { //IL_0027: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; Result result = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, int, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)7 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, adapter, &zero)); if (zero != IntPtr.Zero) { adapterOut = new Adapter(zero); return result; } adapterOut = null; return result; } public unsafe void MakeWindowAssociation(IntPtr windowHandle, WindowAssociationFlags flags) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, int, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)8 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (void*)windowHandle, (int)flags)); ((Result)(ref val)).CheckError(); } public unsafe IntPtr GetWindowAssociation() { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) IntPtr result = default(IntPtr); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)9 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, &result)); ((Result)(ref val)).CheckError(); return result; } internal unsafe void CreateSwapChain(IUnknown deviceRef, ref SwapChainDescription descRef, SwapChain swapChainOut) { //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; IntPtr zero2 = IntPtr.Zero; zero = CppObject.ToCallbackPtr<IUnknown>((ICallbackable)(object)deviceRef); Result val; fixed (SwapChainDescription* ptr = &descRef) { void* ptr2 = ptr; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)10 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (void*)zero, ptr2, &zero2)); } ((CppObject)swapChainOut).NativePointer = zero2; ((Result)(ref val)).CheckError(); } public unsafe Adapter CreateSoftwareAdapter(IntPtr module) { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)11 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (void*)module, &zero)); Adapter result = ((!(zero != IntPtr.Zero)) ? null : new Adapter(zero)); ((Result)(ref val)).CheckError(); return result; } } [Guid("770aae78-f26f-4dba-a829-253c83d1b387")] public class Factory1 : Factory { public Adapter1[] Adapters1 { get { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) List<Adapter1> list = new List<Adapter1>(); Adapter1 adapterOut; while (!(GetAdapter1(list.Count, out adapterOut) == ResultDescriptor.op_Implicit(ResultCode.NotFound))) { list.Add(adapterOut); } return list.ToArray(); } } public RawBool IsCurrent => IsCurrent_(); public Factory1() : base(IntPtr.Zero) { DXGI.CreateDXGIFactory1(Utilities.GetGuidFromType(((object)this).GetType()), out var factoryOut); ((CppObject)this).NativePointer = factoryOut; } public Adapter1 GetAdapter1(int index) { //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) Adapter1 adapterOut; Result adapter = GetAdapter1(index, out adapterOut); ((Result)(ref adapter)).CheckError(); return adapterOut; } public int GetAdapterCount1() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) int num = 0; while (true) { Adapter1 adapterOut; Result adapter = GetAdapter1(num, out adapterOut); if (adapterOut != null) { ((DisposeBase)adapterOut).Dispose(); } if (adapter == ResultDescriptor.op_Implicit(ResultCode.NotFound)) { break; } num++; } return num; } public Factory1(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator Factory1(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new Factory1(nativePtr); } return null; } internal unsafe Result GetAdapter1(int adapter, out Adapter1 adapterOut) { //IL_0028: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; Result result = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, int, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)12 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, adapter, &zero)); if (zero != IntPtr.Zero) { adapterOut = new Adapter1(zero); return result; } adapterOut = null; return result; } internal unsafe RawBool IsCurrent_() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) return ((delegate* unmanaged[Stdcall]<void*, RawBool>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)13 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer); } } [Guid("50c83a1c-e072-4c48-87b0-3630fa36a6d0")] public class Factory2 : Factory1 { public RawBool IsWindowedStereoEnabled => IsWindowedStereoEnabled_(); public Factory2(bool debug = false) : this(IntPtr.Zero) { DXGI.CreateDXGIFactory2(debug ? 1 : 0, Utilities.GetGuidFromType(((object)this).GetType()), out var factoryOut); ((CppObject)this).NativePointer = factoryOut; } public Factory2(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator Factory2(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new Factory2(nativePtr); } return null; } internal unsafe RawBool IsWindowedStereoEnabled_() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) return ((delegate* unmanaged[Stdcall]<void*, RawBool>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)14 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer); } internal unsafe void CreateSwapChainForHwnd(IUnknown deviceRef, IntPtr hWnd, ref SwapChainDescription1 descRef, SwapChainFullScreenDescription? fullscreenDescRef, Output restrictToOutputRef, SwapChain1 swapChainOut) { //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; IntPtr zero2 = IntPtr.Zero; IntPtr zero3 = IntPtr.Zero; zero = CppObject.ToCallbackPtr<IUnknown>((ICallbackable)(object)deviceRef); SwapChainFullScreenDescription value = default(SwapChainFullScreenDescription); if (fullscreenDescRef.HasValue) { value = fullscreenDescRef.Value; } zero2 = CppObject.ToCallbackPtr<Output>((ICallbackable)(object)restrictToOutputRef); Result val; fixed (SwapChainDescription1* ptr = &descRef) { void* ptr2 = ptr; void* nativePointer = ((CppObject)this)._nativePointer; void* intPtr = (void*)zero; void* intPtr2 = (void*)hWnd; SwapChainFullScreenDescription* intPtr3 = ((!fullscreenDescRef.HasValue) ? null : (&value)); val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, void*, void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)15 * (nint)sizeof(void*))))(nativePointer, intPtr, intPtr2, ptr2, intPtr3, (void*)zero2, &zero3)); } ((CppObject)swapChainOut).NativePointer = zero3; ((Result)(ref val)).CheckError(); } internal unsafe void CreateSwapChainForCoreWindow(IUnknown deviceRef, IUnknown windowRef, ref SwapChainDescription1 descRef, Output restrictToOutputRef, SwapChain1 swapChainOut) { //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; IntPtr zero2 = IntPtr.Zero; IntPtr zero3 = IntPtr.Zero; IntPtr zero4 = IntPtr.Zero; zero = CppObject.ToCallbackPtr<IUnknown>((ICallbackable)(object)deviceRef); zero2 = CppObject.ToCallbackPtr<IUnknown>((ICallbackable)(object)windowRef); zero3 = CppObject.ToCallbackPtr<Output>((ICallbackable)(object)restrictToOutputRef); Result val; fixed (SwapChainDescription1* ptr = &descRef) { void* ptr2 = ptr; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)16 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (void*)zero, (void*)zero2, ptr2, (void*)zero3, &zero4)); } ((CppObject)swapChainOut).NativePointer = zero4; ((Result)(ref val)).CheckError(); } public unsafe void GetSharedResourceAdapterLuid(IntPtr hResource, out long luidRef) { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) Result val; fixed (long* ptr = &luidRef) { void* ptr2 = ptr; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)17 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (void*)hResource, ptr2)); } ((Result)(ref val)).CheckError(); } public unsafe void RegisterStereoStatusWindow(IntPtr windowHandle, int wMsg, out int dwCookieRef) { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) Result val; fixed (int* ptr = &dwCookieRef) { void* ptr2 = ptr; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, int, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)18 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (void*)windowHandle, wMsg, ptr2)); } ((Result)(ref val)).CheckError(); } public unsafe void RegisterStereoStatusEvent(IntPtr hEvent, out int dwCookieRef) { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) Result val; fixed (int* ptr = &dwCookieRef) { void* ptr2 = ptr; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)19 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (void*)hEvent, ptr2)); } ((Result)(ref val)).CheckError(); } public unsafe void UnregisterStereoStatus(int dwCookie) { ((delegate* unmanaged[Stdcall]<void*, int, void>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)20 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, dwCookie); } public unsafe void RegisterOcclusionStatusWindow(IntPtr windowHandle, int wMsg, out int dwCookieRef) { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) Result val; fixed (int* ptr = &dwCookieRef) { void* ptr2 = ptr; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, int, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)21 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (void*)windowHandle, wMsg, ptr2)); } ((Result)(ref val)).CheckError(); } public unsafe void RegisterOcclusionStatusEvent(IntPtr hEvent, out int dwCookieRef) { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) Result val; fixed (int* ptr = &dwCookieRef) { void* ptr2 = ptr; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)22 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (void*)hEvent, ptr2)); } ((Result)(ref val)).CheckError(); } public unsafe void UnregisterOcclusionStatus(int dwCookie) { ((delegate* unmanaged[Stdcall]<void*, int, void>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)23 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, dwCookie); } internal unsafe void CreateSwapChainForComposition(IUnknown deviceRef, ref SwapChainDescription1 descRef, Output restrictToOutputRef, SwapChain1 swapChainOut) { //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; IntPtr zero2 = IntPtr.Zero; IntPtr zero3 = IntPtr.Zero; zero = CppObject.ToCallbackPtr<IUnknown>((ICallbackable)(object)deviceRef); zero2 = CppObject.ToCallbackPtr<Output>((ICallbackable)(object)restrictToOutputRef); Result val; fixed (SwapChainDescription1* ptr = &descRef) { void* ptr2 = ptr; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)24 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (void*)zero, ptr2, (void*)zero2, &zero3)); } ((CppObject)swapChainOut).NativePointer = zero3; ((Result)(ref val)).CheckError(); } } [Guid("1bc6ea02-ef36-464f-bf0c-21ca39e5168a")] public class Factory4 : Factory3 { public Factory4() : this(IntPtr.Zero) { DXGI.CreateDXGIFactory1(Utilities.GetGuidFromType(((object)this).GetType()), out var factoryOut); ((CppObject)this).NativePointer = factoryOut; } public Factory4(bool debug = false) : this(IntPtr.Zero) { DXGI.CreateDXGIFactory2(debug ? 1 : 0, Utilities.GetGuidFromType(typeof(Factory4)), out var factoryOut); ((CppObject)this).NativePointer = factoryOut; } public Adapter GetWarpAdapter() { EnumWarpAdapter(Utilities.GetGuidFromType(typeof(Adapter)), out var vAdapterOut); return new Adapter(vAdapterOut); } public Adapter GetAdapterByLuid(long adapterLuid) { EnumAdapterByLuid(adapterLuid, Utilities.GetGuidFromType(typeof(Adapter)), out var vAdapterOut); return new Adapter(vAdapterOut); } public Factory4(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator Factory4(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new Factory4(nativePtr); } return null; } private unsafe void EnumAdapterByLuid(long adapterLuid, Guid riid, out IntPtr vAdapterOut) { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) Result val; fixed (IntPtr* ptr = &vAdapterOut) { void* ptr2 = ptr; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, long, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)26 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, adapterLuid, &riid, ptr2)); } ((Result)(ref val)).CheckError(); } private unsafe void EnumWarpAdapter(Guid riid, out IntPtr vAdapterOut) { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) Result val; fixed (IntPtr* ptr = &vAdapterOut) { void* ptr2 = ptr; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)27 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, &riid, ptr2)); } ((Result)(ref val)).CheckError(); } } [Guid("7632e1f5-ee65-4dca-87fd-84cd75f8838d")] public class Factory5 : Factory4 { public unsafe bool PresentAllowTearing { get { //IL_0015: Unknown result type (might be due to invalid IL or missing references) RawBool val = default(RawBool); CheckFeatureSupport(Feature.PresentAllowTearing, new IntPtr(&val), Unsafe.SizeOf<RawBool>()); return RawBool.op_Implicit(val); } } public Factory5(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator Factory5(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new Factory5(nativePtr); } return null; } public unsafe void CheckFeatureSupport(Feature feature, IntPtr featureSupportDataRef, int featureSupportDataSize) { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, int, void*, int, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)28 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (int)feature, (void*)featureSupportDataRef, featureSupportDataSize)); ((Result)(ref val)).CheckError(); } } public static class FormatHelper { private static readonly int[] sizeOfInBits; private static readonly bool[] compressedFormats; private static readonly bool[] srgbFormats; private static readonly bool[] typelessFormats; public static int SizeOfInBytes(this Format format) { return format.SizeOfInBits() >> 3; } public static int SizeOfInBits(this Format format) { return sizeOfInBits[(int)format]; } public static bool IsValid(this Format format) { if (format >= Format.R32G32B32A32_Typeless) { return format <= Format.B4G4R4A4_UNorm; } return false; } public static bool IsCompressed(this Format format) { return compressedFormats[(int)format]; } public static bool IsPacked(this Format format) { if (format != Format.R8G8_B8G8_UNorm) { return format == Format.G8R8_G8B8_UNorm; } return true; } public static bool IsVideo(this Format format) { switch (format) { case Format.AYUV: case Format.Y410: case Format.Y416: case Format.NV12: case Format.P010: case Format.P016: case Format.YUY2: case Format.Y210: case Format.Y216: case Format.NV11: return true; case Format.Opaque420: case Format.AI44: case Format.IA44: case Format.P8: case Format.A8P8: return true; default: return false; } } public static bool IsSRgb(this Format format) { return srgbFormats[(int)format]; } public static bool IsTypeless(this Format format) { return typelessFormats[(int)format]; } public static int ComputeScanlineCount(this Format format, int height) { if ((uint)(format - 70) <= 14u || (uint)(format - 94) <= 5u) { return Math.Max(1, (height + 3) / 4); } return height; } static FormatHelper() { sizeOfInBits = new int[256]; compressedFormats = new bool[256]; srgbFormats = new bool[256]; typelessFormats = new bool[256]; InitFormat(new Format[1] { Format.R1_UNorm }, 1); InitFormat(new Format[6] { Format.A8_UNorm, Format.R8_SInt, Format.R8_SNorm, Format.R8_Typeless, Format.R8_UInt, Format.R8_UNorm }, 8); InitFormat(new Format[15] { Format.B5G5R5A1_UNorm, Format.B5G6R5_UNorm, Format.D16_UNorm, Format.R16_Float, Format.R16_SInt, Format.R16_SNorm, Format.R16_Typeless, Format.R16_UInt, Format.R16_UNorm, Format.R8G8_SInt, Format.R8G8_SNorm, Format.R8G8_Typeless, Format.R8G8_UInt, Format.R8G8_UNorm, Format.B4G4R4A4_UNorm }, 16); InitFormat(new Format[38] { Format.B8G8R8X8_Typeless, Format.B8G8R8X8_UNorm, Format.B8G8R8X8_UNorm_SRgb, Format.D24_UNorm_S8_UInt, Format.D32_Float, Format.D32_Float_S8X24_UInt, Format.G8R8_G8B8_UNorm, Format.R10G10B10_Xr_Bias_A2_UNorm, Format.R10G10B10A2_Typeless, Format.R10G10B10A2_UInt, Format.R10G10B10A2_UNorm, Format.R11G11B10_Float, Format.R16G16_Float, Format.R16G16_SInt, Format.R16G16_SNorm, Format.R16G16_Typeless, Format.R16G16_UInt, Format.R16G16_UNorm, Format.R24_UNorm_X8_Typeless, Format.R24G8_Typeless, Format.R32_Float, Format.R32_Float_X8X24_Typeless, Format.R32_SInt, Format.R32_Typeless, Format.R32_UInt, Format.R8G8_B8G8_UNorm, Format.R8G8B8A8_SInt, Format.R8G8B8A8_SNorm, Format.R8G8B8A8_Typeless, Format.R8G8B8A8_UInt, Format.R8G8B8A8_UNorm, Format.R8G8B8A8_UNorm_SRgb, Format.B8G8R8A8_Typeless, Format.B8G8R8A8_UNorm, Format.B8G8R8A8_UNorm_SRgb, Format.R9G9B9E5_Sharedexp, Format.X24_Typeless_G8_UInt, Format.X32_Typeless_G8X24_UInt }, 32); InitFormat(new Format[11] { Format.R16G16B16A16_Float, Format.R16G16B16A16_SInt, Format.R16G16B16A16_SNorm, Format.R16G16B16A16_Typeless, Format.R16G16B16A16_UInt, Format.R16G16B16A16_UNorm, Format.R32G32_Float, Format.R32G32_SInt, Format.R32G32_Typeless, Format.R32G32_UInt, Format.R32G8X24_Typeless }, 64); InitFormat(new Format[4] { Format.R32G32B32_Float, Format.R32G32B32_SInt, Format.R32G32B32_Typeless, Format.R32G32B32_UInt }, 96); InitFormat(new Format[4] { Format.R32G32B32A32_Float, Format.R32G32B32A32_SInt, Format.R32G32B32A32_Typeless, Format.R32G32B32A32_UInt }, 128); InitFormat(new Format[6] { Format.BC1_Typeless, Format.BC1_UNorm, Format.BC1_UNorm_SRgb, Format.BC4_SNorm, Format.BC4_Typeless, Format.BC4_UNorm }, 4); InitFormat(new Format[15] { Format.BC2_Typeless, Format.BC2_UNorm, Format.BC2_UNorm_SRgb, Format.BC3_Typeless, Format.BC3_UNorm, Format.BC3_UNorm_SRgb, Format.BC5_SNorm, Format.BC5_Typeless, Format.BC5_UNorm, Format.BC6H_Sf16, Format.BC6H_Typeless, Format.BC6H_Uf16, Format.BC7_Typeless, Format.BC7_UNorm, Format.BC7_UNorm_SRgb }, 8); InitDefaults(new Format[21] { Format.BC1_Typeless, Format.BC1_UNorm, Format.BC1_UNorm_SRgb, Format.BC2_Typeless, Format.BC2_UNorm, Format.BC2_UNorm_SRgb, Format.BC3_Typeless, Format.BC3_UNorm, Format.BC3_UNorm_SRgb, Format.BC4_Typeless, Format.BC4_UNorm, Format.BC4_SNorm, Format.BC5_Typeless, Format.BC5_UNorm, Format.BC5_SNorm, Format.BC6H_Typeless, Format.BC6H_Uf16, Format.BC6H_Sf16, Format.BC7_Typeless, Format.BC7_UNorm, Format.BC7_UNorm_SRgb }, compressedFormats); InitDefaults(new Format[7] { Format.R8G8B8A8_UNorm_SRgb, Format.BC1_UNorm_SRgb, Format.BC2_UNorm_SRgb, Format.BC3_UNorm_SRgb, Format.B8G8R8A8_UNorm_SRgb, Format.B8G8R8X8_UNorm_SRgb, Format.BC7_UNorm_SRgb }, srgbFormats); InitDefaults(new Format[22] { Format.R32G32B32A32_Typeless, Format.R32G32B32_Typeless, Format.R16G16B16A16_Typeless, Format.R32G32_Typeless, Format.R32G8X24_Typeless, Format.R10G10B10A2_Typeless, Format.R8G8B8A8_Typeless, Format.R16G16_Typeless, Format.R32_Typeless, Format.R24G8_Typeless, Format.R8G8_Typeless, Format.R16_Typeless, Format.R8_Typeless, Format.BC1_Typeless, Format.BC2_Typeless, Format.BC3_Typeless, Format.BC4_Typeless, Format.BC5_Typeless, Format.B8G8R8A8_Typeless, Format.B8G8R8X8_Typeless, Format.BC6H_Typeless, Format.BC7_Typeless }, typelessFormats); } private static void InitFormat(IEnumerable<Format> formats, int bitCount) { foreach (Format format in formats) { sizeOfInBits[(int)format] = bitCount; } } private static void InitDefaults(IEnumerable<Format> formats, bool[] outputArray) { foreach (Format format in formats) { outputArray[(int)format] = true; } } } [Guid("D67441C7-672A-476f-9E82-CD55B44949CE")] public class InfoQueue : ComObject { public static InfoQueue TryCreate() { if (!DebugInterface.TryCreateComPtr<InfoQueue>(out var comPtr)) { return null; } return new InfoQueue(comPtr); } public InfoQueue(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator InfoQueue(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new InfoQueue(nativePtr); } return null; } public unsafe void SetMessageCountLimit(Guid producer, long messageCountLimit) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, Guid, long, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)3 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer, messageCountLimit)); ((Result)(ref val)).CheckError(); } public unsafe void ClearStoredMessages(Guid producer) { ((delegate* unmanaged[Stdcall]<void*, Guid, void>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)4 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer); } public unsafe void GetMessage(Guid producer, long messageIndex, InformationQueueMessage[] messageRef, ref PointerSize messageByteLengthRef) { //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) InformationQueueMessage.__Native[] array = ((messageRef == null) ? null : new InformationQueueMessage.__Native[messageRef.Length]); Result val; fixed (PointerSize* ptr = &messageByteLengthRef) { void* ptr2 = ptr; fixed (InformationQueueMessage.__Native* ptr3 = array) { void* ptr4 = ptr3; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, Guid, long, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)5 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer, messageIndex, ptr4, ptr2)); } } if (messageRef != null) { for (int i = 0; i < messageRef.Length; i++) { messageRef?[i].__MarshalFrom(ref array[i]); } } ((Result)(ref val)).CheckError(); } public unsafe long GetNumStoredMessagesAllowedByRetrievalFilters(Guid producer) { return ((delegate* unmanaged[Stdcall]<void*, Guid, long>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)6 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer); } public unsafe long GetNumStoredMessages(Guid producer) { return ((delegate* unmanaged[Stdcall]<void*, Guid, long>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)7 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer); } public unsafe long GetNumMessagesDiscardedByMessageCountLimit(Guid producer) { return ((delegate* unmanaged[Stdcall]<void*, Guid, long>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)8 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer); } public unsafe long GetMessageCountLimit(Guid producer) { return ((delegate* unmanaged[Stdcall]<void*, Guid, long>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)9 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer); } public unsafe long GetNumMessagesAllowedByStorageFilter(Guid producer) { return ((delegate* unmanaged[Stdcall]<void*, Guid, long>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)10 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer); } public unsafe long GetNumMessagesDeniedByStorageFilter(Guid producer) { return ((delegate* unmanaged[Stdcall]<void*, Guid, long>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)11 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer); } public unsafe void AddStorageFilterEntries(Guid producer, ref InfoQueueFilter filterRef) { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) Result val; fixed (InfoQueueFilter* ptr = &filterRef) { void* ptr2 = ptr; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, Guid, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)12 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer, ptr2)); } ((Result)(ref val)).CheckError(); } public unsafe void GetStorageFilter(Guid producer, InfoQueueFilter[] filterRef, ref PointerSize filterByteLengthRef) { //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) Result val; fixed (PointerSize* ptr = &filterByteLengthRef) { void* ptr2 = ptr; fixed (InfoQueueFilter* ptr3 = filterRef) { void* ptr4 = ptr3; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, Guid, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)13 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer, ptr4, ptr2)); } } ((Result)(ref val)).CheckError(); } public unsafe void ClearStorageFilter(Guid producer) { ((delegate* unmanaged[Stdcall]<void*, Guid, void>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)14 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer); } public unsafe void PushEmptyStorageFilter(Guid producer) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, Guid, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)15 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer)); ((Result)(ref val)).CheckError(); } public unsafe void PushDenyAllStorageFilter(Guid producer) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, Guid, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)16 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer)); ((Result)(ref val)).CheckError(); } public unsafe void PushCopyOfStorageFilter(Guid producer) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, Guid, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)17 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer)); ((Result)(ref val)).CheckError(); } public unsafe void PushStorageFilter(Guid producer, ref InfoQueueFilter filterRef) { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) Result val; fixed (InfoQueueFilter* ptr = &filterRef) { void* ptr2 = ptr; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, Guid, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)18 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer, ptr2)); } ((Result)(ref val)).CheckError(); } public unsafe void PopStorageFilter(Guid producer) { ((delegate* unmanaged[Stdcall]<void*, Guid, void>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)19 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer); } public unsafe int GetStorageFilterStackSize(Guid producer) { return ((delegate* unmanaged[Stdcall]<void*, Guid, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)20 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer); } public unsafe void AddRetrievalFilterEntries(Guid producer, ref InfoQueueFilter filterRef) { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) Result val; fixed (InfoQueueFilter* ptr = &filterRef) { void* ptr2 = ptr; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, Guid, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)21 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer, ptr2)); } ((Result)(ref val)).CheckError(); } public unsafe void GetRetrievalFilter(Guid producer, InfoQueueFilter[] filterRef, ref PointerSize filterByteLengthRef) { //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) Result val; fixed (PointerSize* ptr = &filterByteLengthRef) { void* ptr2 = ptr; fixed (InfoQueueFilter* ptr3 = filterRef) { void* ptr4 = ptr3; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, Guid, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)22 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer, ptr4, ptr2)); } } ((Result)(ref val)).CheckError(); } public unsafe void ClearRetrievalFilter(Guid producer) { ((delegate* unmanaged[Stdcall]<void*, Guid, void>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)23 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer); } public unsafe void PushEmptyRetrievalFilter(Guid producer) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, Guid, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)24 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer)); ((Result)(ref val)).CheckError(); } public unsafe void PushDenyAllRetrievalFilter(Guid producer) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, Guid, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)25 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer)); ((Result)(ref val)).CheckError(); } public unsafe void PushCopyOfRetrievalFilter(Guid producer) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, Guid, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)26 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer)); ((Result)(ref val)).CheckError(); } public unsafe void PushRetrievalFilter(Guid producer, ref InfoQueueFilter filterRef) { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) Result val; fixed (InfoQueueFilter* ptr = &filterRef) { void* ptr2 = ptr; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, Guid, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)27 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer, ptr2)); } ((Result)(ref val)).CheckError(); } public unsafe void PopRetrievalFilter(Guid producer) { ((delegate* unmanaged[Stdcall]<void*, Guid, void>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)28 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer); } public unsafe int GetRetrievalFilterStackSize(Guid producer) { return ((delegate* unmanaged[Stdcall]<void*, Guid, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)29 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer); } public unsafe void AddMessage(Guid producer, InformationQueueMessageCategory category, InformationQueueMessageSeverity severity, int id, string descriptionRef) { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) IntPtr intPtr = Marshal.StringToHGlobalAnsi(descriptionRef); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, Guid, int, int, int, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)30 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer, (int)category, (int)severity, id, (void*)intPtr)); Marshal.FreeHGlobal(intPtr); ((Result)(ref val)).CheckError(); } public unsafe void AddApplicationMessage(InformationQueueMessageSeverity severity, string descriptionRef) { //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) IntPtr intPtr = Marshal.StringToHGlobalAnsi(descriptionRef); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, int, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)31 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (int)severity, (void*)intPtr)); Marshal.FreeHGlobal(intPtr); ((Result)(ref val)).CheckError(); } public unsafe void SetBreakOnCategory(Guid producer, InformationQueueMessageCategory category, RawBool bEnable) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, Guid, int, RawBool, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)32 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer, (int)category, bEnable)); ((Result)(ref val)).CheckError(); } public unsafe void SetBreakOnSeverity(Guid producer, InformationQueueMessageSeverity severity, RawBool bEnable) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, Guid, int, RawBool, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)33 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer, (int)severity, bEnable)); ((Result)(ref val)).CheckError(); } public unsafe void SetBreakOnID(Guid producer, int id, RawBool bEnable) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, Guid, int, RawBool, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)34 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer, id, bEnable)); ((Result)(ref val)).CheckError(); } public unsafe RawBool GetBreakOnCategory(Guid producer, InformationQueueMessageCategory category) { //IL_001b: Unknown result type (might be due to invalid IL or missing references) return ((delegate* unmanaged[Stdcall]<void*, Guid, int, RawBool>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)35 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer, (int)category); } public unsafe RawBool GetBreakOnSeverity(Guid producer, InformationQueueMessageSeverity severity) { //IL_001b: Unknown result type (might be due to invalid IL or missing references) return ((delegate* unmanaged[Stdcall]<void*, Guid, int, RawBool>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)36 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer, (int)severity); } public unsafe RawBool GetBreakOnID(Guid producer, int id) { //IL_001b: Unknown result type (might be due to invalid IL or missing references) return ((delegate* unmanaged[Stdcall]<void*, Guid, int, RawBool>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)37 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer, id); } public unsafe void SetMuteDebugOutput(Guid producer, RawBool bMute) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) ((delegate* unmanaged[Stdcall]<void*, Guid, RawBool, void>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)38 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer, bMute); } public unsafe RawBool GetMuteDebugOutput(Guid producer) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) return ((delegate* unmanaged[Stdcall]<void*, Guid, RawBool>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)39 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, producer); } } [Guid("e9550983-360b-4f53-b391-afd695078691")] public class IVirtualSurfaceImageSourceNative : ISurfaceImageSourceNative { private class VirtualSurfaceUpdatesCallbackNativeCallback : CallbackBase, IVirtualSurfaceUpdatesCallbackNative, IUnknown, ICallbackable, IDisposable { private IVirtualSurfaceImageSourceNative eventCallback; public VirtualSurfaceUpdatesCallbackNativeCallback(IVirtualSurfaceImageSourceNative eventCallbackArg) { eventCallback = eventCallbackArg; } public void UpdatesNeeded() { eventCallback.OnUpdatesNeeded(); } } private IVirtualSurfaceUpdatesCallbackNative callback; private EventHandler<EventArgs> updatesNeeded; public RawRectangle[] UpdateRectangles { get { int updateRectCount = GetUpdateRectCount(); RawRectangle[] array = (RawRectangle[])(object)new RawRectangle[updateRectCount]; GetUpdateRects(array, updateRectCount); return array; } } public RawRectangle VisibleBounds { get { //IL_0008: Unknown result type (might be due to invalid IL or missing references) GetVisibleBounds(out var bounds); return bounds; } } public event EventHandler<EventArgs> UpdatesNeeded { add { if (callback == null) { callback = new VirtualSurfaceUpdatesCallbackNativeCallback(this); RegisterForUpdatesNeeded(callback); } updatesNeeded = (EventHandler<EventArgs>)Delegate.Combine(updatesNeeded, value); } remove { updatesNeeded = (EventHandler<EventArgs>)Delegate.Remove(updatesNeeded, value); } } private void OnUpdatesNeeded() { if (updatesNeeded != null) { updatesNeeded(this, EventArgs.Empty); } } public IVirtualSurfaceImageSourceNative(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator IVirtualSurfaceImageSourceNative(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new IVirtualSurfaceImageSourceNative(nativePtr); } return null; } public unsafe void Invalidate(RawRectangle updateRect) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, RawRectangle, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)6 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, updateRect)); ((Result)(ref val)).CheckError(); } internal unsafe int GetUpdateRectCount() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) int result = default(int); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)7 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, &result)); ((Result)(ref val)).CheckError(); return result; } internal unsafe void GetUpdateRects(RawRectangle[] updates, int count) { //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) Result val; fixed (RawRectangle* ptr = updates) { void* ptr2 = ptr; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, int, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)8 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, ptr2, count)); } ((Result)(ref val)).CheckError(); } internal unsafe void GetVisibleBounds(out RawRectangle bounds) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) bounds = default(RawRectangle); Result val; fixed (RawRectangle* ptr = &bounds) { void* ptr2 = ptr; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)9 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, ptr2)); } ((Result)(ref val)).CheckError(); } internal unsafe void RegisterForUpdatesNeeded(IVirtualSurfaceUpdatesCallbackNative callback) { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; zero = CppObject.ToCallbackPtr<IVirtualSurfaceUpdatesCallbackNative>((ICallbackable)callback); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)10 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (void*)zero)); ((Result)(ref val)).CheckError(); } public unsafe void Resize(int newWidth, int newHeight) { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, int, int, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)11 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, newWidth, newHeight)); ((Result)(ref val)).CheckError(); } } [Shadow(typeof(VirtualSurfaceUpdatesCallbackNativeShadow))] [Guid("dbf2e947-8e6c-4254-9eee-7738f71386c9")] internal interface IVirtualSurfaceUpdatesCallbackNative : IUnknown, ICallbackable, IDisposable { void UpdatesNeeded(); } [Guid("dbf2e947-8e6c-4254-9eee-7738f71386c9")] internal class IVirtualSurfaceUpdatesCallbackNativeNative : ComObject, IVirtualSurfaceUpdatesCallbackNative, IUnknown, ICallbackable, IDisposable { public void UpdatesNeeded() { UpdatesNeeded_(); } public IVirtualSurfaceUpdatesCallbackNativeNative(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator IVirtualSurfaceUpdatesCallbackNativeNative(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new IVirtualSurfaceUpdatesCallbackNativeNative(nativePtr); } return null; } internal unsafe void UpdatesNeeded_() { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)3 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer)); ((Result)(ref val)).CheckError(); } } [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] public struct ModeDescription { public int Width; public int Height; public Rational RefreshRate; public Format Format; public DisplayModeScanlineOrder ScanlineOrdering; public DisplayModeScaling Scaling; public ModeDescription(int width, int height, Rational refreshRate, Format format) { Width = width; Height = height; RefreshRate = refreshRate; Format = format; ScanlineOrdering = DisplayModeScanlineOrder.Unspecified; Scaling = DisplayModeScaling.Unspecified; } public ModeDescription(Format format) { this = default(ModeDescription); Format = format; } } internal class ModuleInit { [Tag("SharpDX.ModuleInit")] internal static void Setup() { ResultDescriptor.RegisterProvider(typeof(ResultCode)); } } [CompilerGenerated] internal class NamespaceDoc { } [Guid("ae02eedb-c735-4690-8d52-5a8dc20213aa")] public class Output : DXGIObject { public OutputDescription Description { get { GetDescription(out var descRef); return descRef; } } public GammaControlCapabilities GammaControlCapabilities { get { GetGammaControlCapabilities(out var gammaCapsRef); return gammaCapsRef; } } public GammaControl GammaControl { get { GetGammaControl(out var arrayRef); return arrayRef; } set { SetGammaControl(ref value); } } public FrameStatistics FrameStatistics { get { GetFrameStatistics(out var statsRef); return statsRef; } } public void GetClosestMatchingMode(ComObject device, ModeDescription modeToMatch, out ModeDescription closestMatch) { FindClosestMatchingMode(ref modeToMatch, out closestMatch, (IUnknown)(object)device); } public ModeDescription[] GetDisplayModeList(Format format, DisplayModeEnumerationFlags flags) { int numModesRef = 0; GetDisplayModeList(format, (int)flags, ref numModesRef, null); ModeDescription[] array = new ModeDescription[numModesRef]; if (numModesRef > 0) { GetDisplayModeList(format, (int)flags, ref numModesRef, array); } return array; } public Output(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator Output(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new Output(nativePtr); } return null; } internal unsafe void GetDescription(out OutputDescription descRef) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) OutputDescription.__Native @ref = default(OutputDescription.__Native); descRef = default(OutputDescription); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)7 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, &@ref)); descRef.__MarshalFrom(ref @ref); ((Result)(ref val)).CheckError(); } internal unsafe void GetDisplayModeList(Format enumFormat, int flags, ref int numModesRef, ModeDescription[] descRef) { //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) Result val; fixed (ModeDescription* ptr = descRef) { void* ptr2 = ptr; fixed (int* ptr3 = &numModesRef) { void* ptr4 = ptr3; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, int, int, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)8 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (int)enumFormat, flags, ptr4, ptr2)); } } ((Result)(ref val)).CheckError(); } internal unsafe void FindClosestMatchingMode(ref ModeDescription modeToMatchRef, out ModeDescription closestMatchRef, IUnknown concernedDeviceRef) { //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) closestMatchRef = default(ModeDescription); IntPtr zero = IntPtr.Zero; zero = CppObject.ToCallbackPtr<IUnknown>((ICallbackable)(object)concernedDeviceRef); Result val; fixed (ModeDescription* ptr = &closestMatchRef) { void* ptr2 = ptr; fixed (ModeDescription* ptr3 = &modeToMatchRef) { void* ptr4 = ptr3; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)9 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, ptr4, ptr2, (void*)zero)); } } ((Result)(ref val)).CheckError(); } public unsafe void WaitForVerticalBlank() { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)10 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer)); ((Result)(ref val)).CheckError(); } public unsafe void TakeOwnership(IUnknown deviceRef, RawBool exclusive) { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; zero = CppObject.ToCallbackPtr<IUnknown>((ICallbackable)(object)deviceRef); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, RawBool, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)11 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (void*)zero, exclusive)); ((Result)(ref val)).CheckError(); } public unsafe void ReleaseOwnership() { ((delegate* unmanaged[Stdcall]<void*, void>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)12 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer); } internal unsafe void GetGammaControlCapabilities(out GammaControlCapabilities gammaCapsRef) { //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) GammaControlCapabilities.__Native @ref = default(GammaControlCapabilities.__Native); gammaCapsRef = default(GammaControlCapabilities); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)13 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, &@ref)); gammaCapsRef.__MarshalFrom(ref @ref); ((Result)(ref val)).CheckError(); } internal unsafe void SetGammaControl(ref GammaControl arrayRef) { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) GammaControl.__Native @ref = default(GammaControl.__Native); arrayRef.__MarshalTo(ref @ref); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)14 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, &@ref)); arrayRef.__MarshalFree(ref @ref); ((Result)(ref val)).CheckError(); } internal unsafe void GetGammaControl(out GammaControl arrayRef) { //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) GammaControl.__Native @ref = default(GammaControl.__Native); arrayRef = default(GammaControl); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)15 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, &@ref)); arrayRef.__MarshalFrom(ref @ref); ((Result)(ref val)).CheckError(); } public unsafe void SetDisplaySurface(Surface scanoutSurfaceRef) { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; zero = CppObject.ToCallbackPtr<Surface>((ICallbackable)(object)scanoutSurfaceRef); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)16 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (void*)zero)); ((Result)(ref val)).CheckError(); } public unsafe void CopyDisplaySurfaceTo(Surface destinationRef) { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; zero = CppObject.ToCallbackPtr<Surface>((ICallbackable)(object)destinationRef); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)17 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (void*)zero)); ((Result)(ref val)).CheckError(); } internal unsafe void GetFrameStatistics(out FrameStatistics statsRef) { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) statsRef = default(FrameStatistics); Result val; fixed (FrameStatistics* ptr = &statsRef) { void* ptr2 = ptr; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)18 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, ptr2)); } ((Result)(ref val)).CheckError(); } } [Guid("00cddea8-939b-4b83-a340-a685226666cc")] public class Output1 : Output { public ModeDescription1[] GetDisplayModeList1(Format enumFormat, DisplayModeEnumerationFlags flags) { int numModesRef = 0; GetDisplayModeList1(enumFormat, (int)flags, ref numModesRef, null); ModeDescription1[] array = new ModeDescription1[numModesRef]; if (numModesRef > 0) { GetDisplayModeList1(enumFormat, (int)flags, ref numModesRef, array); } return array; } public Output1(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator Output1(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new Output1(nativePtr); } return null; } internal unsafe void GetDisplayModeList1(Format enumFormat, int flags, ref int numModesRef, ModeDescription1[] descRef) { //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) Result val; fixed (ModeDescription1* ptr = descRef) { void* ptr2 = ptr; fixed (int* ptr3 = &numModesRef) { void* ptr4 = ptr3; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, int, int, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)19 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (int)enumFormat, flags, ptr4, ptr2)); } } ((Result)(ref val)).CheckError(); } public unsafe void FindClosestMatchingMode1(ref ModeDescription1 modeToMatchRef, out ModeDescription1 closestMatchRef, IUnknown concernedDeviceRef) { //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) closestMatchRef = default(ModeDescription1); IntPtr zero = IntPtr.Zero; zero = CppObject.ToCallbackPtr<IUnknown>((ICallbackable)(object)concernedDeviceRef); Result val; fixed (ModeDescription1* ptr = &closestMatchRef) { void* ptr2 = ptr; fixed (ModeDescription1* ptr3 = &modeToMatchRef) { void* ptr4 = ptr3; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)20 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, ptr4, ptr2, (void*)zero)); } } ((Result)(ref val)).CheckError(); } public unsafe void GetDisplaySurfaceData1(Resource destinationRef) { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; zero = CppObject.ToCallbackPtr<Resource>((ICallbackable)(object)destinationRef); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)21 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (void*)zero)); ((Result)(ref val)).CheckError(); } public unsafe OutputDuplication DuplicateOutput(IUnknown deviceRef) { //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; IntPtr zero2 = IntPtr.Zero; zero = CppObject.ToCallbackPtr<IUnknown>((ICallbackable)(object)deviceRef); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)22 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, (void*)zero, &zero2)); OutputDuplication result = ((!(zero2 != IntPtr.Zero)) ? null : new OutputDuplication(zero2)); ((Result)(ref val)).CheckError(); return result; } } [Guid("595e39d1-2724-4663-99b1-da969de28364")] public class Output2 : Output1 { public bool SupportsOverlays => RawBool.op_Implicit(SupportsOverlays_()); public Output2(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator Output2(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new Output2(nativePtr); } return null; } internal unsafe RawBool SupportsOverlays_() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) return ((delegate* unmanaged[Stdcall]<void*, RawBool>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)23 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer); } } [Guid("191cfac3-a341-470d-b26e-a864f428319c")] public class OutputDuplication : DXGIObject { public OutputDuplicateDescription Description { get { GetDescription(out var descRef); return descRef; } } public OutputDuplication(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator OutputDuplication(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new OutputDuplication(nativePtr); } return null; } internal unsafe void GetDescription(out OutputDuplicateDescription descRef) { descRef = default(OutputDuplicateDescription); fixed (OutputDuplicateDescription* ptr = &descRef) { void* ptr2 = ptr; ((delegate* unmanaged[Stdcall]<void*, void*, void>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)7 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, ptr2); } } public unsafe Result TryAcquireNextFrame(int timeoutInMilliseconds, out OutputDuplicateFrameInformation frameInfoRef, out Resource desktopResourceOut) { //IL_0034: Unknown result type (might be due to invalid IL or missing references) frameInfoRef = default(OutputDuplicateFrameInformation); IntPtr zero = IntPtr.Zero; Result result; fixed (OutputDuplicateFrameInformation* ptr = &frameInfoRef) { void* ptr2 = ptr; result = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, int, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)8 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, timeoutInMilliseconds, ptr2, &zero)); } if (zero != IntPtr.Zero) { desktopResourceOut = new Resource(zero); return result; } desktopResourceOut = null; return result; } public unsafe void GetFrameDirtyRects(int dirtyRectsBufferSize, RawRectangle[] dirtyRectsBufferRef, out int dirtyRectsBufferSizeRequiredRef) { //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) Result val; fixed (int* ptr = &dirtyRectsBufferSizeRequiredRef) { void* ptr2 = ptr; fixed (RawRectangle* ptr3 = dirtyRectsBufferRef) { void* ptr4 = ptr3; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, int, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)9 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, dirtyRectsBufferSize, ptr4, ptr2)); } } ((Result)(ref val)).CheckError(); } public unsafe void GetFrameMoveRects(int moveRectsBufferSize, OutputDuplicateMoveRectangle[] moveRectBufferRef, out int moveRectsBufferSizeRequiredRef) { //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) Result val; fixed (int* ptr = &moveRectsBufferSizeRequiredRef) { void* ptr2 = ptr; fixed (OutputDuplicateMoveRectangle* ptr3 = moveRectBufferRef) { void* ptr4 = ptr3; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, int, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)10 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, moveRectsBufferSize, ptr4, ptr2)); } } ((Result)(ref val)).CheckError(); } public unsafe void GetFramePointerShape(int pointerShapeBufferSize, IntPtr pointerShapeBufferRef, out int pointerShapeBufferSizeRequiredRef, out OutputDuplicatePointerShapeInformation pointerShapeInfoRef) { //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) pointerShapeInfoRef = default(OutputDuplicatePointerShapeInformation); Result val; fixed (OutputDuplicatePointerShapeInformation* ptr = &pointerShapeInfoRef) { void* ptr2 = ptr; fixed (int* ptr3 = &pointerShapeBufferSizeRequiredRef) { void* ptr4 = ptr3; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, int, void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)11 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, pointerShapeBufferSize, (void*)pointerShapeBufferRef, ptr4, ptr2)); } } ((Result)(ref val)).CheckError(); } internal unsafe void MapDesktopSurface(out MappedRectangle lockedRectRef) { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) lockedRectRef = default(MappedRectangle); Result val; fixed (MappedRectangle* ptr = &lockedRectRef) { void* ptr2 = ptr; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)12 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, ptr2)); } ((Result)(ref val)).CheckError(); } public unsafe void UnMapDesktopSurface() { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)13 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer)); ((Result)(ref val)).CheckError(); } public unsafe void ReleaseFrame() { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)14 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer)); ((Result)(ref val)).CheckError(); } } public struct PresentParameters { internal struct __Native { public int DirtyRectsCount; public IntPtr PDirtyRects; public IntPtr PScrollRect; public IntPtr PScrollOffset; } public RawRectangle[] DirtyRectangles; public RawRectangle? ScrollRectangle; public RawPoint? ScrollOffset; internal int DirtyRectsCount; internal IntPtr PDirtyRects; internal IntPtr PScrollRect; internal IntPtr PScrollOffset; } [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] public struct Rational : IEquatable<Rational> { public static readonly Rational Empty; public int Numerator; public int Denominator; public Rational(int numerator, int denominator) { Numerator = numerator; Denominator = denominator; } public bool Equals(Rational other) { if (Numerator == other.Numerator) { return Denominator == other.Denominator; } return false; } public override bool Equals(object obj) { if (obj == null) { return false; } if (obj is Rational) { return Equals((Rational)obj); } return false; } public override int GetHashCode() { return (Numerator * 397) ^ Denominator; } public static bool operator ==(Rational left, Rational right) { return left.Equals(right); } public static bool operator !=(Rational left, Rational right) { return !left.Equals(right); } public override string ToString() { return $"{Numerator}/{Denominator}"; } } [Guid("30961379-4609-4a41-998e-54fe567ee0c1")] public class Resource1 : Resource { public IntPtr CreateSharedHandle(string name, SharedResourceFlags dwAccess, SecurityAttributes? attributesRef = null) { return CreateSharedHandle(attributesRef, dwAccess, name); } public Resource1(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator Resource1(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new Resource1(nativePtr); } return null; } internal unsafe void CreateSubresourceSurface(int index, Surface2 surfaceOut) { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) IntPtr zero = IntPtr.Zero; Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, int, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)12 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, index, &zero)); ((CppObject)surfaceOut).NativePointer = zero; ((Result)(ref val)).CheckError(); } internal unsafe IntPtr CreateSharedHandle(SecurityAttributes? attributesRef, SharedResourceFlags dwAccess, string lpName) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) SecurityAttributes value = default(SecurityAttributes); if (attributesRef.HasValue) { value = attributesRef.Value; } Result val; IntPtr result = default(IntPtr); fixed (char* ptr = lpName) { void* nativePointer = ((CppObject)this)._nativePointer; SecurityAttributes* intPtr = ((!attributesRef.HasValue) ? null : (&value)); val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, int, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)13 * (nint)sizeof(void*))))(nativePointer, intPtr, (int)dwAccess, ptr, &result)); } ((Result)(ref val)).CheckError(); return result; } } [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] public struct SampleDescription { public int Count; public int Quality; public SampleDescription(int count, int quality) { Count = count; Quality = quality; } public override string ToString() { return $"{{{Count}, {Quality}}}"; } } [Guid("cafcb56c-6ac3-4889-bf47-9e23bbd260ec")] public class Surface : DeviceChild { public SurfaceDescription Description { get { GetDescription(out var descRef); return descRef; } } public DataRectangle Map(MapFlags flags) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) Map(out var lockedRectRef, (int)flags); return new DataRectangle(lockedRectRef.PBits, lockedRectRef.Pitch); } public DataRectangle Map(MapFlags flags, out DataStream dataStream) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Expected O, but got Unknown //IL_002a: Unknown result type (might be due to invalid IL or missing references) DataRectangle val = Map(flags); dataStream = new DataStream(val.DataPointer, (long)(Description.Height * val.Pitch), true, true); return val; } public static Surface FromSwapChain(SwapChain swapChain, int index) { swapChain.GetBuffer(index, Utilities.GetGuidFromType(typeof(Surface)), out var surfaceOut); return new Surface(surfaceOut); } public Surface(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator Surface(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new Surface(nativePtr); } return null; } internal unsafe void GetDescription(out SurfaceDescription descRef) { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) descRef = default(SurfaceDescription); Result val; fixed (SurfaceDescription* ptr = &descRef) { void* ptr2 = ptr; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)8 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, ptr2)); } ((Result)(ref val)).CheckError(); } internal unsafe void Map(out MappedRectangle lockedRectRef, int mapFlags) { //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) lockedRectRef = default(MappedRectangle); Result val; fixed (MappedRectangle* ptr = &lockedRectRef) { void* ptr2 = ptr; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, int, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)9 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, ptr2, mapFlags)); } ((Result)(ref val)).CheckError(); } public unsafe void Unmap() { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)10 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer)); ((Result)(ref val)).CheckError(); } } [Guid("4AE63092-6327-4c1b-80AE-BFE12EA32B86")] public class Surface1 : Surface { public void ReleaseDC() { ReleaseDC_(null); } public void ReleaseDC(RawRectangle dirtyRect) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) ReleaseDC_(dirtyRect); } public Surface1(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator Surface1(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new Surface1(nativePtr); } return null; } public unsafe IntPtr GetDC(RawBool discard) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) IntPtr result = default(IntPtr); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, RawBool, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)11 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, discard, &result)); ((Result)(ref val)).CheckError(); return result; } internal unsafe void ReleaseDC_(RawRectangle? dirtyRectRef) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) RawRectangle value = default(RawRectangle); if (dirtyRectRef.HasValue) { value = dirtyRectRef.Value; } void* nativePointer = ((CppObject)this)._nativePointer; RawRectangle* intPtr = ((!dirtyRectRef.HasValue) ? null : (&value)); Result val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)12 * (nint)sizeof(void*))))(nativePointer, intPtr)); ((Result)(ref val)).CheckError(); } } [Guid("aba496dd-b617-4cb8-a866-bc44d7eb1fa2")] public class Surface2 : Surface1 { public Surface2(Resource1 resource, int index) : base(IntPtr.Zero) { resource.CreateSubresourceSurface(index, this); } public Surface2(IntPtr nativePtr) : base(nativePtr) { } public static explicit operator Surface2(IntPtr nativePtr) { if (!(nativePtr == IntPtr.Zero)) { return new Surface2(nativePtr); } return null; } public unsafe void GetResource(Guid riid, out IntPtr parentResourceOut, out int subresourceIndexRef) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) Result val; fixed (int* ptr = &subresourceIndexRef) { void* ptr2 = ptr; fixed (IntPtr* ptr3 = &parentResourceOut) { void* ptr4 = ptr3; val = Result.op_Implicit(((delegate* unmanaged[Stdcall]<void*, void*, void*, void*, int>)(*(IntPtr*)((nint)(*(IntPtr*)((CppObject)this)._nativePointer) + (nint)13 * (nint)sizeof(void*))))(((CppObject)this)._nativePointer, &riid, ptr4, ptr2)); } } ((Result)(ref val)).CheckError(); } } [Guid("310d36a0-d2e7-4c0a-aa04-6a9d23b8886a")] public class SwapChain : DeviceChild { public FrameStatistics FrameStatistics { get { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) FrameStatistics statsRef; Result val = TryGetFrameStatistics(out statsRef); ((Result)(ref val)).CheckError(); return statsRef; } } public bool IsFullScreen { get { //IL_0013: Unknown result type (might be due to invalid IL or missing references) GetFullscreenState(out var fullscreenRef, out var targetOut); if (targetOut != null) { ((DisposeBase)targetOut).Dispose(); } return RawBool.op_Implicit(fullscreenRef); } set { //IL_0002: Unknown result type (might be due to invalid IL or missing references) SetFullscreenState(RawBool.op_Implicit(value), null); } } public SwapChainDescription Description { get { GetDescription(out var descRef); return descRef; } } public Output ContainingOutput { get { GetContainingOutput(out var outputOut); return outputOut; } } public int LastPresentCount { get { GetLastPresentCount(out var lastPresentCountRef); return lastPresentCountRef; } } public SwapChain(Factory factory, ComObject device, SwapChainDescription description) : base(IntPtr.Zero) { factory.CreateSwapChain((IUnknown)(object)device, ref description, this); } public T GetBackBuffer<T>(int index) where T : ComObject { GetBuffer(index, Utilities.GetGuidFromType(typeof(T)), out var surfaceOut); return CppObject.Fro
plugins/OverlayDearImGui.Shared/System.Runtime.dll
Decompiled a month agousing System; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Diagnostics; using System.Globalization; using System.IO; using System.Reflection; using System.Runtime; using System.Runtime.CompilerServices; using System.Runtime.ExceptionServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Text; using System.Threading; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("System.Runtime")] [assembly: AssemblyDescription("System.Runtime")] [assembly: AssemblyDefaultAlias("System.Runtime")] [assembly: AssemblyCompany("Mono development team")] [assembly: AssemblyProduct("Mono Common Language Infrastructure")] [assembly: AssemblyCopyright("(c) Various Mono authors")] [assembly: AssemblyInformationalVersion("4.0.0.0")] [assembly: AssemblyFileVersion("4.0.0.0")] [assembly: AssemblyVersion("4.1.0.0")] [assembly: TypeForwardedTo(typeof(Action))] [assembly: TypeForwardedTo(typeof(Action<>))] [assembly: TypeForwardedTo(typeof(Action<, , , , , , , , , >))] [assembly: TypeForwardedTo(typeof(Action<, , , , , , , , , , >))] [assembly: TypeForwardedTo(typeof(Action<, , , , , , , , , , , >))] [assembly: TypeForwardedTo(typeof(Action<, , , , , , , , , , , , >))] [assembly: TypeForwardedTo(typeof(Action<, , , , , , , , , , , , , >))] [assembly: TypeForwardedTo(typeof(Action<, , , , , , , , , , , , , , >))] [assembly: TypeForwardedTo(typeof(Action<, , , , , , , , , , , , , , , >))] [assembly: TypeForwardedTo(typeof(Action<, >))] [assembly: TypeForwardedTo(typeof(Action<, , >))] [assembly: TypeForwardedTo(typeof(Action<, , , >))] [assembly: TypeForwardedTo(typeof(Action<, , , , >))] [assembly: TypeForwardedTo(typeof(Action<, , , , , >))] [assembly: TypeForwardedTo(typeof(Action<, , , , , , >))] [assembly: TypeForwardedTo(typeof(Action<, , , , , , , >))] [assembly: TypeForwardedTo(typeof(Action<, , , , , , , , >))] [assembly: TypeForwardedTo(typeof(Activator))] [assembly: TypeForwardedTo(typeof(ArgumentException))] [assembly: TypeForwardedTo(typeof(ArgumentNullException))] [assembly: TypeForwardedTo(typeof(ArgumentOutOfRangeException))] [assembly: TypeForwardedTo(typeof(ArithmeticException))] [assembly: TypeForwardedTo(typeof(Array))] [assembly: TypeForwardedTo(typeof(ArraySegment<>))] [assembly: TypeForwardedTo(typeof(ArrayTypeMismatchException))] [assembly: TypeForwardedTo(typeof(AsyncCallback))] [assembly: TypeForwardedTo(typeof(Attribute))] [assembly: TypeForwardedTo(typeof(AttributeTargets))] [assembly: TypeForwardedTo(typeof(AttributeUsageAttribute))] [assembly: TypeForwardedTo(typeof(BadImageFormatException))] [assembly: TypeForwardedTo(typeof(bool))] [assembly: TypeForwardedTo(typeof(Buffer))] [assembly: TypeForwardedTo(typeof(byte))] [assembly: TypeForwardedTo(typeof(char))] [assembly: TypeForwardedTo(typeof(CLSCompliantAttribute))] [assembly: TypeForwardedTo(typeof(DictionaryEntry))] [assembly: TypeForwardedTo(typeof(ICollection<>))] [assembly: TypeForwardedTo(typeof(IComparer<>))] [assembly: TypeForwardedTo(typeof(IDictionary<, >))] [assembly: TypeForwardedTo(typeof(IEnumerable<>))] [assembly: TypeForwardedTo(typeof(IEnumerator<>))] [assembly: TypeForwardedTo(typeof(IEqualityComparer<>))] [assembly: TypeForwardedTo(typeof(IList<>))] [assembly: TypeForwardedTo(typeof(IReadOnlyCollection<>))] [assembly: TypeForwardedTo(typeof(IReadOnlyDictionary<, >))] [assembly: TypeForwardedTo(typeof(IReadOnlyList<>))] [assembly: TypeForwardedTo(typeof(ISet<>))] [assembly: TypeForwardedTo(typeof(KeyNotFoundException))] [assembly: TypeForwardedTo(typeof(KeyValuePair<, >))] [assembly: TypeForwardedTo(typeof(ICollection))] [assembly: TypeForwardedTo(typeof(IComparer))] [assembly: TypeForwardedTo(typeof(IDictionary))] [assembly: TypeForwardedTo(typeof(IDictionaryEnumerator))] [assembly: TypeForwardedTo(typeof(IEnumerable))] [assembly: TypeForwardedTo(typeof(IEnumerator))] [assembly: TypeForwardedTo(typeof(IEqualityComparer))] [assembly: TypeForwardedTo(typeof(IList))] [assembly: TypeForwardedTo(typeof(IStructuralComparable))] [assembly: TypeForwardedTo(typeof(IStructuralEquatable))] [assembly: TypeForwardedTo(typeof(Collection<>))] [assembly: TypeForwardedTo(typeof(ReadOnlyCollection<>))] [assembly: TypeForwardedTo(typeof(Comparison<>))] [assembly: TypeForwardedTo(typeof(DefaultValueAttribute))] [assembly: TypeForwardedTo(typeof(EditorBrowsableAttribute))] [assembly: TypeForwardedTo(typeof(EditorBrowsableState))] [assembly: TypeForwardedTo(typeof(DateTime))] [assembly: TypeForwardedTo(typeof(DateTimeKind))] [assembly: TypeForwardedTo(typeof(DateTimeOffset))] [assembly: TypeForwardedTo(typeof(DayOfWeek))] [assembly: TypeForwardedTo(typeof(decimal))] [assembly: TypeForwardedTo(typeof(Delegate))] [assembly: TypeForwardedTo(typeof(ConditionalAttribute))] [assembly: TypeForwardedTo(typeof(DebuggableAttribute))] [assembly: TypeForwardedTo(typeof(DivideByZeroException))] [assembly: TypeForwardedTo(typeof(double))] [assembly: TypeForwardedTo(typeof(Enum))] [assembly: TypeForwardedTo(typeof(EventArgs))] [assembly: TypeForwardedTo(typeof(EventHandler))] [assembly: TypeForwardedTo(typeof(EventHandler<>))] [assembly: TypeForwardedTo(typeof(Exception))] [assembly: TypeForwardedTo(typeof(FieldAccessException))] [assembly: TypeForwardedTo(typeof(FlagsAttribute))] [assembly: TypeForwardedTo(typeof(FormatException))] [assembly: TypeForwardedTo(typeof(FormattableString))] [assembly: TypeForwardedTo(typeof(Func<>))] [assembly: TypeForwardedTo(typeof(Func<, , , , , , , , , >))] [assembly: TypeForwardedTo(typeof(Func<, , , , , , , , , , >))] [assembly: TypeForwardedTo(typeof(Func<, , , , , , , , , , , >))] [assembly: TypeForwardedTo(typeof(Func<, , , , , , , , , , , , >))] [assembly: TypeForwardedTo(typeof(Func<, , , , , , , , , , , , , >))] [assembly: TypeForwardedTo(typeof(Func<, , , , , , , , , , , , , , >))] [assembly: TypeForwardedTo(typeof(Func<, , , , , , , , , , , , , , , >))] [assembly: TypeForwardedTo(typeof(Func<, , , , , , , , , , , , , , , , >))] [assembly: TypeForwardedTo(typeof(Func<, >))] [assembly: TypeForwardedTo(typeof(Func<, , >))] [assembly: TypeForwardedTo(typeof(Func<, , , >))] [assembly: TypeForwardedTo(typeof(Func<, , , , >))] [assembly: TypeForwardedTo(typeof(Func<, , , , , >))] [assembly: TypeForwardedTo(typeof(Func<, , , , , , >))] [assembly: TypeForwardedTo(typeof(Func<, , , , , , , >))] [assembly: TypeForwardedTo(typeof(Func<, , , , , , , , >))] [assembly: TypeForwardedTo(typeof(GC))] [assembly: TypeForwardedTo(typeof(GCCollectionMode))] [assembly: TypeForwardedTo(typeof(DateTimeStyles))] [assembly: TypeForwardedTo(typeof(NumberStyles))] [assembly: TypeForwardedTo(typeof(TimeSpanStyles))] [assembly: TypeForwardedTo(typeof(Guid))] [assembly: TypeForwardedTo(typeof(IAsyncResult))] [assembly: TypeForwardedTo(typeof(IComparable))] [assembly: TypeForwardedTo(typeof(IComparable<>))] [assembly: TypeForwardedTo(typeof(IConvertible))] [assembly: TypeForwardedTo(typeof(ICustomFormatter))] [assembly: TypeForwardedTo(typeof(IDisposable))] [assembly: TypeForwardedTo(typeof(IEquatable<>))] [assembly: TypeForwardedTo(typeof(IFormatProvider))] [assembly: TypeForwardedTo(typeof(IFormattable))] [assembly: TypeForwardedTo(typeof(IndexOutOfRangeException))] [assembly: TypeForwardedTo(typeof(InsufficientExecutionStackException))] [assembly: TypeForwardedTo(typeof(short))] [assembly: TypeForwardedTo(typeof(int))] [assembly: TypeForwardedTo(typeof(long))] [assembly: TypeForwardedTo(typeof(IntPtr))] [assembly: TypeForwardedTo(typeof(InvalidCastException))] [assembly: TypeForwardedTo(typeof(InvalidOperationException))] [assembly: TypeForwardedTo(typeof(InvalidProgramException))] [assembly: TypeForwardedTo(typeof(InvalidTimeZoneException))] [assembly: TypeForwardedTo(typeof(DirectoryNotFoundException))] [assembly: TypeForwardedTo(typeof(FileLoadException))] [assembly: TypeForwardedTo(typeof(FileNotFoundException))] [assembly: TypeForwardedTo(typeof(IOException))] [assembly: TypeForwardedTo(typeof(PathTooLongException))] [assembly: TypeForwardedTo(typeof(IObservable<>))] [assembly: TypeForwardedTo(typeof(IObserver<>))] [assembly: TypeForwardedTo(typeof(IProgress<>))] [assembly: TypeForwardedTo(typeof(Lazy<>))] [assembly: TypeForwardedTo(typeof(Lazy<, >))] [assembly: TypeForwardedTo(typeof(MemberAccessException))] [assembly: TypeForwardedTo(typeof(MethodAccessException))] [assembly: TypeForwardedTo(typeof(MissingFieldException))] [assembly: TypeForwardedTo(typeof(MissingMemberException))] [assembly: TypeForwardedTo(typeof(MissingMethodException))] [assembly: TypeForwardedTo(typeof(MTAThreadAttribute))] [assembly: TypeForwardedTo(typeof(MulticastDelegate))] [assembly: TypeForwardedTo(typeof(NotImplementedException))] [assembly: TypeForwardedTo(typeof(NotSupportedException))] [assembly: TypeForwardedTo(typeof(Nullable))] [assembly: TypeForwardedTo(typeof(Nullable<>))] [assembly: TypeForwardedTo(typeof(NullReferenceException))] [assembly: TypeForwardedTo(typeof(object))] [assembly: TypeForwardedTo(typeof(ObjectDisposedException))] [assembly: TypeForwardedTo(typeof(ObsoleteAttribute))] [assembly: TypeForwardedTo(typeof(OutOfMemoryException))] [assembly: TypeForwardedTo(typeof(OverflowException))] [assembly: TypeForwardedTo(typeof(ParamArrayAttribute))] [assembly: TypeForwardedTo(typeof(PlatformNotSupportedException))] [assembly: TypeForwardedTo(typeof(Predicate<>))] [assembly: TypeForwardedTo(typeof(RankException))] [assembly: TypeForwardedTo(typeof(AssemblyCompanyAttribute))] [assembly: TypeForwardedTo(typeof(AssemblyConfigurationAttribute))] [assembly: TypeForwardedTo(typeof(AssemblyCopyrightAttribute))] [assembly: TypeForwardedTo(typeof(AssemblyCultureAttribute))] [assembly: TypeForwardedTo(typeof(AssemblyDefaultAliasAttribute))] [assembly: TypeForwardedTo(typeof(AssemblyDelaySignAttribute))] [assembly: TypeForwardedTo(typeof(AssemblyDescriptionAttribute))] [assembly: TypeForwardedTo(typeof(AssemblyFileVersionAttribute))] [assembly: TypeForwardedTo(typeof(AssemblyFlagsAttribute))] [assembly: TypeForwardedTo(typeof(AssemblyInformationalVersionAttribute))] [assembly: TypeForwardedTo(typeof(AssemblyKeyFileAttribute))] [assembly: TypeForwardedTo(typeof(AssemblyKeyNameAttribute))] [assembly: TypeForwardedTo(typeof(AssemblyMetadataAttribute))] [assembly: TypeForwardedTo(typeof(AssemblyNameFlags))] [assembly: TypeForwardedTo(typeof(AssemblyProductAttribute))] [assembly: TypeForwardedTo(typeof(AssemblySignatureKeyAttribute))] [assembly: TypeForwardedTo(typeof(AssemblyTitleAttribute))] [assembly: TypeForwardedTo(typeof(AssemblyTrademarkAttribute))] [assembly: TypeForwardedTo(typeof(AssemblyVersionAttribute))] [assembly: TypeForwardedTo(typeof(DefaultMemberAttribute))] [assembly: TypeForwardedTo(typeof(ProcessorArchitecture))] [assembly: TypeForwardedTo(typeof(AccessedThroughPropertyAttribute))] [assembly: TypeForwardedTo(typeof(AsyncStateMachineAttribute))] [assembly: TypeForwardedTo(typeof(CallerFilePathAttribute))] [assembly: TypeForwardedTo(typeof(CallerLineNumberAttribute))] [assembly: TypeForwardedTo(typeof(CallerMemberNameAttribute))] [assembly: TypeForwardedTo(typeof(CompilationRelaxationsAttribute))] [assembly: TypeForwardedTo(typeof(CompilerGeneratedAttribute))] [assembly: TypeForwardedTo(typeof(ConditionalWeakTable<, >))] [assembly: TypeForwardedTo(typeof(CustomConstantAttribute))] [assembly: TypeForwardedTo(typeof(DateTimeConstantAttribute))] [assembly: TypeForwardedTo(typeof(DecimalConstantAttribute))] [assembly: TypeForwardedTo(typeof(DisablePrivateReflectionAttribute))] [assembly: TypeForwardedTo(typeof(ExtensionAttribute))] [assembly: TypeForwardedTo(typeof(FixedBufferAttribute))] [assembly: TypeForwardedTo(typeof(FormattableStringFactory))] [assembly: TypeForwardedTo(typeof(IndexerNameAttribute))] [assembly: TypeForwardedTo(typeof(InternalsVisibleToAttribute))] [assembly: TypeForwardedTo(typeof(IsConst))] [assembly: TypeForwardedTo(typeof(IStrongBox))] [assembly: TypeForwardedTo(typeof(IsVolatile))] [assembly: TypeForwardedTo(typeof(IteratorStateMachineAttribute))] [assembly: TypeForwardedTo(typeof(MethodImplAttribute))] [assembly: TypeForwardedTo(typeof(MethodImplOptions))] [assembly: TypeForwardedTo(typeof(ReferenceAssemblyAttribute))] [assembly: TypeForwardedTo(typeof(RuntimeCompatibilityAttribute))] [assembly: TypeForwardedTo(typeof(RuntimeHelpers))] [assembly: TypeForwardedTo(typeof(StateMachineAttribute))] [assembly: TypeForwardedTo(typeof(StrongBox<>))] [assembly: TypeForwardedTo(typeof(TypeForwardedFromAttribute))] [assembly: TypeForwardedTo(typeof(TypeForwardedToAttribute))] [assembly: TypeForwardedTo(typeof(UnsafeValueTypeAttribute))] [assembly: TypeForwardedTo(typeof(ExceptionDispatchInfo))] [assembly: TypeForwardedTo(typeof(GCLargeObjectHeapCompactionMode))] [assembly: TypeForwardedTo(typeof(GCLatencyMode))] [assembly: TypeForwardedTo(typeof(GCSettings))] [assembly: TypeForwardedTo(typeof(CharSet))] [assembly: TypeForwardedTo(typeof(ComVisibleAttribute))] [assembly: TypeForwardedTo(typeof(FieldOffsetAttribute))] [assembly: TypeForwardedTo(typeof(GCHandle))] [assembly: TypeForwardedTo(typeof(GCHandleType))] [assembly: TypeForwardedTo(typeof(LayoutKind))] [assembly: TypeForwardedTo(typeof(OutAttribute))] [assembly: TypeForwardedTo(typeof(StructLayoutAttribute))] [assembly: TypeForwardedTo(typeof(TargetFrameworkAttribute))] [assembly: TypeForwardedTo(typeof(RuntimeFieldHandle))] [assembly: TypeForwardedTo(typeof(RuntimeMethodHandle))] [assembly: TypeForwardedTo(typeof(RuntimeTypeHandle))] [assembly: TypeForwardedTo(typeof(sbyte))] [assembly: TypeForwardedTo(typeof(AllowPartiallyTrustedCallersAttribute))] [assembly: TypeForwardedTo(typeof(SecurityCriticalAttribute))] [assembly: TypeForwardedTo(typeof(SecurityException))] [assembly: TypeForwardedTo(typeof(SecuritySafeCriticalAttribute))] [assembly: TypeForwardedTo(typeof(SecurityTransparentAttribute))] [assembly: TypeForwardedTo(typeof(VerificationException))] [assembly: TypeForwardedTo(typeof(float))] [assembly: TypeForwardedTo(typeof(STAThreadAttribute))] [assembly: TypeForwardedTo(typeof(string))] [assembly: TypeForwardedTo(typeof(StringComparison))] [assembly: TypeForwardedTo(typeof(StringSplitOptions))] [assembly: TypeForwardedTo(typeof(StringBuilder))] [assembly: TypeForwardedTo(typeof(LazyThreadSafetyMode))] [assembly: TypeForwardedTo(typeof(Timeout))] [assembly: TypeForwardedTo(typeof(WaitHandle))] [assembly: TypeForwardedTo(typeof(ThreadStaticAttribute))] [assembly: TypeForwardedTo(typeof(TimeoutException))] [assembly: TypeForwardedTo(typeof(TimeSpan))] [assembly: TypeForwardedTo(typeof(TimeZoneInfo))] [assembly: TypeForwardedTo(typeof(Tuple))] [assembly: TypeForwardedTo(typeof(Tuple<>))] [assembly: TypeForwardedTo(typeof(Tuple<, >))] [assembly: TypeForwardedTo(typeof(Tuple<, , >))] [assembly: TypeForwardedTo(typeof(Tuple<, , , >))] [assembly: TypeForwardedTo(typeof(Tuple<, , , , >))] [assembly: TypeForwardedTo(typeof(Tuple<, , , , , >))] [assembly: TypeForwardedTo(typeof(Tuple<, , , , , , >))] [assembly: TypeForwardedTo(typeof(Tuple<, , , , , , , >))] [assembly: TypeForwardedTo(typeof(Type))] [assembly: TypeForwardedTo(typeof(TypeAccessException))] [assembly: TypeForwardedTo(typeof(TypeCode))] [assembly: TypeForwardedTo(typeof(TypeInitializationException))] [assembly: TypeForwardedTo(typeof(TypeLoadException))] [assembly: TypeForwardedTo(typeof(ushort))] [assembly: TypeForwardedTo(typeof(uint))] [assembly: TypeForwardedTo(typeof(ulong))] [assembly: TypeForwardedTo(typeof(UIntPtr))] [assembly: TypeForwardedTo(typeof(UnauthorizedAccessException))] [assembly: TypeForwardedTo(typeof(Uri))] [assembly: TypeForwardedTo(typeof(UriComponents))] [assembly: TypeForwardedTo(typeof(UriFormat))] [assembly: TypeForwardedTo(typeof(UriFormatException))] [assembly: TypeForwardedTo(typeof(UriHostNameType))] [assembly: TypeForwardedTo(typeof(UriKind))] [assembly: TypeForwardedTo(typeof(ValueType))] [assembly: TypeForwardedTo(typeof(Version))] [assembly: TypeForwardedTo(typeof(void))] [assembly: TypeForwardedTo(typeof(WeakReference))] [assembly: TypeForwardedTo(typeof(WeakReference<>))]