From bced528a07a2ff1591455e4c4228ec18f8e0532d Mon Sep 17 00:00:00 2001 From: Alexander Pickering Date: Mon, 10 Apr 2017 19:55:02 -0400 Subject: Added getpos and setpos functions for scene nodes --- src/client/lua_api/scene/igeneric.cpp | 70 +++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 src/client/lua_api/scene/igeneric.cpp (limited to 'src/client/lua_api/scene/igeneric.cpp') diff --git a/src/client/lua_api/scene/igeneric.cpp b/src/client/lua_api/scene/igeneric.cpp new file mode 100644 index 0000000..51aaf66 --- /dev/null +++ b/src/client/lua_api/scene/igeneric.cpp @@ -0,0 +1,70 @@ +/*This file defines some things that all igui stuff can do*/ +extern "C" { + #include + #include + #include +} +#include +#include "igeneric.hpp" +#include "../gameparts.hpp" + +using namespace irr; +using namespace core; +using namespace scene; + +static LISceneNode* toiscenenode(lua_State* L, int index){ + LISceneNode* ret = (LISceneNode*)lua_touserdata(L,index); + if(ret == NULL) + luaL_typerror(L,index,"LISceneNode"); + return ret; +} + +int iscenegetpos(lua_State* L){ + ISceneNode* i = toiscenenode(L,1)->n; + vector3df pos = i->getAbsolutePosition(); + + lua_createtable(L,3,0); + + lua_pushnumber(L,1); + lua_pushnumber(L,pos.X); + lua_settable(L,-3); + + lua_pushnumber(L,2); + lua_pushnumber(L,pos.Y); + lua_settable(L,-3); + + lua_pushnumber(L,3); + lua_pushnumber(L,pos.Z); + lua_settable(L,-3); + + return 1; +} +int iscenesetpos(lua_State* L){ + + ISceneNode* i = toiscenenode(L,1)->n; + + 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); + + printf("Trying to set pos of %p to %f %f %f",i,x,y,z); + + i->setPosition(vector3df(x,y,z)); + i->updateAbsolutePosition(); + vector3df pos = i->getAbsolutePosition(); + printf("After setting pos, new pos is %f %f %f",pos.X,pos.Y,pos.Z); + + + return 0; +} -- cgit v1.2.3-70-g09d2