diff options
author | kwolekr <kwolekr@minetest.net> | 2014-12-27 23:09:36 -0500 |
---|---|---|
committer | kwolekr <kwolekr@minetest.net> | 2014-12-27 23:09:36 -0500 |
commit | 8334100fe1b1bb40bfebff9ec9780c18fe3fd0c7 (patch) | |
tree | cacc08e1c21b30d976e755581d8a6abd93b1b1e9 /src/map.cpp | |
parent | ae2721f2c84183cea4e447009a59ce606601702e (diff) | |
download | minetest-8334100fe1b1bb40bfebff9ec9780c18fe3fd0c7.tar.gz minetest-8334100fe1b1bb40bfebff9ec9780c18fe3fd0c7.tar.bz2 minetest-8334100fe1b1bb40bfebff9ec9780c18fe3fd0c7.zip |
LuaVoxelManip: Add option to allocate blank data
Diffstat (limited to 'src/map.cpp')
-rw-r--r-- | src/map.cpp | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/src/map.cpp b/src/map.cpp index fde5b585d..05e07212d 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -3597,8 +3597,31 @@ ManualMapVoxelManipulator::~ManualMapVoxelManipulator() { } +void ManualMapVoxelManipulator::initializeBlank(v3s16 blockpos_min, + v3s16 blockpos_max) +{ + // Units of these are MapBlocks + v3s16 pmin = blockpos_min; + v3s16 pmax = blockpos_max; + + VoxelArea block_area_nodes(pmin * MAP_BLOCKSIZE, + (pmax + 1) * MAP_BLOCKSIZE - v3s16(1,1,1)); + + addArea(block_area_nodes); + u32 extent = m_area.getVolume(); + for (u32 i = 0; i != extent; i++) + m_data[i] = MapNode(CONTENT_IGNORE); + + for (s32 z = pmin.Z; z <= pmax.Z; z++) + for (s32 y = pmin.Y; y <= pmax.Y; y++) + for (s32 x = pmin.X; x <= pmax.X; x++) + m_loaded_blocks[v3s16(x, y, z)] = 0; + + m_is_dirty = false; +} + void ManualMapVoxelManipulator::initialEmerge(v3s16 blockpos_min, - v3s16 blockpos_max, bool load_if_inexistent) + v3s16 blockpos_max, bool load_if_inexistent) { TimeTaker timer1("initialEmerge", &emerge_time); |