using System; using System.Runtime.InteropServices; using Godot.NativeInterop; namespace Godot.Bridge { [StructLayout(LayoutKind.Sequential)] internal unsafe struct ManagedCallbacks { // @formatter:off public delegate* unmanaged SignalAwaiter_SignalCallback; public delegate* unmanaged DelegateUtils_InvokeWithVariantArgs; public delegate* unmanaged DelegateUtils_DelegateEquals; public delegate* unmanaged ScriptManagerBridge_FrameCallback; public delegate* unmanaged ScriptManagerBridge_CreateManagedForGodotObjectBinding; public delegate* unmanaged ScriptManagerBridge_CreateManagedForGodotObjectScriptInstance; public delegate* unmanaged ScriptManagerBridge_GetScriptNativeName; public delegate* unmanaged ScriptManagerBridge_SetGodotObjectPtr; public delegate* unmanaged ScriptManagerBridge_RaiseEventSignal; public delegate* unmanaged ScriptManagerBridge_GetScriptSignalList; public delegate* unmanaged ScriptManagerBridge_HasScriptSignal; public delegate* unmanaged ScriptManagerBridge_HasMethodUnknownParams; public delegate* unmanaged ScriptManagerBridge_ScriptIsOrInherits; public delegate* unmanaged ScriptManagerBridge_AddScriptBridge; public delegate* unmanaged ScriptManagerBridge_RemoveScriptBridge; public delegate* unmanaged ScriptManagerBridge_UpdateScriptClassInfo; public delegate* unmanaged ScriptManagerBridge_SwapGCHandleForType; public delegate* unmanaged CSharpInstanceBridge_Call; public delegate* unmanaged CSharpInstanceBridge_Set; public delegate* unmanaged CSharpInstanceBridge_Get; public delegate* unmanaged CSharpInstanceBridge_CallDispose; public delegate* unmanaged CSharpInstanceBridge_CallToString; public delegate* unmanaged GCHandleBridge_FreeGCHandle; public delegate* unmanaged DebuggingUtils_InstallTraceListener; public delegate* unmanaged Dispatcher_InitializeDefaultGodotTaskScheduler; // @formatter:on public static ManagedCallbacks Create() { return new() { // @formatter:off SignalAwaiter_SignalCallback = &SignalAwaiter.SignalCallback, DelegateUtils_InvokeWithVariantArgs = &DelegateUtils.InvokeWithVariantArgs, DelegateUtils_DelegateEquals = &DelegateUtils.DelegateEquals, ScriptManagerBridge_FrameCallback = &ScriptManagerBridge.FrameCallback, ScriptManagerBridge_CreateManagedForGodotObjectBinding = &ScriptManagerBridge.CreateManagedForGodotObjectBinding, ScriptManagerBridge_CreateManagedForGodotObjectScriptInstance = &ScriptManagerBridge.CreateManagedForGodotObjectScriptInstance, ScriptManagerBridge_GetScriptNativeName = &ScriptManagerBridge.GetScriptNativeName, ScriptManagerBridge_SetGodotObjectPtr = &ScriptManagerBridge.SetGodotObjectPtr, ScriptManagerBridge_RaiseEventSignal = &ScriptManagerBridge.RaiseEventSignal, ScriptManagerBridge_GetScriptSignalList = &ScriptManagerBridge.GetScriptSignalList, ScriptManagerBridge_HasScriptSignal = &ScriptManagerBridge.HasScriptSignal, ScriptManagerBridge_HasMethodUnknownParams = &ScriptManagerBridge.HasMethodUnknownParams, ScriptManagerBridge_ScriptIsOrInherits = &ScriptManagerBridge.ScriptIsOrInherits, ScriptManagerBridge_AddScriptBridge = &ScriptManagerBridge.AddScriptBridge, ScriptManagerBridge_RemoveScriptBridge = &ScriptManagerBridge.RemoveScriptBridge, ScriptManagerBridge_UpdateScriptClassInfo = &ScriptManagerBridge.UpdateScriptClassInfo, ScriptManagerBridge_SwapGCHandleForType = &ScriptManagerBridge.SwapGCHandleForType, CSharpInstanceBridge_Call = &CSharpInstanceBridge.Call, CSharpInstanceBridge_Set = &CSharpInstanceBridge.Set, CSharpInstanceBridge_Get = &CSharpInstanceBridge.Get, CSharpInstanceBridge_CallDispose = &CSharpInstanceBridge.CallDispose, CSharpInstanceBridge_CallToString = &CSharpInstanceBridge.CallToString, GCHandleBridge_FreeGCHandle = &GCHandleBridge.FreeGCHandle, DebuggingUtils_InstallTraceListener = &DebuggingUtils.InstallTraceListener, Dispatcher_InitializeDefaultGodotTaskScheduler = &Dispatcher.InitializeDefaultGodotTaskScheduler, // @formatter:on }; } } }