natiny_script_make_function
C
NatinyScriptValue natiny_script_make_function(NatinyScript script, natiny_script_fn fn);
Makes a script function that calls a C function, and returns it as a value.
Put it under a name with natiny_script_set, into a
table, or pass it into a call.
Parameters
| Name |
Type |
Description |
script |
NatinyScript |
The state to make it in |
fn |
natiny_script_fn |
Callback invoked when the script calls the function; must not be NULL |
Returns
| Type |
Description |
NatinyScriptValue |
Value tagged NATINY_SCRIPT_FUNCTION, or NATINY_SCRIPT_NIL when fn is NULL or the handle names no state |
Callback
C
typedef uint32_t (*natiny_script_fn)(NatinyScript script,
const NatinyScriptValue* args, uint32_t count,
NatinyScriptValue* results);
| Name |
Type |
Description |
script |
NatinyScript |
State that invoked the callback |
args |
const NatinyScriptValue* |
count arguments, valid until the callback returns |
count |
uint32_t |
Number of arguments, at most NATINY_SCRIPT_MAX_ARGS |
results |
NatinyScriptValue* |
NATINY_SCRIPT_MAX_RESULTS slots to fill |
The return value is the number of filled result slots.
Example
C
static uint32_t ai_step_all(NatinyScript script,
const NatinyScriptValue* args, uint32_t count,
NatinyScriptValue* results) {
if (count != 1 || args[0].type != NATINY_SCRIPT_NUMBER) {
natiny_script_fail(script, "step_all: expected dt");
return 0;
}
results[0] = natiny_script_make_number(
step_agents((float)natiny_script_to_number(args[0])));
return 1;
}
natiny_script_set(script, "game.ai.step_all",
natiny_script_make_function(script, ai_step_all));
Lua
local alive = game.ai.step_all(dt)