diff options
Diffstat (limited to 'src/client/lua_api/scene/icamera.cpp')
| -rw-r--r-- | src/client/lua_api/scene/icamera.cpp | 76 |
1 files changed, 39 insertions, 37 deletions
diff --git a/src/client/lua_api/scene/icamera.cpp b/src/client/lua_api/scene/icamera.cpp index 14f9283..3c5e2b0 100644 --- a/src/client/lua_api/scene/icamera.cpp +++ b/src/client/lua_api/scene/icamera.cpp @@ -21,7 +21,6 @@ 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"); @@ -46,49 +45,51 @@ static LISceneNode* checkismayacamera(lua_State* L){ */ static int newiscenemayacamera(lua_State* L){ - printf("createing maya camera!\n"); - ISceneManager* smgr = device->getSceneManager(); - ICameraSceneNode* cam = smgr->addCameraSceneNodeMaya(); - 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.iscenemayacamera"); - lua_setmetatable(L, -2); - - //Create the struct - lcam->n = cam; - lcam->funcmap = hashmap_new(); - lcam->type = "iscenemayacamera"; - - //Free up anything made in this function - //free(label); - - //Put it on top and return it - lua_rawgeti(L,LUA_REGISTRYINDEX,tref); - return 1; + printf("createing maya camera!\n"); + ISceneManager* smgr = device->getSceneManager(); + ICameraSceneNode* cam = smgr->addCameraSceneNodeMaya(); + printf("cam is %p",cam); + lua_newtable(L);//{} + lua_pushlightuserdata(L,cam); + lua_setfield(L,-2,"node"); + //LISceneNode* lcam = (LISceneNode*)lua_newuserdata(L, sizeof(LISceneNode)); + //int tref = luaL_ref(L,LUA_REGISTRYINDEX); + + //Set it's metatable + luaL_getmetatable(L, "scene.iscenemayacamera"); + lua_setmetatable(L, -2); + + //Create the struct + //lcam->n = cam; + //lcam->funcmap = hashmap_new(); + //lcam->type = "iscenemayacamera"; + + //Free up anything made in this function + //free(label); + + //Put it on top and return it + //lua_rawgeti(L,LUA_REGISTRYINDEX,tref); + return 1; } // 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 + lua_newtable(L);//{} + lua_pushlightuserdata(L,cam);//{},ud_cam + lua_setfield(L,-2,"node"); + //LISceneNode* lcam = (LISceneNode*)lua_newuserdata(L, sizeof(LISceneNode));//userdata_scenenode //Set it's metatable luaL_getmetatable(L, "scene.ifpscamera");//userdata_scenenode,scene.ifpscamera lua_setmetatable(L, -2);//userdata_scenenode //Create the struct - lcam->n = cam; - lcam->funcmap = hashmap_new(); - lcam->type = "iscenefpscamera"; + //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; } @@ -154,9 +155,10 @@ static int newiscenecamera(lua_State* L){ } static const luaL_reg icamera_m[] = { - {"getpos", iscenegetpos}, - {"setpos", iscenesetpos}, -// {"remove", removeiguielement}, + {"getpos", iscenegetpos}, + {"setpos", iscenesetpos}, + {"getangle", iscenegetangle}, + {"setangle", iscenesetangle}, {0, 0}, }; @@ -168,8 +170,7 @@ static const luaL_reg ifpscamera_m[] = { {0,0}, }; -void icamera_register(lua_State* L, IrrlichtDevice* d){ - device = d; +void icamera_register(lua_State* L){ luaL_newmetatable(L, "scene.icamera");//scene.icamera lua_newtable(L);//scene.icamera, {} @@ -180,6 +181,7 @@ void icamera_register(lua_State* L, IrrlichtDevice* d){ luaL_newmetatable(L, "scene.imayacamera");//scene.imayacamera lua_newtable(L);//scene.imayascamera,{} luaL_register(L,NULL,imayacamera_m);//scene.imayascamera,{} + luaL_register(L,NULL,icamera_m);//scene.imayascamera,{} lua_setfield(L,-2,"__index");//scene.imayascamera lua_pop(L,1);// @@ -198,5 +200,5 @@ void icamera_register(lua_State* L, IrrlichtDevice* d){ lua_pushcfunction(L,newiscenemayacamera);//{},newiscenemayacamera() lua_setfield(L,-2,"newmayacamera");//{} printf("\"scene\" was set!\n"); - //lua_pop(L,1); + lua_pop(L,1);// } |
