diff options
author | kwolekr <mirrorisim@gmail.com> | 2013-02-21 22:26:21 -0500 |
---|---|---|
committer | kwolekr <mirrorisim@gmail.com> | 2013-02-25 23:08:55 -0500 |
commit | 5bd50a2d9060f265d4c8d2fff062cac106ccab7c (patch) | |
tree | 8605b7df87bb03e94ae07343505013a6818c6ee5 | |
parent | 60e6284f30d31e11c1a464d9a8b3c5c392ceb3f0 (diff) | |
download | minetest-5bd50a2d9060f265d4c8d2fff062cac106ccab7c.tar.gz minetest-5bd50a2d9060f265d4c8d2fff062cac106ccab7c.tar.bz2 minetest-5bd50a2d9060f265d4c8d2fff062cac106ccab7c.zip |
Fix most walled-off caves
-rw-r--r-- | src/map.cpp | 23 | ||||
-rw-r--r-- | src/porting.h | 2 | ||||
-rw-r--r-- | src/voxel.cpp | 8 |
3 files changed, 18 insertions, 15 deletions
diff --git a/src/map.cpp b/src/map.cpp index 3f2f8d1d3..74bea3dac 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -2240,7 +2240,7 @@ bool ServerMap::initBlockMake(BlockMakeData *data, v3s16 blockpos) } // Ensure none of the blocks to be generated were marked as containing CONTENT_IGNORE - for (s16 z = blockpos_min.Z; z <= blockpos_max.Z; z++) { +/* for (s16 z = blockpos_min.Z; z <= blockpos_max.Z; z++) { for (s16 y = blockpos_min.Y; y <= blockpos_max.Y; y++) { for (s16 x = blockpos_min.X; x <= blockpos_max.X; x++) { core::map<v3s16, u8>::Node *n; @@ -2252,7 +2252,7 @@ bool ServerMap::initBlockMake(BlockMakeData *data, v3s16 blockpos) n->setValue(flags); } } - } + }*/ // Data is ready now. return true; @@ -3715,11 +3715,11 @@ void MapVoxelManipulator::emerge(VoxelArea a, s32 caller_id) memset(&m_flags[i], VOXELFLAG_INEXISTENT, MAP_BLOCKSIZE); } } - else if (block->getNode(0, 0, 0).getContent() == CONTENT_IGNORE) + /*else if (block->getNode(0, 0, 0).getContent() == CONTENT_IGNORE) { // Mark that block was loaded as blank flags |= VMANIP_BLOCK_CONTAINS_CIGNORE; - } + }*/ m_loaded_blocks.insert(p, flags); } @@ -3881,11 +3881,11 @@ void ManualMapVoxelManipulator::initialEmerge( memset(&m_flags[i], VOXELFLAG_INEXISTENT, MAP_BLOCKSIZE); } } - else if (block->getNode(0, 0, 0).getContent() == CONTENT_IGNORE) + /*else if (block->getNode(0, 0, 0).getContent() == CONTENT_IGNORE) { // Mark that block was loaded as blank flags |= VMANIP_BLOCK_CONTAINS_CIGNORE; - } + }*/ m_loaded_blocks.insert(p, flags); } @@ -3927,13 +3927,10 @@ void ManualMapVoxelManipulator::blitBackAll( continue; } - bool no_content_ignore = !(flags & VMANIP_BLOCK_CONTAINS_CIGNORE); - if (no_content_ignore) - { - block->copyFrom(*this); - if(modified_blocks) - modified_blocks->insert(p, block); - } + block->copyFrom(*this); + + if(modified_blocks) + modified_blocks->insert(p, block); } } diff --git a/src/porting.h b/src/porting.h index 74ee97f88..03d2fcbd3 100644 --- a/src/porting.h +++ b/src/porting.h @@ -72,7 +72,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #define THREAD_PRIORITY_BELOW_NORMAL 1 #define THREAD_PRIORITY_NORMAL 2 #define THREAD_PRIORITY_ABOVE_NORMAL 3 - #define THREAD_PRIORITY_HIGHEST 4 + #define THREAD_PRIORITY_HIGHEST 4 #endif #ifdef _MSC_VER diff --git a/src/voxel.cpp b/src/voxel.cpp index 0ff5305fa..c55f3f539 100644 --- a/src/voxel.cpp +++ b/src/voxel.cpp @@ -244,7 +244,13 @@ void VoxelManipulator::copyTo(MapNode *dst, VoxelArea dst_area, { s32 i_dst = dst_area.index(dst_pos.X, dst_pos.Y+y, dst_pos.Z+z); s32 i_local = m_area.index(from_pos.X, from_pos.Y+y, from_pos.Z+z); - memcpy(&dst[i_dst], &m_data[i_local], size.X*sizeof(MapNode)); + for (s16 x = 0; x < size.X; x++) { + if (m_data[i_local].getContent() != CONTENT_IGNORE) + dst[i_dst] = m_data[i_local]; + i_dst++; + i_local++; + } + //memcpy(&dst[i_dst], &m_data[i_local], size.X*sizeof(MapNode)); } } |