From 44a1421c393632978d59c0698a93ae22243b97e9 Mon Sep 17 00:00:00 2001 From: Alexander Date: Wed, 10 Jun 2020 20:39:54 -0400 Subject: Various progress for 1klutz Added convext shape casts, still a little broken, but it might be just broken bullet side. --- src/client/lua_api/gui/iguicolorselector.hpp | 22 +- src/client/lua_api/gui/iguicombobox.cpp | 262 +++++++++++----------- src/client/lua_api/gui/iguicombobox.hpp | 22 +- src/client/lua_api/gui/iguieditbox.hpp | 24 +- src/client/lua_api/phys/cbcharactercontroller.cpp | 246 ++++++++++---------- src/client/lua_api/phys/cbcharactercontroller.hpp | 20 +- src/client/lua_api/phys/cbphysbox.cpp | 2 +- src/client/lua_api/video/draw.cpp | 58 ++--- src/client/lua_api/video/draw.hpp | 16 +- 9 files changed, 336 insertions(+), 336 deletions(-) (limited to 'src/client/lua_api') diff --git a/src/client/lua_api/gui/iguicolorselector.hpp b/src/client/lua_api/gui/iguicolorselector.hpp index 9460f3e..c0cc168 100644 --- a/src/client/lua_api/gui/iguicolorselector.hpp +++ b/src/client/lua_api/gui/iguicolorselector.hpp @@ -1,11 +1,11 @@ - -#include -#include -extern "C" { - #include - #include - #include -} -#include - -int iguicolorselector_register(lua_State* L); + +#include +#include +extern "C" { + #include + #include + #include +} +#include + +int iguicolorselector_register(lua_State* L); diff --git a/src/client/lua_api/gui/iguicombobox.cpp b/src/client/lua_api/gui/iguicombobox.cpp index 66b19d2..43c66f1 100644 --- a/src/client/lua_api/gui/iguicombobox.cpp +++ b/src/client/lua_api/gui/iguicombobox.cpp @@ -1,131 +1,131 @@ -extern "C" { - #include - #include - #include -} -#include -#include "../guiparts.hpp" -#include "iguielement.hpp" -#include "client/callbackhandeler.hpp" -#include -#include -#include - -/*** -@module gui -*/ -using namespace irr; -using namespace core; -using namespace gui; - -extern IrrlichtDevice* device; - -/*** -Creates a new combo box. -Buttons may have the following fields set for callbacks: -`.onChange(self)` -@function newcombobox() -@tparam rect dimensions The rectangle to place the button at. If the box has a parent, -it is offset from the upper-left of the parent element. -@tparam ?iguielement parent The parent element of the button. -@treturn iguicombobox The combo box element -*/ -//gui.newcombobox({{sx,sy},{ex,ey}}[,parent]) -static int newiguicombobox(lua_State* L){ - //printf("Createing gui button!\n"); - - int nargs = lua_gettop(L); - IGUIElement* parent = NULL; - if(nargs == 2){ - lua_getfield(L,-1,"guielement"); - parent = (IGUIElement*)lua_touserdata(L,-1); - lua_pop(L,2);//{{sx,sy},{ex,ey}} - } - - long sx,sy,ex,ey; - poprecti(L,&sx,&sy,&ex,&ey);// - - rect dim = rect(sx,sy,ex,ey); - IGUIEnvironment* env = device->getGUIEnvironment(); - IGUIComboBox* but = env->addComboBox(dim,parent,-1); - - lua_newtable(L);//{} - lua_pushlightuserdata(L,but);//{},ud_iguicombobox - lua_setfield(L,-2,"guielement");//{guielement} - luaL_getmetatable(L,"gui.iguicombobox");//{guielement},{m_iguicombobox} - lua_setmetatable(L,-2);//{guielement} - - setelementcallback(L,EGET_COMBO_BOX_CHANGED,"onChange");// - - return 1; -} - -//{combobox}.addItem(self,text,id) -int additem(lua_State *L){ - int id = lua_tonumber(L,-1); - lua_pop(L,1);//self,text - const char *name_c = lua_tostring(L,-1); - size_t name_c_len = strlen(name_c); - printf("adding item to combo box: %s\n",name_c); - wchar_t name_w[name_c_len + 1]; - mbstowcs(name_w,name_c,name_c_len); - name_w[name_c_len] = L'\0'; - lua_pop(L,1);//self - lua_getfield(L,-1,"guielement");//self,ud_guielement - IGUIComboBox *box = (IGUIComboBox*)lua_touserdata(L,-1); - box->addItem(name_w,id); - lua_pop(L,2);// - return 0; -} - -// {combobox}.getselected(self) -int getselected(lua_State *L){ - lua_getfield(L,-1,"guielement");//self,ud_guielement - IGUIComboBox *box = (IGUIComboBox*)lua_touserdata(L,-1); - lua_pop(L,2);// - s32 sel = box->getSelected(); - lua_pushnumber(L,sel);//num_selected - return 1; -} - -//{combobox}.removeitem(self,id) -int removeitem(lua_State *L){ - int idx = lua_tonumber(L,-1);//self,id - lua_pop(L,1);//self - lua_getfield(L,-1,"guielement");//self,ud_guielement - IGUIComboBox *box = (IGUIComboBox*)lua_touserdata(L,-1); - lua_pop(L,2);// - box->removeItem(idx); - return 0; -} - -static const luaL_reg iguicombobox_f[] = { - {"new", newiguicombobox}, - {0,0}, -}; - -static const luaL_reg iguicombobox_m[] = { - {"addItem", additem}, - {"getSelected", getselected}, - {"removeItem", removeitem}, - {0,0}, -}; - -void iguicombobox_register(lua_State* L){ - tL = L; - - luaL_newmetatable(L, "gui.iguicombobox");//{m_iguibutton} - lua_newtable(L);//{m_iguibutton},{} - luaL_register(L,NULL,iguielement_m); - luaL_register(L,NULL,iguicombobox_m);//{m_iguibutton},{} - lua_setfield(L,-2,"__index");//{m_iguibutton} - - lua_pop(L,1); - - lua_getglobal(L,"gui"); - //luaL_register(L,NULL,iguicombobox_f) - lua_pushcfunction(L,newiguicombobox); - lua_setfield(L,-2,"newcombobox"); - - lua_pop(L,1); -} +extern "C" { + #include + #include + #include +} +#include +#include "../guiparts.hpp" +#include "iguielement.hpp" +#include "client/callbackhandeler.hpp" +#include +#include +#include + +/*** +@module gui +*/ +using namespace irr; +using namespace core; +using namespace gui; + +extern IrrlichtDevice* device; + +/*** +Creates a new combo box. +Buttons may have the following fields set for callbacks: +`.onChange(self)` +@function newcombobox() +@tparam rect dimensions The rectangle to place the button at. If the box has a parent, +it is offset from the upper-left of the parent element. +@tparam ?iguielement parent The parent element of the button. +@treturn iguicombobox The combo box element +*/ +//gui.newcombobox({{sx,sy},{ex,ey}}[,parent]) +static int newiguicombobox(lua_State* L){ + //printf("Createing gui button!\n"); + + int nargs = lua_gettop(L); + IGUIElement* parent = NULL; + if(nargs == 2){ + lua_getfield(L,-1,"guielement"); + parent = (IGUIElement*)lua_touserdata(L,-1); + lua_pop(L,2);//{{sx,sy},{ex,ey}} + } + + long sx,sy,ex,ey; + poprecti(L,&sx,&sy,&ex,&ey);// + + rect dim = rect(sx,sy,ex,ey); + IGUIEnvironment* env = device->getGUIEnvironment(); + IGUIComboBox* but = env->addComboBox(dim,parent,-1); + + lua_newtable(L);//{} + lua_pushlightuserdata(L,but);//{},ud_iguicombobox + lua_setfield(L,-2,"guielement");//{guielement} + luaL_getmetatable(L,"gui.iguicombobox");//{guielement},{m_iguicombobox} + lua_setmetatable(L,-2);//{guielement} + + setelementcallback(L,EGET_COMBO_BOX_CHANGED,"onChange");// + + return 1; +} + +//{combobox}.addItem(self,text,id) +int additem(lua_State *L){ + int id = lua_tonumber(L,-1); + lua_pop(L,1);//self,text + const char *name_c = lua_tostring(L,-1); + size_t name_c_len = strlen(name_c); + printf("adding item to combo box: %s\n",name_c); + wchar_t name_w[name_c_len + 1]; + mbstowcs(name_w,name_c,name_c_len); + name_w[name_c_len] = L'\0'; + lua_pop(L,1);//self + lua_getfield(L,-1,"guielement");//self,ud_guielement + IGUIComboBox *box = (IGUIComboBox*)lua_touserdata(L,-1); + box->addItem(name_w,id); + lua_pop(L,2);// + return 0; +} + +// {combobox}.getselected(self) +int getselected(lua_State *L){ + lua_getfield(L,-1,"guielement");//self,ud_guielement + IGUIComboBox *box = (IGUIComboBox*)lua_touserdata(L,-1); + lua_pop(L,2);// + s32 sel = box->getSelected(); + lua_pushnumber(L,sel);//num_selected + return 1; +} + +//{combobox}.removeitem(self,id) +int removeitem(lua_State *L){ + int idx = lua_tonumber(L,-1);//self,id + lua_pop(L,1);//self + lua_getfield(L,-1,"guielement");//self,ud_guielement + IGUIComboBox *box = (IGUIComboBox*)lua_touserdata(L,-1); + lua_pop(L,2);// + box->removeItem(idx); + return 0; +} + +static const luaL_reg iguicombobox_f[] = { + {"new", newiguicombobox}, + {0,0}, +}; + +static const luaL_reg iguicombobox_m[] = { + {"addItem", additem}, + {"getSelected", getselected}, + {"removeItem", removeitem}, + {0,0}, +}; + +void iguicombobox_register(lua_State* L){ + tL = L; + + luaL_newmetatable(L, "gui.iguicombobox");//{m_iguibutton} + lua_newtable(L);//{m_iguibutton},{} + luaL_register(L,NULL,iguielement_m); + luaL_register(L,NULL,iguicombobox_m);//{m_iguibutton},{} + lua_setfield(L,-2,"__index");//{m_iguibutton} + + lua_pop(L,1); + + lua_getglobal(L,"gui"); + //luaL_register(L,NULL,iguicombobox_f) + lua_pushcfunction(L,newiguicombobox); + lua_setfield(L,-2,"newcombobox"); + + lua_pop(L,1); +} diff --git a/src/client/lua_api/gui/iguicombobox.hpp b/src/client/lua_api/gui/iguicombobox.hpp index ff6ba97..d3e8111 100644 --- a/src/client/lua_api/gui/iguicombobox.hpp +++ b/src/client/lua_api/gui/iguicombobox.hpp @@ -1,11 +1,11 @@ -#include -#include -#include -extern "C" { - #include - #include - #include -} -#include - -void iguicombobox_register(lua_State* L); +#include +#include +#include +extern "C" { + #include + #include + #include +} +#include + +void iguicombobox_register(lua_State* L); diff --git a/src/client/lua_api/gui/iguieditbox.hpp b/src/client/lua_api/gui/iguieditbox.hpp index 51bf832..429f119 100644 --- a/src/client/lua_api/gui/iguieditbox.hpp +++ b/src/client/lua_api/gui/iguieditbox.hpp @@ -1,12 +1,12 @@ -#include -#include -#include -extern "C" { - #include - #include - #include -} -#include - -void iguieditbox_register(lua_State* L); - +#include +#include +#include +extern "C" { + #include + #include + #include +} +#include + +void iguieditbox_register(lua_State* L); + diff --git a/src/client/lua_api/phys/cbcharactercontroller.cpp b/src/client/lua_api/phys/cbcharactercontroller.cpp index f93d01a..e116ee8 100644 --- a/src/client/lua_api/phys/cbcharactercontroller.cpp +++ b/src/client/lua_api/phys/cbcharactercontroller.cpp @@ -1,123 +1,123 @@ -#include -#include -#include -extern "C" { - #include - #include - #include -} - -#include -#include -#include -#include -#include "cbphysbox.hpp" -#include "../scene/imesh.hpp" -#include "../scene/igeneric.hpp" -#include -#include - -#include - -using namespace irr; -using namespace scene; -using namespace core; -using namespace video; - -extern IrrlichtDevice* device; - -extern btDiscreteDynamicsWorld* World; -extern std::list Objects; - - -//phys.newcharactercontroller({vector3 size},{vector3 origin}) -static int newcbcharactercontroller(lua_State* L){// - printf("Createing new cbcharactercontroller\n"); - double sx,sy,sz,x,y,z; - //Get the data - popvector3d(L,&x,&y,&z);//{v3 size} - popvector3d(L,&sx,&sy,&sz);// - - pushvector3d(L,sx,sy,sz);//{v3 size} - pushvector3d(L,x,y,z);//{v3 size},{v3 origin} - makenewbcharactercontroller(L);//ud_cc - btKinematicCharacterController* cc = (btKinematicCharacterController*)lua_touserdata(L,-1);//ud_cc - lua_pop(L,1); - - pushvector3d(L,sx,sy,sz);//{v3 size} - pushvector3d(L,x,y,z);//{v3 size},{v3 origin} - makenewiscenecube(L);//ud_iscenenode - ISceneNode* n = (ISceneNode*)lua_touserdata(L,-1);//ud_iscenenode - lua_pop(L,1); - - cc->getGhostObject()->setUserPointer(n); - //cc->setUserPointer(n);//TODO: what does this break? - - lua_newtable(L);//{} - lua_pushlightuserdata(L,cc);//{},ud_cc - lua_setfield(L,-2,"character");//{} - lua_pushlightuserdata(L,n);//{},ud_iscenenode - lua_setfield(L,-2,"node");//{} - lua_pushstring(L,"character"); - lua_setfield(L,-2,"type"); - - luaL_getmetatable(L,"phys.charactercontroller");//{},{phys.charactercontroller} - lua_setmetatable(L,-2);//{} - - return 1; -} - -//setMaterial(self,material) -//int cbsetmaterial(lua_State* L){ - //printf("Call to setmaterial\n"); - ////SMaterial* mat = (SMaterial*)lua_touserdata(L,-1);//{node=ud_ISceneNode},ud_IMaterial - //ITexture* tex = (ITexture*)lua_touserdata(L,-1); - //lua_pop(L,1);//{node=ud_ISceneNode} - //printf("About to get field node\n"); - //lua_getfield(L,-1,"node");//{node=ud_ISceneNode},ud_ISceneNode - //printf("After call to field node\n"); - //ISceneNode* i = (ISceneNode*)lua_touserdata(L,-1);//{node=ud_ISceneNode},ud_ISceneNode - //lua_pop(L,2);// - - //lua_pushlightuserdata(L,i); - //lua_pushlightuserdata(L,tex); - //printf("Finished getting everything for setmaterial\n"); - //iscenesetmaterial(L); - - //return 0; -//} - -//int cbchar - -static const luaL_reg cbcharactercontroller_m[] = { - //{"setpos", cbcharsetpos},//overload - //{"getpos", cbchargetpos}, - //{"getgravity", cbphysgetgravity}, - //{"applygravity",cbphysapplygravity}, - //{"setMaterial", cbsetmaterial}, -// {"delete", delbphysbox},//client side delete needs to delete the visual representation - {0, 0}, -}; - -void cbcharactercontroller_register(lua_State* L){ - bcharactercontroller_register(L);// - lua_getglobal(L,"phys");//{} - lua_pushcfunction(L,newcbcharactercontroller);//{},newcbphysbox() - lua_setfield(L,-2,"newccharactercontroller");//{} - - lua_pop(L,1);// - - luaL_getmetatable(L,"phys.charactercontroller");//phys.physbox - lua_newtable(L);//phys.physbox,{} - //luaL_register(L,NULL,brigidbody_m); - luaL_register(L,NULL,igeneric_m); - luaL_register(L,NULL,cbcharactercontroller_m);//phys.physbox,{} - luaL_register(L,NULL,bcharactercontroller_m); - lua_setfield(L,-2,"__index");//phys.physbox - - lua_pop(L,1); - - //printf("When registering physbox, new() is %p\n",newcbphysbox); - //printf("setpos is %p\n",cbphyssetpos); - -} +#include +#include +#include +extern "C" { + #include + #include + #include +} + +#include +#include +#include +#include +#include "cbphysbox.hpp" +#include "../scene/imesh.hpp" +#include "../scene/igeneric.hpp" +#include +#include + +#include + +using namespace irr; +using namespace scene; +using namespace core; +using namespace video; + +extern IrrlichtDevice* device; + +extern btDiscreteDynamicsWorld* World; +extern std::list Objects; + + +//phys.newcharactercontroller({vector3 size},{vector3 origin}) +static int newcbcharactercontroller(lua_State* L){// + printf("Createing new cbcharactercontroller\n"); + double sx,sy,sz,x,y,z; + //Get the data + popvector3d(L,&x,&y,&z);//{v3 size} + popvector3d(L,&sx,&sy,&sz);// + + pushvector3d(L,sx,sy,sz);//{v3 size} + pushvector3d(L,x,y,z);//{v3 size},{v3 origin} + makenewbcharactercontroller(L);//ud_cc + btKinematicCharacterController* cc = (btKinematicCharacterController*)lua_touserdata(L,-1);//ud_cc + lua_pop(L,1); + + pushvector3d(L,sx,sy,sz);//{v3 size} + pushvector3d(L,x,y,z);//{v3 size},{v3 origin} + makenewiscenecube(L);//ud_iscenenode + ISceneNode* n = (ISceneNode*)lua_touserdata(L,-1);//ud_iscenenode + lua_pop(L,1); + + cc->getGhostObject()->setUserPointer(n); + //cc->setUserPointer(n);//TODO: what does this break? + + lua_newtable(L);//{} + lua_pushlightuserdata(L,cc);//{},ud_cc + lua_setfield(L,-2,"character");//{} + lua_pushlightuserdata(L,n);//{},ud_iscenenode + lua_setfield(L,-2,"node");//{} + lua_pushstring(L,"character"); + lua_setfield(L,-2,"type"); + + luaL_getmetatable(L,"phys.charactercontroller");//{},{phys.charactercontroller} + lua_setmetatable(L,-2);//{} + + return 1; +} + +//setMaterial(self,material) +//int cbsetmaterial(lua_State* L){ + //printf("Call to setmaterial\n"); + ////SMaterial* mat = (SMaterial*)lua_touserdata(L,-1);//{node=ud_ISceneNode},ud_IMaterial + //ITexture* tex = (ITexture*)lua_touserdata(L,-1); + //lua_pop(L,1);//{node=ud_ISceneNode} + //printf("About to get field node\n"); + //lua_getfield(L,-1,"node");//{node=ud_ISceneNode},ud_ISceneNode + //printf("After call to field node\n"); + //ISceneNode* i = (ISceneNode*)lua_touserdata(L,-1);//{node=ud_ISceneNode},ud_ISceneNode + //lua_pop(L,2);// + + //lua_pushlightuserdata(L,i); + //lua_pushlightuserdata(L,tex); + //printf("Finished getting everything for setmaterial\n"); + //iscenesetmaterial(L); + + //return 0; +//} + +//int cbchar + +static const luaL_reg cbcharactercontroller_m[] = { + //{"setpos", cbcharsetpos},//overload + //{"getpos", cbchargetpos}, + //{"getgravity", cbphysgetgravity}, + //{"applygravity",cbphysapplygravity}, + //{"setMaterial", cbsetmaterial}, +// {"delete", delbphysbox},//client side delete needs to delete the visual representation + {0, 0}, +}; + +void cbcharactercontroller_register(lua_State* L){ + bcharactercontroller_register(L);// + lua_getglobal(L,"phys");//{} + lua_pushcfunction(L,newcbcharactercontroller);//{},newcbphysbox() + lua_setfield(L,-2,"newccharactercontroller");//{} + + lua_pop(L,1);// + + luaL_getmetatable(L,"phys.charactercontroller");//phys.physbox + lua_newtable(L);//phys.physbox,{} + //luaL_register(L,NULL,brigidbody_m); + luaL_register(L,NULL,igeneric_m); + luaL_register(L,NULL,cbcharactercontroller_m);//phys.physbox,{} + luaL_register(L,NULL,bcharactercontroller_m); + lua_setfield(L,-2,"__index");//phys.physbox + + lua_pop(L,1); + + //printf("When registering physbox, new() is %p\n",newcbphysbox); + //printf("setpos is %p\n",cbphyssetpos); + +} diff --git a/src/client/lua_api/phys/cbcharactercontroller.hpp b/src/client/lua_api/phys/cbcharactercontroller.hpp index d7b76eb..d86701f 100644 --- a/src/client/lua_api/phys/cbcharactercontroller.hpp +++ b/src/client/lua_api/phys/cbcharactercontroller.hpp @@ -1,10 +1,10 @@ -#include -#include -extern "C" { - #include - #include - #include -} -#include - -void cbcharactercontroller_register(lua_State* L); +#include +#include +extern "C" { + #include + #include + #include +} +#include + +void cbcharactercontroller_register(lua_State* L); diff --git a/src/client/lua_api/phys/cbphysbox.cpp b/src/client/lua_api/phys/cbphysbox.cpp index 6763945..5fcba3b 100644 --- a/src/client/lua_api/phys/cbphysbox.cpp +++ b/src/client/lua_api/phys/cbphysbox.cpp @@ -48,7 +48,7 @@ static int newcbphysbox(lua_State* L){// btRigidBody* r = (btRigidBody*)lua_touserdata(L,-1);//ud_btRigidbody lua_pop(L,1); - pushvector3d(L,sx,sy,sz);//{v3 size} + pushvector3d(L,sx*2,sy*2,sz*2);//{v3 size} pushvector3d(L,x,y,z);//{v3 size},{v3 origin} makenewiscenecube(L);//ud_iscenenode ISceneNode* n = (ISceneNode*)lua_touserdata(L,-1);//ud_iscenenode diff --git a/src/client/lua_api/video/draw.cpp b/src/client/lua_api/video/draw.cpp index 1f38f34..7140162 100644 --- a/src/client/lua_api/video/draw.cpp +++ b/src/client/lua_api/video/draw.cpp @@ -1,29 +1,29 @@ - -#include -#include -#include "draw.hpp" - -using namespace irr; -using namespace video; -using namespace core; - -extern IrrlichtDevice* device; -extern IVideoDriver* driver; -//drawline2d {startx,starty},{endx,endy},{r,g,b,a} -int drawline2d(lua_State *L){ - long r,g,b,a; - popvector4i(L, &r, &g, &b, &a); - long endx, endy; - popvector2i(L, &endx, &endy); - long startx, starty; - popvector2i(L, &startx, &starty); - driver->draw2DLine(position2d(startx, starty), position2d(endx,endy), SColor(r,g,b,a)); - return 0; -} - -void draw_register(lua_State *L){ - lua_getglobal(L,"video");//{video} - lua_pushcfunction(L,drawline2d);//{video},drawline2d() - lua_setfield(L,-2,"drawline2d");//{video} - lua_pop(L,1);// -} + +#include +#include +#include "draw.hpp" + +using namespace irr; +using namespace video; +using namespace core; + +extern IrrlichtDevice* device; +extern IVideoDriver* driver; +//drawline2d {startx,starty},{endx,endy},{r,g,b,a} +int drawline2d(lua_State *L){ + long r,g,b,a; + popvector4i(L, &r, &g, &b, &a); + long endx, endy; + popvector2i(L, &endx, &endy); + long startx, starty; + popvector2i(L, &startx, &starty); + driver->draw2DLine(position2d(startx, starty), position2d(endx,endy), SColor(r,g,b,a)); + return 0; +} + +void draw_register(lua_State *L){ + lua_getglobal(L,"video");//{video} + lua_pushcfunction(L,drawline2d);//{video},drawline2d() + lua_setfield(L,-2,"drawline2d");//{video} + lua_pop(L,1);// +} diff --git a/src/client/lua_api/video/draw.hpp b/src/client/lua_api/video/draw.hpp index eb5a9a7..836cd3d 100644 --- a/src/client/lua_api/video/draw.hpp +++ b/src/client/lua_api/video/draw.hpp @@ -1,8 +1,8 @@ - -extern "C" { - #include - #include - #include -} - -void draw_register(lua_State* L); + +extern "C" { + #include + #include + #include +} + +void draw_register(lua_State* L); -- cgit v1.2.3-70-g09d2