public static unsafe void ControlCamera(CameraControlDuration inHowLong, CameraControlCallback inControlFunc, void *inRefcon) { IL.DeclareLocals(false); IntPtr inControlFuncPtr = inControlFunc != null?Marshal.GetFunctionPointerForDelegate(inControlFunc) : default; ControlCameraPrivate(inHowLong, inControlFuncPtr, inRefcon); GC.KeepAlive(inControlFunc); }
private static unsafe void ControlCameraPrivate(CameraControlDuration inHowLong, IntPtr inControlFunc, void *inRefcon) { IL.DeclareLocals(false); Guard.NotNull(ControlCameraPtr); IL.Push(inHowLong); IL.Push(inControlFunc); IL.Push(inRefcon); IL.Push(ControlCameraPtr); IL.Emit.Calli(new StandAloneMethodSig(CallingConvention.Cdecl, typeof(void), typeof(CameraControlDuration), typeof(IntPtr), typeof(void *))); }
static extern void XPLMControlCamera(CameraControlDuration howLong, delegate *unmanaged <CameraPosition *, int, nint, int> control, nint state);
public static unsafe void Control(CameraControlDuration howLong, CameraControl control) {