extern "C" { #include #include #include } #include extern IrrlichtDevice* device; using namespace irr; // {} :: scene.newcube(num_size, {v3 pos}) int newiscenecube(lua_StatE* L){//num_size, {v3 pos} double x,y,z; popvector3d(L,&x, &y, &z);//num_size double size = lua_tonumber(L,-1);//num_size lua_pop(L,1);// IMeshSceneNode* n = device->getSceneManager()->addCubeSceneNode(size,0,-1,core::vector3df(x,y,z)); lua_newtable(L);//{} lua_pushlightuserdata(L,n);//{},ud_node lua_setfield(L,-2,"node");//{} luaL_getmetatable(L,"scene.inode");//{},sene.inode lua_setmetatable(L,-2); return 1; } static const luaL_reg iscenenode_m[] = { {"getpos", iscenegetpos}, {"setpos", iscenesetpos}, // {"remove", removeiguielement}, {0, 0}, }; void icube_register(lua_State* L){ luaL_newmetatable(L, "scene.icamera");//scene.icamera lua_newtable(L);//scene.icamera, {} luaL_register(L,NULL,icamera_m);//scene.icamera, {} lua_setfield(L,-2,"__index");//scene.icamera lua_pop(L,1);// luaL_newmetatable(L, "scene.imayacamera");//scene.imayacamera lua_newtable(L);//scene.imayascamera,{} luaL_register(L,NULL,imayacamera_m);//scene.imayascamera,{} lua_setfield(L,-2,"__index");//scene.imayascamera lua_pop(L,1);// luaL_newmetatable(L,"scene.ifpscamera");//scene.ifpscamera lua_newtable(L);//scene.ifpscamera, {} luaL_register(L,NULL,ifpscamera_m);//scene.ifpscamera,{} luaL_register(L,NULL,icamera_m);//scene.ifpscamera,{} lua_setfield(L,-2,"__index");//scene.ifpscamera lua_pop(L,1);// lua_getglobal(L,"scene");//{} lua_pushcfunction(L,newiscenecamera);//{},newiscenecamera() lua_setfield(L,-2,"newcamera");//{} lua_pushcfunction(L,newiscenefpscamera);//{},newiscenefpscamera() lua_setfield(L,-2,"newfpscamera");//{} lua_pushcfunction(L,newiscenemayacamera);//{},newiscenemayacamera() lua_setfield(L,-2,"newmayacamera");//{} printf("\"scene\" was set!\n"); //lua_pop(L,1); }