extern public static void NewClosure(IntPtr v, SqFunction func, int nfreevars);
/// <summary> /// Registers a new function inside the squirrel VM. /// </summary> /// <param name="squirrelApi">The used instance of the <see cref="ISquirrelApi"/>.</param> /// <param name="functionName">The name of the new function</param> /// <param name="function">The delegate for the new function.</param> public static void RegisterFunction(this ISquirrelApi squirrelApi, string functionName, SqFunction function) { if (squirrelApi == null) { throw new ArgumentNullException(nameof(squirrelApi)); } if (function == null) { throw new ArgumentNullException(nameof(function)); } if (string.IsNullOrEmpty(functionName)) { throw new ArgumentException("Value cannot be null or empty.", nameof(functionName)); } squirrelApi.SqPushRootTable(); squirrelApi.SqPushString(functionName); squirrelApi.SqNewClosure(function, 0); squirrelApi.SqNewSlot(-3, false); squirrelApi.SqPop(1); }