From 61c0c9f53d3a57ee7fd5db5faa74c4b51e2da396 Mon Sep 17 00:00:00 2001 From: Alexander Pickering Date: Sat, 28 Oct 2017 18:12:50 -0400 Subject: Lots of updates * Networking is finally working * Started moveing physics into the shared domain * Streams now have a readString() and writeString() method * streams are passed to the lua context for networking * Refactored cameras and physboxes to use metatables * Finally wrote the pushvector3* and popvector3* methods * Fixed a few crashes in ;main * Deleted a lot of code --- src/client/lua_api/load_scene.cpp | 13 +- src/client/lua_api/phys/bphysbox.cpp | 261 ++------------------------------- src/client/lua_api/phys/bphysbox.hpp | 13 -- src/client/lua_api/phys/bphysmodel.cpp | 2 +- src/client/lua_api/phys/cbphysbox.cpp | 49 +++++++ src/client/lua_api/phys/cbphysbox.hpp | 11 ++ src/client/lua_api/scene/icamera.cpp | 221 +++++++++++++--------------- src/client/lua_api/scene/icamera.hpp | 2 +- src/client/lua_api/scene/ilight.cpp | 2 +- src/client/lua_api/scene/imesh.cpp | 2 - 10 files changed, 181 insertions(+), 395 deletions(-) delete mode 100644 src/client/lua_api/phys/bphysbox.hpp create mode 100644 src/client/lua_api/phys/cbphysbox.cpp create mode 100644 src/client/lua_api/phys/cbphysbox.hpp (limited to 'src/client/lua_api') diff --git a/src/client/lua_api/load_scene.cpp b/src/client/lua_api/load_scene.cpp index 285cba0..6d02a2d 100644 --- a/src/client/lua_api/load_scene.cpp +++ b/src/client/lua_api/load_scene.cpp @@ -11,7 +11,7 @@ extern "C" { #include "scene/icamera.hpp" #include "scene/imesh.hpp" #include "scene/ilight.hpp" -#include "phys/bphysbox.hpp" +#include "phys/cbphysbox.hpp" #include "phys/bphysmodel.hpp" using namespace irr; @@ -19,13 +19,16 @@ using namespace irr; extern IrrlichtDevice* device; void load_scenefuncs(lua_State* L){ + lua_newtable(L);//{} + lua_setglobal(L,"scene");// icamera_register(L,device); + imesh_register(L,device); ilight_register(L,device); - bphysbox_register(L,device); + lua_newtable(L); + lua_setglobal(L,"phys"); + cbphysbox_register(L); bphysmodel_register(L,device); - lua_pop(L, 1); + //lua_pop(L, 1); - lua_newtable(L); - lua_setglobal(L,"scene"); } diff --git a/src/client/lua_api/phys/bphysbox.cpp b/src/client/lua_api/phys/bphysbox.cpp index a03b488..c15646f 100644 --- a/src/client/lua_api/phys/bphysbox.cpp +++ b/src/client/lua_api/phys/bphysbox.cpp @@ -1,21 +1,17 @@ #include #include -#include -#include -#include -#include #include extern "C" { #include #include #include } + #include #include -#include "../gameparts.hpp" #include "bphysbox.hpp" -#include "../scene/igeneric.hpp" +#include "../../../shared/lua_api/phys/bphysbox.hpp" using namespace irr; using namespace scene; @@ -26,12 +22,13 @@ extern IrrlichtDevice* device; extern btDiscreteDynamicsWorld* World; extern std::list Objects; - +/* static LBPhysNode* checkisbphysbox(lua_State* L, int index){ void* ud = luaL_checkudata(L,index,"phys.physbox"); luaL_argcheck(L,ud != NULL, index, "'phys.physbox' expected"); return (LBPhysNode*) ud; } +*/ /* static LISceneNode* checkismesh(lua_State* L){ @@ -39,252 +36,14 @@ static LISceneNode* checkismesh(lua_State* L){ } */ -//iscenecamera.new(Vector position, Vector lookat, parrent) -// {} {} 0 1 -static int newbphysbox(lua_State* L){ - printf("Createing bphysbox!\n"); - int nargs = lua_gettop(L); - if(nargs != 3){ - printf("Incorrect # of args to create a physbox!"); - } - //The model for the mesh - //const char* modelpath = luaL_optstring(L,1,"error"); - - //Find the vector position - lua_pushnumber(L,1); - lua_gettable(L,-4); - float x = lua_tonumber(L,-1); - lua_pop(L,1); - lua_pushnumber(L,2); - lua_gettable(L,-4); - float y = lua_tonumber(L,-1); - lua_pop(L,1); - lua_pushnumber(L,3); - lua_gettable(L,-4); - float z = lua_tonumber(L,-1); - lua_pop(L,1); - printf("Found position for phys box: %f %f %f\n",x,y,z); - - //Find the vector scale - lua_pushnumber(L,1); - lua_gettable(L,-3); - float sx = lua_tonumber(L,-1); - lua_pop(L,1); - lua_pushnumber(L,2); - lua_gettable(L,-3); - float sy = lua_tonumber(L,-1); - lua_pop(L,1); - lua_pushnumber(L,3); - lua_gettable(L,-3); - float sz = lua_tonumber(L,-1); - lua_pop(L,1); - printf("Found scale for phys box: %f %f %f\n",sx,sy,sz); - - core::vector3df scale = core::vector3df(sx,sy,sz); - btVector3 pos = btVector3(x,y,z); - core::vector3df ipos = core::vector3df(x,y,z); - //Find the mass - float mass = luaL_optint(L,3,0); - printf("Found mass for physbox:%f\n",mass); - - // Create an Irrlicht cube - scene::ISceneNode* Node = device->getSceneManager()->addCubeSceneNode( - ((f32) 1.0f), - ((ISceneNode*) 0), - ((s32)-1), - ipos, - core::vector3df(0,0,0), - scale - ); - //Node->setScale(scale); - - printf("Added cube scene node and set it's scale\n"); - - //Node->setMaterialFlag(video::EMF_WIREFRAME,true) - //Node->setMaterialFlag(video::EMF_NORMALIZE_NORMALS, true); - Node->setMaterialFlag(video::EMF_LIGHTING,true); - //Node->setMaterialTexture(0, device->getVideoDriver()->getTexture("../data/wall.jpg")); - - printf("Set node's lighting stuff...\n"); - - // Set the initial position of the object - btTransform Transform; - Transform.setIdentity(); - Transform.setOrigin(pos); - - printf("Created transform at pos...\n"); - - // Give it a default MotionState - btDefaultMotionState *MotionState = new btDefaultMotionState(Transform); - - // Create the shape - btVector3 HalfExtents(sx * 0.5f, sy * 0.5f, sz * 0.5f); - btCollisionShape *Shape = new btBoxShape(HalfExtents); - - printf("Created collision shape..."); - - // Add mass - btVector3 LocalInertia; - Shape->calculateLocalInertia(mass, LocalInertia); - - // Create the rigid body object - btRigidBody *RigidBody = new btRigidBody(mass, MotionState, Shape, LocalInertia); - - printf("Created rigidboxy..."); - - // Store a pointer to the irrlicht node so we can update it later - RigidBody->setUserPointer((void *)(Node)); - - printf("Set user pointer"); - - // Add it to the world - World->addRigidBody(RigidBody); - printf("Added to world"); - Objects.push_back(RigidBody); - - //Register it's callback - printf("Everything created, makeing the lua representation\n"); - - //Create it's lua representation - LBPhysNode* pnode = (LBPhysNode*)lua_newuserdata(L, sizeof(LBPhysNode)); - int tref = luaL_ref(L,LUA_REGISTRYINDEX); - //iguielements[lcam] = tref; - lua_rawgeti(L,LUA_REGISTRYINDEX,tref);//Put it back on the stack since luaL_ref pops the object. - - //Set it's metatable - luaL_getmetatable(L, "phys.physbox"); - lua_setmetatable(L, -2); - - //Create the struct - pnode->n = Node; - pnode->r = RigidBody; - pnode->funcmap = hashmap_new(); - pnode->type = "bphysbox"; - - printf("Done createing lua representation!\n"); - //Free up anything made in this function - //free(label); - - //Put it on top and return it - lua_rawgeti(L,LUA_REGISTRYINDEX,tref); - return 1; -} - -static int delbphysbox(lua_State* L){ - LBPhysNode* pnode = checkisbphysbox(L,-1); - - //delete pnode->r->getMotionState(); - delete pnode->r->getCollisionShape(); - delete pnode->r; - - return 0; -} - -/*mesh:setmaterial("string",layernum=0)*/ +//phys.newphysbox({vector3 size},{vector3 origin},mass) /* -static int setmaterial(lua_State* L){ - LISceneNode* n = checkismesh(L,1); - u32 layernum = luaL_optint(L,3,0); - const char* matfile = luaL_optstring(L,2,"error.png"); - printf("Setting material on a %s",n->type); - IVideoDriver* driver = device->getVideoDriver(); - n->n->setMaterialTexture( 0, driver->getTexture(matfile) ); - return 0; +static int newcbphysbox(lua_State* L){// + newbphysbox(L);//{phys.physbox} + LBPhysNode } */ -static int bphyssetpos(lua_State *L){ - LBPhysNode* i = checkisbphysbox(L,1); - btTransform bt = i->r->getWorldTransform(); - - lua_pushnumber(L,1); - lua_gettable(L,-2); - f32 x = (f32)lua_tonumber(L,-1); - lua_pop(L,1); - - lua_pushnumber(L,2); - lua_gettable(L,-2); - f32 y = (f32)lua_tonumber(L,-1); - lua_pop(L,1); - - lua_pushnumber(L,3); - lua_gettable(L,-2); - f32 z = (f32)lua_tonumber(L,-1); - lua_pop(L,1); - - btVector3 to = btVector3(x,y,z); - printf("managed to set phys origin\n"); - bt.setOrigin(to); - printf("managed to set phys transform\n"); - i->r->setWorldTransform(bt); - i->r->activate(); - printf("sucess! returning from call\n"); - return 0; -} - -static int bphysgetpos(lua_State *L){ - LBPhysNode* i = checkisbphysbox(L,1); - btTransform bt = i->r->getWorldTransform(); - btVector3 bv = bt.getOrigin(); - - lua_createtable(L,3,0); - - lua_pushnumber(L,1); - lua_pushnumber(L,bv.x()); - lua_settable(L,-3); - - lua_pushnumber(L,2); - lua_pushnumber(L,bv.y()); - lua_settable(L,-3); - - lua_pushnumber(L,3); - lua_pushnumber(L,bv.z()); - lua_settable(L,-3); - - return 1; -} - -static const luaL_reg bphysbox_f[] = { - {"new", newbphysbox}, -// {"gethandeler", guigethandeler}, -// {"sethandeler", guisethandeler}, - {0,0}, -}; - -static const luaL_reg bphysbox_m[] = { - {"setmaterial", iscenesetmaterial}, - {"getpos", bphysgetpos}, - {"setpos", bphyssetpos}, -// {"settext", setiguitext}, -// {"remove", removeiguielement}, - {0, 0}, -}; - -int bphysbox_register(lua_State* L, IrrlichtDevice* d){ - - device = d; - - printf("bphysbox registered\n"); - - luaL_newmetatable(L, "phys.physbox"); - - luaL_register(L,"physbox",bphysbox_f); - - lua_pushstring(L,"__index"); - lua_pushstring(L,"gethandeler"); - lua_gettable(L,-3); - lua_settable(L,-4); - - lua_pushstring(L,"__newindex"); - lua_pushstring(L,"sethandeler"); - lua_gettable(L,-3); - lua_settable(L,-4); - - lua_pushstring(L,"__gc"); - lua_pushcfunction(L,delbphysbox); - lua_settable(L,-4); - - luaL_register(L, NULL, bphysbox_m); - - return 1; +void cbphysbox_register(lua_State* L){ + bphysbox_register(L); } diff --git a/src/client/lua_api/phys/bphysbox.hpp b/src/client/lua_api/phys/bphysbox.hpp deleted file mode 100644 index 43285f2..0000000 --- a/src/client/lua_api/phys/bphysbox.hpp +++ /dev/null @@ -1,13 +0,0 @@ - -#include -#include -extern "C" { - #include - #include - #include -} -#include - -int bphysbox_register(lua_State* L, irr::IrrlichtDevice* d); -static int bphyssetpos(lua_State *L); -static int bphysgetpos(lua_State *L); diff --git a/src/client/lua_api/phys/bphysmodel.cpp b/src/client/lua_api/phys/bphysmodel.cpp index b76b336..424fdf8 100644 --- a/src/client/lua_api/phys/bphysmodel.cpp +++ b/src/client/lua_api/phys/bphysmodel.cpp @@ -14,7 +14,7 @@ extern "C" { #include #include #include "../gameparts.hpp" -#include "bphysbox.hpp" +#include "cbphysbox.hpp" #include "bphysmodel.hpp" #include "../scene/igeneric.hpp" diff --git a/src/client/lua_api/phys/cbphysbox.cpp b/src/client/lua_api/phys/cbphysbox.cpp new file mode 100644 index 0000000..0da9939 --- /dev/null +++ b/src/client/lua_api/phys/cbphysbox.cpp @@ -0,0 +1,49 @@ + +#include +#include +#include +extern "C" { + #include + #include + #include +} + +#include +#include +#include "cbphysbox.hpp" +#include "../../../shared/lua_api/phys/bphysbox.hpp" + +using namespace irr; +using namespace scene; +using namespace core; +using namespace video; + +extern IrrlichtDevice* device; + +extern btDiscreteDynamicsWorld* World; +extern std::list Objects; +/* +static LBPhysNode* checkisbphysbox(lua_State* L, int index){ + void* ud = luaL_checkudata(L,index,"phys.physbox"); + luaL_argcheck(L,ud != NULL, index, "'phys.physbox' expected"); + return (LBPhysNode*) ud; +} +*/ + +/* +static LISceneNode* checkismesh(lua_State* L){ + return checkismesh(L,1); +} +*/ + +//phys.newphysbox({vector3 size},{vector3 origin},mass) +/* +static int newcbphysbox(lua_State* L){// + newbphysbox(L);//{phys.physbox} + LBPhysNode +} +*/ + +void cbphysbox_register(lua_State* L){ + bphysbox_register(L); +} diff --git a/src/client/lua_api/phys/cbphysbox.hpp b/src/client/lua_api/phys/cbphysbox.hpp new file mode 100644 index 0000000..df2be71 --- /dev/null +++ b/src/client/lua_api/phys/cbphysbox.hpp @@ -0,0 +1,11 @@ + +#include +#include +extern "C" { + #include + #include + #include +} +#include + +void cbphysbox_register(lua_State* L); diff --git a/src/client/lua_api/scene/icamera.cpp b/src/client/lua_api/scene/icamera.cpp index e53de83..14f9283 100644 --- a/src/client/lua_api/scene/icamera.cpp +++ b/src/client/lua_api/scene/icamera.cpp @@ -21,29 +21,32 @@ using namespace core; extern IrrlichtDevice* device; + static LISceneNode* checkiscenecamera(lua_State* L, int index){ void* ud = luaL_checkudata(L,index,"scene.iscenecamera"); luaL_argcheck(L,ud != NULL, index, "'scene.iscenecamera' expected"); return (LISceneNode*) ud; } +/* static LISceneNode* checkiscenecamera(lua_State* L){ return checkiscenecamera(L,1); } +*/ static LISceneNode* checkismayacamera(lua_State* L, int index){ void* ud = luaL_checkudata(L,index,"scene.iscenemayacamera"); luaL_argcheck(L,ud != NULL, index, "'scene.iscenemayacamera' expected"); return (LISceneNode*) ud; } - +/* static LISceneNode* checkismayacamera(lua_State* L){ return checkismayacamera(L,1); } +*/ static int newiscenemayacamera(lua_State* L){ printf("createing maya camera!\n"); - int nargs = lua_gettop(L); ISceneManager* smgr = device->getSceneManager(); ICameraSceneNode* cam = smgr->addCameraSceneNodeMaya(); printf("cam is %p",cam); @@ -67,157 +70,133 @@ static int newiscenemayacamera(lua_State* L){ return 1; } -static int newiscenefpscamera(lua_State* L){ - printf("createing fps camera!\n"); - int nargs = lua_gettop(L); - ISceneManager* smgr = device->getSceneManager(); - ICameraSceneNode* cam = smgr->addCameraSceneNodeFPS(); - printf("cam is %p",cam); - LISceneNode* lcam = (LISceneNode*)lua_newuserdata(L, sizeof(LISceneNode)); - int tref = luaL_ref(L,LUA_REGISTRYINDEX); - - //Set it's metatable - luaL_getmetatable(L, "scene.iscenefpscamera"); - lua_setmetatable(L, -2); +// ifpscamera.new() +static int newiscenefpscamera(lua_State* L){// + ISceneManager* smgr = device->getSceneManager(); + ICameraSceneNode* cam = smgr->addCameraSceneNodeFPS(); + LISceneNode* lcam = (LISceneNode*)lua_newuserdata(L, sizeof(LISceneNode));//userdata_scenenode + int tref = luaL_ref(L,LUA_REGISTRYINDEX);// + lua_rawgeti(L,LUA_REGISTRYINDEX,tref);//userdata_scenenode - //Create the struct - lcam->n = cam; - lcam->funcmap = hashmap_new(); - lcam->type = "iscenefpscamera"; + //Set it's metatable + luaL_getmetatable(L, "scene.ifpscamera");//userdata_scenenode,scene.ifpscamera + lua_setmetatable(L, -2);//userdata_scenenode - //Free up anything made in this function - //free(label); + //Create the struct + lcam->n = cam; + lcam->funcmap = hashmap_new(); + lcam->type = "iscenefpscamera"; //Put it on top and return it - lua_rawgeti(L,LUA_REGISTRYINDEX,tref); - return 1; + //lua_rawgeti(L,LUA_REGISTRYINDEX,tref); + return 1; } //iscenecamera.new(Vector position, Vector lookat, parrent) static int newiscenecamera(lua_State* L){ - printf("Createing camera!\n"); - int nargs = lua_gettop(L); - //The position of the camera - int startx = luaL_optint(L,1,0); - int starty = luaL_optint(L,2,0); - int startz = luaL_optint(L,3,0); - int endx = luaL_optint(L,4,startx+100); - int endy = luaL_optint(L,5,starty+100); - int endz = luaL_optint(L,6,startz+100); - - //Label and tooltip - wchar_t* label; - const char* labelopt = luaL_optstring(L,5,"Label"); - int bls = strlen(labelopt); - label = (wchar_t*)malloc(sizeof(wchar_t)*(bls)); - mbstowcs(label,labelopt,bls); - printf("Got the string option\n"); - - //If the element has a parrent - int parent = -1; - if(nargs >= 6){ - parent = luaL_optint(L,7,0); - printf("got the parrent\n"); - } - - - //Create the camera - ISceneManager* smgr = device->getSceneManager(); - //IGUIEnvironment* env = device->getGUIEnvironment(); - //printf("Createing button with data %d %d %d %d, %p, %d, %s, %s\n", startx,starty,endx,endy,guielements[parent],gui_elenum,button_label,button_tooltip); + printf("Createing camera!\n"); + int nargs = lua_gettop(L); + //The position of the camera + int startx = luaL_optint(L,1,0); + int starty = luaL_optint(L,2,0); + int startz = luaL_optint(L,3,0); + int endx = luaL_optint(L,4,startx+100); + int endy = luaL_optint(L,5,starty+100); + int endz = luaL_optint(L,6,startz+100); + + //Label and tooltip + wchar_t* label; + const char* labelopt = luaL_optstring(L,5,"Label"); + int bls = strlen(labelopt); + label = (wchar_t*)malloc(sizeof(wchar_t)*(bls)); + mbstowcs(label,labelopt,bls); + printf("Got the string option\n"); + + //If the element has a parrent + if(nargs >= 6){ + printf("got the parrent\n"); + } + + + //Create the camera + ISceneManager* smgr = device->getSceneManager(); + //IGUIEnvironment* env = device->getGUIEnvironment(); + //printf("Createing button with data %d %d %d %d, %p, %d, %s, %s\n", startx,starty,endx,endy,guielements[parent],gui_elenum,button_label,button_tooltip); //Create the label - //IGUIStaticText* llabel = (IGUIStaticText*) env->addStaticText(label,core::rect(startx,starty,endx,endy),false,false, guielements[parent], gui_elenum++, false); - ICameraSceneNode* cam = smgr->addCameraSceneNode(0, vector3df(startx,starty,startz), vector3df(endx,endy,endz)); - printf("Registered the camera!\n"); + //IGUIStaticText* llabel = (IGUIStaticText*) env->addStaticText(label,core::rect(startx,starty,endx,endy),false,false, guielements[parent], gui_elenum++, false); + ICameraSceneNode* cam = smgr->addCameraSceneNode(0, vector3df(startx,starty,startz), vector3df(endx,endy,endz)); + printf("Registered the camera!\n"); //Register it's callback - //registerguicallback(llabel,EGET_ELEMENT_HOVERED,iguilabelevent); + //registerguicallback(llabel,EGET_ELEMENT_HOVERED,iguilabelevent); //Create it's lua representation - LISceneNode* lcam = (LISceneNode*)lua_newuserdata(L, sizeof(LISceneNode)); - int tref = luaL_ref(L,LUA_REGISTRYINDEX); - //iguielements[lcam] = tref; - //lua_rawgeti(L,LUA_REGISTRYINDEX,tref);//Put it back on the stack since luaL_ref pops the object. + LISceneNode* lcam = (LISceneNode*)lua_newuserdata(L, sizeof(LISceneNode)); + int tref = luaL_ref(L,LUA_REGISTRYINDEX); + //iguielements[lcam] = tref; + //lua_rawgeti(L,LUA_REGISTRYINDEX,tref);//Put it back on the stack since luaL_ref pops the object. //Set it's metatable - luaL_getmetatable(L, "scene.iscenecamera"); - lua_setmetatable(L, -2); + luaL_getmetatable(L, "scene.iscenecamera"); + lua_setmetatable(L, -2); //Create the struct - lcam->n = cam; - lcam->funcmap = hashmap_new(); - lcam->type = "iscenecamera"; + lcam->n = cam; + lcam->funcmap = hashmap_new(); + lcam->type = "iscenecamera"; //Free up anything made in this function - //free(label); + //free(label); //Put it on top and return it - lua_rawgeti(L,LUA_REGISTRYINDEX,tref); - return 1; + lua_rawgeti(L,LUA_REGISTRYINDEX,tref); + return 1; } -static const luaL_reg icamera_f[] = { - {"new", newiscenecamera}, -// {"gethandeler", guigethandeler}, -// {"sethandeler", guisethandeler}, - {0,0}, -}; - static const luaL_reg icamera_m[] = { - {"getpos", iscenegetpos}, - {"setpos", iscenesetpos}, -// {"move", moveiguielement}, -// {"settext", setiguitext}, -// {"remove", removeiguielement}, - {0, 0}, -}; - -static const luaL_reg imayacamera_f[] = { - {"new", newiscenemayacamera}, - {0,0}, + {"getpos", iscenegetpos}, + {"setpos", iscenesetpos}, +// {"remove", removeiguielement}, + {0, 0}, }; static const luaL_reg imayacamera_m[] = { {0,0}, }; -static const luaL_reg ifpscamera_f[] = { - {"new", newiscenefpscamera}, - {0,0}, -}; - static const luaL_reg ifpscamera_m[] = { {0,0}, }; -int icamera_register(lua_State* L, IrrlichtDevice* d){ - - device = d; - - printf("icamera registered\n"); - - luaL_newmetatable(L, "scene.icamera"); - luaL_register(L,"icamera",icamera_f); - - lua_pushstring(L,"__index"); - lua_pushstring(L,"gethandeler"); - lua_gettable(L,-3); - lua_settable(L,-4); - - lua_pushstring(L,"__newindex"); - lua_pushstring(L,"sethandeler"); - lua_gettable(L,-3); - lua_settable(L,-4); - - luaL_register(L, NULL, icamera_m); - //End of camera - - //Start of maya camera - luaL_newmetatable(L,"scene.imayacamera"); - luaL_register(L,"imayacamera",imayacamera_f); - - luaL_newmetatable(L,"scene.ifpscamera"); - luaL_register(L,"ifpscamera",ifpscamera_f); - - return 1; +void icamera_register(lua_State* L, IrrlichtDevice* d){ + device = d; + + 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); } diff --git a/src/client/lua_api/scene/icamera.hpp b/src/client/lua_api/scene/icamera.hpp index 15525f8..38874e3 100644 --- a/src/client/lua_api/scene/icamera.hpp +++ b/src/client/lua_api/scene/icamera.hpp @@ -8,4 +8,4 @@ extern "C" { } #include -int icamera_register(lua_State* L, irr::IrrlichtDevice* d); +void icamera_register(lua_State* L, irr::IrrlichtDevice* d); diff --git a/src/client/lua_api/scene/ilight.cpp b/src/client/lua_api/scene/ilight.cpp index df01dd3..2511999 100644 --- a/src/client/lua_api/scene/ilight.cpp +++ b/src/client/lua_api/scene/ilight.cpp @@ -108,7 +108,7 @@ int ilight_register(lua_State* L, IrrlichtDevice* d){ device = d; - printf("icamera registered\n"); + printf("ilight registered\n"); luaL_newmetatable(L, "scene.ilight"); diff --git a/src/client/lua_api/scene/imesh.cpp b/src/client/lua_api/scene/imesh.cpp index bbb0017..1a1c28b 100644 --- a/src/client/lua_api/scene/imesh.cpp +++ b/src/client/lua_api/scene/imesh.cpp @@ -97,8 +97,6 @@ int imesh_register(lua_State* L, IrrlichtDevice* d){ device = d; - printf("imesh registered\n"); - luaL_newmetatable(L, "scene.imesh"); luaL_register(L,"imesh",imesh_f); -- cgit v1.2.3-70-g09d2