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)