J'ai 2 scripts, chacun dans un lua_State différent. J'essaye de pouvoir obtenir une variable d'un état et l'utiliser dans l'autre.Transfert de tableau lua multidimensionnel de lua_State à lua_State C++
Mon code ci-dessous fonctionne pour les variables uniques et les tableaux unidirectionnels. Pourrais-je obtenir des conseils pour que cela fonctionne également pour les tableaux multidimensionnels?
void getValues(lua_State* L1, lua_State* L2, int& returns)
{
if (lua_isuserdata(L1, -1))
{
LuaElement* e = Luna<LuaElement>::to_object(L1, -1);
if (e != NULL)
{
Luna<LuaElement>::push_object(L2, e);
}
}
else if (lua_isstring(L1, -1))
{
lua_pushstring(L2, lua_tostring(L1, -1));
}
else if (lua_isnumber(L1, -1))
lua_pushnumber(L2, lua_tonumber(L1, -1));
else if (lua_isboolean(L1, -1))
lua_pushboolean(L2, lua_toboolean(L1, -1));
else if (lua_istable(L1, -1))
{
lua_pushnil(L1);
lua_newtable(L2);
while (lua_next(L1, -2))
{
getValues(L1, L2, returns);
lua_rawseti(L2,-2,returns-1);
lua_pop(L1, 1);
}
// lua_rawseti(L2,-2,returns); // this needs work
}
returns++;
}
Malheureusement, je suis un moment difficile d'obtenir le droit de récursion pour que cela fonctionne pour les tableaux multidimensionnels.
Ne serait-il pas plus facile d'utiliser 'lua_type' plutôt que de répéter les appels' lua_is * '? –
Ouais cela pourrait être plus efficace étant donné que les entiers sont placés dans isstring puisque isstring est avant isnumber. –