Lua voxelmanip: Add optional buffer param for 'get param2 data'
authorparamat <mat.gregory@virginmedia.com>
Sat, 29 Oct 2016 14:22:18 +0000 (15:22 +0100)
committerparamat <mat.gregory@virginmedia.com>
Mon, 31 Oct 2016 10:59:38 +0000 (10:59 +0000)
Update lua_api.txt.

doc/lua_api.txt
src/script/lua_api/l_vmanip.cpp

index 43ff66bb98655e3d5e479935783af201e740ccdf..da90f93d2655e2c295eb5c577d5f1d38a6b600c1 100644 (file)
@@ -3263,7 +3263,9 @@ will place the schematic inside of the VoxelManip.
 * `set_light_data(light_data)`: Sets the `param1` (light) contents of each node
   in the `VoxelManip`
     * expects lighting data in the same format that `get_light_data()` returns
-* `get_param2_data()`: Gets the raw `param2` data read into the `VoxelManip` object
+* `get_param2_data([buffer])`: Gets the raw `param2` data read into the `VoxelManip` object
+    * Returns an array (indices 1 to volume) of integers ranging from `0` to `255`
+    * If the param `buffer` is present, this table will be used to store the result instead
 * `set_param2_data(param2_data)`: Sets the `param2` contents of each node in the `VoxelManip`
 * `calc_lighting([p1, p2], [propagate_shadow])`:  Calculate lighting within the `VoxelManip`
     * To be used only by a `VoxelManip` object from `minetest.get_mapgen_object`
index 0d8123acd437eaea75b8e8c08398df5a5667fcef..bdf720f0a10f5f480e53787787a451f11a65d201 100644 (file)
@@ -277,11 +277,17 @@ int LuaVoxelManip::l_get_param2_data(lua_State *L)
        NO_MAP_LOCK_REQUIRED;
 
        LuaVoxelManip *o = checkobject(L, 1);
+       bool use_buffer  = lua_istable(L, 2);
+
        MMVManip *vm = o->vm;
 
        u32 volume = vm->m_area.getVolume();
 
-       lua_newtable(L);
+       if (use_buffer)
+               lua_pushvalue(L, 2);
+       else
+               lua_newtable(L);
+
        for (u32 i = 0; i != volume; i++) {
                lua_Integer param2 = vm->m_data[i].param2;
                lua_pushinteger(L, param2);