/*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; }