Esempio n. 1
0
static void _callLuaCollisionHandler(int aCallback, WorldEntity_t *aCollider, World_CollisionInfo *aCollisionInfo)
{
    if(aCallback == -1)
        return;
    luaCtx_pushScriptHandler(GlobalLuaContext, aCallback);
    luaCtx_pushlightuserdata(GlobalLuaContext, aCollider);
    luaCtx_pushlightuserdata(GlobalLuaContext, aCollisionInfo);
    luaCtx_pcall(GlobalLuaContext, 2, 0, 0);
}
Esempio n. 2
0
static void _callEntityUpdateCallback(WorldEntity_t *aEntity, World_t *aWorld)
{
    if(aEntity->updateHandler)
        aEntity->updateHandler(aEntity);
    if(aEntity->luaUpdateHandler != -1) {
        luaCtx_pushScriptHandler(GlobalLuaContext, aEntity->luaUpdateHandler);
        luaCtx_pushlightuserdata(GlobalLuaContext, aEntity);
        luaCtx_pcall(GlobalLuaContext, 1, 0, 0);
    }
}
Esempio n. 3
0
bool luaCtx_executeString(LuaContext_t *aCtx, const char *aScript)
{
    int err = 0;
    err = luaL_loadstring(aCtx->luaState, aScript);
    if(err) {
        dynamo_log("Lua error: %s", (char*)lua_tostring(aCtx->luaState, -1));
        lua_pop(aCtx->luaState, 1);
        return false;
    }
    return luaCtx_pcall(aCtx, 0, 0, 0);
}
Esempio n. 4
0
void input_postMomentaryEvent(InputManager_t *aManager, Input_type_t aType, unsigned char *aCode, vec3_t *aLocation, Input_state_t aState)
{
    int count;
    InputObserver_t **observers = _input_observersForEvent(aManager, aType, aCode, &count);
    for(int i = 0; i < count; ++i) {
        if(observers[i]->handlerCallback)
            observers[i]->handlerCallback(aManager, observers[i], aLocation, aState, observers[i]->metaData);
        if(observers[i]->luaHandlerCallback) {
            luaCtx_pushScriptHandler(GlobalLuaContext, observers[i]->luaHandlerCallback);
            luaCtx_createtable(GlobalLuaContext, 0, 2);
            luaCtx_pushnumber(GlobalLuaContext, aLocation->x);
            luaCtx_setfield(GlobalLuaContext, -2, "x");
            luaCtx_pushnumber(GlobalLuaContext, aLocation->y);
            luaCtx_setfield(GlobalLuaContext, -2, "y");
            luaCtx_pushinteger(GlobalLuaContext, aState);
            luaCtx_pcall(GlobalLuaContext, 2, 0, 0);
        }
        observers[i]->lastKnownState = aState;
    }
    if(observers)
        free(observers);
}