From 2831e232b886c5e3b0791ea5192f9e5194e6abf3 Mon Sep 17 00:00:00 2001 From: Alexander Pickering Date: Fri, 9 Mar 2018 23:55:49 -0500 Subject: Added IGUIImages Added the ability to display itextures on the gui --- src/client/lua_api/video/iimage.cpp | 81 +++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 src/client/lua_api/video/iimage.cpp (limited to 'src/client/lua_api/video/iimage.cpp') diff --git a/src/client/lua_api/video/iimage.cpp b/src/client/lua_api/video/iimage.cpp new file mode 100644 index 0000000..b832783 --- /dev/null +++ b/src/client/lua_api/video/iimage.cpp @@ -0,0 +1,81 @@ + +#include "iimage.hpp" +#include + +#include "../../../shared/lua_api/common.h" + +using namespace irr; +using namespace video; + +extern IrrlichtDevice* device; +extern IVideoDriver* driver; + +//newiimage(ECOLOR_FORMAT,{width,height}) +int newiimage(lua_State* L){ + printf("Attempting to create new iimage\n"); + long w,h; + popvector2i(L,&w,&h); + int format = lua_tonumber(L,-1); + lua_pop(L,1); + printf("All data collected, creating...\n"); + IImage* img = driver->createImage((irr::video::ECOLOR_FORMAT)format,irr::core::dimension2d(w,h)); + lua_pushlightuserdata(L,img); + luaL_getmetatable(L,"iimage"); + lua_setmetatable(L,-2); + printf("Everything sets up, returning\n"); + return 1; +} + +//setPixel({x,y},{r,g,b,a},bool_shouldblend) +int setiimagepixel(lua_State* L){ + printf("Setpixel called\n"); + bool sb = lua_toboolean(L,-1);//{ud_iimage},{x,y},{r,g,b,a},bool_shouldblend + lua_pop(L,1);//{ud_iimage},{x,y},{r,g,b,a} + long r,g,b,a; + popvector4i(L,&r,&g,&b,&a);//{ud_iimage},{x,y} + long x,y; + popvector2i(L,&x,&y);//{ud_iimage} + IImage* img = (IImage*)lua_touserdata(L,-1);//{ud_iimage} + img->setPixel(x,y,SColor(a,r,g,b),sb); + lua_pop(L,1); + return 0; +} + +static const luaL_reg iimage_m[] = { + {"setPixel", setiimagepixel}, + {0,0}, +}; + +#define set_const(l,x) lua_pushstring(l,#x);lua_pushinteger(l,x);lua_settable(l,-3); + +void iimage_register(lua_State* L){ + printf("Registering iimage...\n"); + driver = device->getVideoDriver(); + lua_getglobal(L,"video");//{} + + set_const(L,ECF_A1R5G5B5); + set_const(L,ECF_R5G6B5); + set_const(L,ECF_A8R8G8B8); + set_const(L,ECF_R16F); + set_const(L,ECF_G16R16F); + set_const(L,ECF_A16B16G16R16F); + set_const(L,ECF_R32F); + set_const(L,ECF_G32R32F); + set_const(L,ECF_A32B32G32R32F); + set_const(L,ECF_UNKNOWN); + + lua_pushcfunction(L,newiimage);//{},newiimage() + lua_setfield(L,-2,"newiimage");//{} + lua_pop(L,1);// + + luaL_newmetatable(L,"iimage");//{m_iimage} + + lua_newtable(L);//{m_iimage},{} + luaL_register(L,NULL,iimage_m);//{m_iimage},{iimage} + + lua_setfield(L,-2,"__index");//{m_iimage} + + lua_pop(L,1);// + + printf("registered iimage!\n"); +} -- cgit v1.2.3-70-g09d2