Fix most walled-off caves
authorkwolekr <mirrorisim@gmail.com>
Fri, 22 Feb 2013 03:26:21 +0000 (22:26 -0500)
committerkwolekr <mirrorisim@gmail.com>
Tue, 26 Feb 2013 04:08:55 +0000 (23:08 -0500)
src/map.cpp
src/porting.h
src/voxel.cpp

index 3f2f8d1d35c034e2da9640c2584a077c920f8e79..74bea3dac7272f81f672ec6243e2d093a029562a 100644 (file)
@@ -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);
        }
 }
 
index 74ee97f88efa8dcca558d2d4229e3ad018937578..03d2fcbd360894671e13a8a9829a7001ef5b4298 100644 (file)
@@ -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
index 0ff5305fa99d5dba1b44300099c06b6780e4552c..c55f3f5392dd0716ba96096412932aa91e2bf273 100644 (file)
@@ -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));
        }
 }