diff options
| author | Alexander Pickering <alexandermpickering@gmail.com> | 2017-10-28 18:12:50 -0400 |
|---|---|---|
| committer | Alexander Pickering <alexandermpickering@gmail.com> | 2017-10-28 18:12:50 -0400 |
| commit | 61c0c9f53d3a57ee7fd5db5faa74c4b51e2da396 (patch) | |
| tree | 7f828d9557aa28ffcb4c7a1b9b3e3326f3ad0170 /src/client/lua_api/scene/icamera.cpp | |
| parent | 33e6b9627e6a46d388d46f2c5b4d15ba7e9f9904 (diff) | |
| download | brokengine-61c0c9f53d3a57ee7fd5db5faa74c4b51e2da396.tar.gz brokengine-61c0c9f53d3a57ee7fd5db5faa74c4b51e2da396.tar.bz2 brokengine-61c0c9f53d3a57ee7fd5db5faa74c4b51e2da396.zip | |
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
Diffstat (limited to 'src/client/lua_api/scene/icamera.cpp')
| -rw-r--r-- | src/client/lua_api/scene/icamera.cpp | 221 |
1 files changed, 100 insertions, 121 deletions
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<s32>(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<s32>(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); } |
