Merge pull request #3650 from samuele3hu/developTest

Manual bind the getDescendants function of the SpriteBatchNode class
This commit is contained in:
James Chen 2013-09-17 02:57:47 -07:00
commit 236402b620
5 changed files with 79 additions and 26 deletions

View File

@ -1328,25 +1328,3 @@ void dictionary_to_luaval(lua_State* L, Dictionary* dict)
} }
} }
} }
void std_vector_to_luaval(lua_State* L,const std::vector<Sprite*>& inValue)
{
lua_newtable(L);
if (inValue.empty())
return;
auto iter = inValue.begin();
int indexTable = 1;
for (; iter != inValue.end(); ++iter)
{
if (nullptr == *iter)
continue;
lua_pushnumber(L, (lua_Number)indexTable);
toluafix_pushusertype_ccobject(L, (*iter)->_ID, &((*iter)->_luaID), (void*)(*iter),"Sprite");
lua_rawset(L, -3);
(*iter)->retain();
++indexTable;
}
}

View File

@ -55,5 +55,4 @@ extern void affinetransform_to_luaval(lua_State* L,const AffineTransform& inValu
extern void fontdefinition_to_luaval(lua_State* L,const FontDefinition& inValue); extern void fontdefinition_to_luaval(lua_State* L,const FontDefinition& inValue);
extern void array_to_luaval(lua_State* L,Array* inValue); extern void array_to_luaval(lua_State* L,Array* inValue);
extern void dictionary_to_luaval(lua_State* L, Dictionary* dict); extern void dictionary_to_luaval(lua_State* L, Dictionary* dict);
extern void std_vector_to_luaval(lua_State* L,const std::vector<Sprite*>& inValue);
#endif //__COCOS2DX_SCRIPTING_LUA_COCOS2DXSUPPORT_LUABAISCCONVERSIONS_H__ #endif //__COCOS2DX_SCRIPTING_LUA_COCOS2DXSUPPORT_LUABAISCCONVERSIONS_H__

View File

@ -2286,6 +2286,70 @@ tolua_lerror:
#endif #endif
} }
static int tolua_cocos2dx_SpriteBatchNode_getDescendants(lua_State* tolua_S)
{
if (NULL == tolua_S)
return 0;
int argc = 0;
cocos2d::SpriteBatchNode* cobj = nullptr;
bool ok = true;
#if COCOS2D_DEBUG >= 1
tolua_Error tolua_err;
#endif
#if COCOS2D_DEBUG >= 1
if (!tolua_isusertype(tolua_S,1,"SpriteBatchNode",0,&tolua_err)) goto tolua_lerror;
#endif
cobj = (cocos2d::SpriteBatchNode*)tolua_tousertype(tolua_S,1,0);
#if COCOS2D_DEBUG >= 1
if (!cobj)
{
tolua_error(tolua_S,"invalid 'cobj' in function 'tolua_cocos2dx_SpriteBatchNode_getDescendants'", NULL);
return 0;
}
#endif
argc = lua_gettop(tolua_S)-1;
if (argc == 0)
{
if(!ok)
return 0;
std::vector<Sprite*> ret = cobj->getDescendants();
lua_newtable(tolua_S);
if (ret.empty())
return 1;
auto iter = ret.begin();
int indexTable = 1;
for (; iter != ret.end(); ++iter)
{
if (nullptr == *iter)
continue;
lua_pushnumber(tolua_S, (lua_Number)indexTable);
toluafix_pushusertype_ccobject(tolua_S, (*iter)->_ID, &((*iter)->_luaID), (void*)(*iter),"Sprite");
lua_rawset(tolua_S, -3);
(*iter)->retain();
++indexTable;
}
return 1;
}
CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "getDescendants",argc, 0);
return 0;
#if COCOS2D_DEBUG >= 1
tolua_lerror:
tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_SpriteBatchNode_getDescendants'.",&tolua_err);
#endif
return 0;
}
static void extendTexture2D(lua_State* tolua_S) static void extendTexture2D(lua_State* tolua_S)
{ {
lua_pushstring(tolua_S, "Texture2D"); lua_pushstring(tolua_S, "Texture2D");
@ -2657,6 +2721,18 @@ static void extendUserDefault(lua_State* tolua_S)
} }
} }
static void extendSpriteBatchNode(lua_State* tolua_S)
{
lua_pushstring(tolua_S, "SpriteBatchNode");
lua_rawget(tolua_S, LUA_REGISTRYINDEX);
if (lua_istable(tolua_S,-1))
{
lua_pushstring(tolua_S,"getDescendants");
lua_pushcfunction(tolua_S,tolua_cocos2dx_SpriteBatchNode_getDescendants );
lua_rawset(tolua_S,-3);
}
}
int register_all_cocos2dx_manual(lua_State* tolua_S) int register_all_cocos2dx_manual(lua_State* tolua_S)
{ {
@ -2691,6 +2767,6 @@ int register_all_cocos2dx_manual(lua_State* tolua_S)
extendUserDefault(tolua_S); extendUserDefault(tolua_S);
extendGLProgram(tolua_S); extendGLProgram(tolua_S);
extendTexture2D(tolua_S); extendTexture2D(tolua_S);
extendSpriteBatchNode(tolua_S);
return 0; return 0;
} }

@ -1 +1 @@
Subproject commit 9d98b45fcdebff58bfe4372266f883cd1a6ce476 Subproject commit 2ee36ff8423fb0a30817c5278891e4d1667ec68f

View File

@ -37,7 +37,7 @@ classes = Sprite.* Scene Node.* Director Layer.* Menu.* Touch .*Action.* Move.*
skip = Node::[setGLServerState description getUserObject .*UserData getGLServerState .*schedule getPosition$], skip = Node::[setGLServerState description getUserObject .*UserData getGLServerState .*schedule getPosition$],
Sprite::[getQuad getBlendFunc ^setPosition$ setBlendFunc], Sprite::[getQuad getBlendFunc ^setPosition$ setBlendFunc],
SpriteBatchNode::[getBlendFunc setBlendFunc], SpriteBatchNode::[getBlendFunc setBlendFunc getDescendants],
MotionStreak::[getBlendFunc setBlendFunc draw update], MotionStreak::[getBlendFunc setBlendFunc draw update],
AtlasNode::[getBlendFunc setBlendFunc], AtlasNode::[getBlendFunc setBlendFunc],
ParticleBatchNode::[getBlendFunc setBlendFunc], ParticleBatchNode::[getBlendFunc setBlendFunc],