LuaVoxelManip: Add get_param2_data and set_param2_data
authorkwolekr <kwolekr@minetest.net>
Sun, 19 Jan 2014 07:55:34 +0000 (02:55 -0500)
committerkwolekr <kwolekr@minetest.net>
Sun, 19 Jan 2014 07:55:59 +0000 (02:55 -0500)
src/script/lua_api/l_vmanip.cpp
src/script/lua_api/l_vmanip.h

index 92c04db3aca56b28de9e7b1584640af8dbc9859e..4c9047bd9156941ef32c333fadf6d3ff3a55cc5e 100644 (file)
@@ -229,6 +229,48 @@ int LuaVoxelManip::l_set_light_data(lua_State *L)
        return 0;
 }
 
+int LuaVoxelManip::l_get_param2_data(lua_State *L)
+{
+       NO_MAP_LOCK_REQUIRED;
+
+       LuaVoxelManip *o = checkobject(L, 1);
+       ManualMapVoxelManipulator *vm = o->vm;
+
+       int volume = vm->m_area.getVolume();
+
+       lua_newtable(L);
+       for (int i = 0; i != volume; i++) {
+               lua_Integer param2 = vm->m_data[i].param2;
+               lua_pushinteger(L, param2);
+               lua_rawseti(L, -2, i + 1);
+       }
+
+       return 1;
+}
+
+int LuaVoxelManip::l_set_param2_data(lua_State *L)
+{
+       NO_MAP_LOCK_REQUIRED;
+
+       LuaVoxelManip *o = checkobject(L, 1);
+       ManualMapVoxelManipulator *vm = o->vm;
+
+       if (!lua_istable(L, 2))
+               return 0;
+
+       int volume = vm->m_area.getVolume();
+       for (int i = 0; i != volume; i++) {
+               lua_rawgeti(L, 2, i + 1);
+               u8 param2 = lua_tointeger(L, -1);
+
+               vm->m_data[i].param2 = param2;
+
+               lua_pop(L, 1);
+       }
+
+       return 0;
+}
+
 int LuaVoxelManip::l_update_map(lua_State *L)
 {
        LuaVoxelManip *o = checkobject(L, 1);
@@ -352,5 +394,7 @@ const luaL_reg LuaVoxelManip::methods[] = {
        luamethod(LuaVoxelManip, set_lighting),
        luamethod(LuaVoxelManip, get_light_data),
        luamethod(LuaVoxelManip, set_light_data),
+       luamethod(LuaVoxelManip, get_param2_data),
+       luamethod(LuaVoxelManip, set_param2_data),
        {0,0}
 };
index b3393e09a30773158a079898bc2e20c92ba25eb9..fc7ef30e6c929130b85248feeb713db40cca5b46 100644 (file)
@@ -55,6 +55,9 @@ private:
        static int l_get_light_data(lua_State *L);
        static int l_set_light_data(lua_State *L);
 
+       static int l_get_param2_data(lua_State *L);
+       static int l_set_param2_data(lua_State *L);
+
 public:
        LuaVoxelManip(ManualMapVoxelManipulator *mmvm, bool is_mapgen_vm);
        LuaVoxelManip(Map *map);