コード例 #1
0
ファイル: lua_reg_ActionEx.cpp プロジェクト: adroitly/boom
 // Sequence
 static int lua_Sequence_create(lua_State* L)
 {
     return cclua::obj_call(L,
                            [=](void* ctx)
                            {
                                Sequence* ret = Sequence::create();
                                object_to_luaval(L, "ccex.SequenceEx", ret);
                                return cclua::NResults(1);
                            });
 }
コード例 #2
0
ファイル: lua_reg_ActionEx.cpp プロジェクト: adroitly/boom
 // Spawn
 static int lua_Spawn_create(lua_State* L)
 {
     return cclua::obj_call(L,
                            [=](void* ctx)
                            {
                                Spawn* ret = Spawn::create();
                                object_to_luaval(L, "ccex.SpawnEx", ret);
                                return cclua::NResults(1);
                            });
 }
コード例 #3
0
int lua_cocos2dx_physics3d_Physics3DObject_setCollisionCallback(lua_State* L)
{
    int argc = 0;
    cocos2d::Physics3DObject* cobj = nullptr;
    
#if COCOS2D_DEBUG >= 1
    tolua_Error tolua_err;
#endif
    
    
#if COCOS2D_DEBUG >= 1
    if (!tolua_isusertype(L,1,"cc.Physics3DObject",0,&tolua_err)) goto tolua_lerror;
#endif
    
    cobj = (cocos2d::Physics3DObject*)tolua_tousertype(L,1,0);
    
#if COCOS2D_DEBUG >= 1
    if (!cobj)
    {
        tolua_error(L,"invalid 'cobj' in function 'lua_cocos2dx_physics3d_Physics3DObject_setCollisionCallback'", nullptr);
        return 0;
    }
#endif
    
    argc = lua_gettop(L)-1;
    if (argc == 1)
    {
#if COCOS2D_DEBUG >= 1
        if (!toluafix_isfunction(L,2,"LUA_FUNCTION",0,&tolua_err)) {
            goto tolua_lerror;
        }
#endif
        LUA_FUNCTION handler = toluafix_ref_function(L,2,0);
        cobj->setCollisionCallback([=](const cocos2d::Physics3DCollisionInfo& ci){
            lua_newtable(L);
            lua_pushstring(L, "objA");
            if (nullptr == ci.objA)
            {
                lua_pushnil(L);
            }
            else
            {
                object_to_luaval(L, "cc.Physics3DObject", ci.objA);
            }
            lua_rawset(L, -3);
            lua_pushstring(L, "objB");
            if (nullptr == ci.objB)
            {
                lua_pushnil(L);
            }
            else
            {
                object_to_luaval(L, "cc.Physics3DObject", ci.objB);
            }
            lua_rawset(L, -3);
            lua_pushstring(L, "collisionPointList");
            if (ci.collisionPointList.empty())
            {
                lua_pushnil(L);
            }
            else
            {
                int vecIndex = 1;
                lua_newtable(L);
                for (auto value : ci.collisionPointList)
                {
                    lua_pushnumber(L, vecIndex);
                    CollisionPoint_to_luaval(L, value);
                    lua_rawset(L, -3);
                    ++vecIndex;
                }
            }
            lua_rawset(L, -3);
            LuaEngine::getInstance()->getLuaStack()->executeFunctionByHandler(handler, 1);
        });
        
        ScriptHandlerMgr::getInstance()->addCustomHandler((void*)cobj, handler);
        return 0;
    }
    luaL_error(L, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.Physics3DObject:setCollisionCallback",argc, 1);
    return 0;
    
#if COCOS2D_DEBUG >= 1
tolua_lerror:
    tolua_error(L,"#ferror in function 'lua_cocos2dx_physics3d_Physics3DObject_setCollisionCallback'.",&tolua_err);
#endif
    
    return 0;
}