/*This file defines some things that all igui stuff can do*/ extern "C" { #include #include #include } #include #include "igeneric.hpp" #include "../gameparts.hpp" #include using namespace irr; using namespace core; using namespace scene; using namespace video; extern IrrlichtDevice* device; int iscenegetpos(lua_State* L){//{node=ud_IMeshSceneNode} lua_getfield(L,-1,"node");//{node=ud_IMeshSceneNode},ud_IMeshSceneNode ISceneNode* i = (ISceneNode*)lua_touserdata(L,-1);//{node=ud_IMeshSceneNode},ud_IMeshSceneNode vector3df pos = i->getAbsolutePosition(); lua_pop(L,2); pushvector3d(L,pos.X,pos.Y,pos.Z); return 1; } int iscenesetpos(lua_State* L){//{node=ISceneNode},{x,y,z} double x,y,z; popvector3d(L,&x,&y,&z);//{node=ud_ISceneNode} lua_getfield(L,-1,"node");//{node=ud_ISceneNode},ud_ISceneNode ISceneNode* i = (ISceneNode*)lua_touserdata(L,-1);//{node=ud_ISceneNode},ud_ISceneNode i->setPosition(vector3df(x,y,z)); i->updateAbsolutePosition(); lua_pop(L,2);// return 0; } int iscenegetangle(lua_State* L){//{node=ud-IMeshSceneNode} lua_getfield(L,-1,"node"); ISceneNode* i = (ISceneNode*)lua_touserdata(L,-1); irr::core::vector3df ang = i->getRotation(); pushvector3d(L,ang.X, ang.Y, ang.Z); return 1; } int iscenesetangle(lua_State* L){//{node=ud_ISceneNode},{x,y,z} double x,y,z; popvector3d(L,&x,&y,&z); lua_getfield(L,-1,"node"); ISceneNode* i = (ISceneNode*)lua_touserdata(L,-1); irr::core::vector3df ang = irr::core::vector3df(x,y,z); i->setRotation(ang); return 0; } //iscenesetmaterial(ud_ISceneNode,ud_itexture) int iscenesetmaterial(lua_State* L){ printf("Calling generic iscenesetmaterial function\n"); ITexture* txt = (ITexture*)lua_touserdata(L,-1);//ud_ISceneNode,ud_itexture lua_pop(L,1);//ud_ISceneNode ISceneNode* i = (ISceneNode*)lua_touserdata(L,-1);//ud_ISceneNode lua_pop(L,2);// i->setMaterialTexture(0,txt); return 0; } extern const luaL_reg igeneric_m[] = { {"getpos", iscenegetpos}, {"setpos", iscenesetpos}, {"getang", iscenegetangle}, {"setang", iscenesetangle}, {"setmaterial", iscenesetmaterial}, {0, 0}, };