aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkwolekr <mirrorisim@gmail.com>2013-02-21 22:26:21 -0500
committerkwolekr <mirrorisim@gmail.com>2013-02-25 23:08:55 -0500
commit5bd50a2d9060f265d4c8d2fff062cac106ccab7c (patch)
tree8605b7df87bb03e94ae07343505013a6818c6ee5
parent60e6284f30d31e11c1a464d9a8b3c5c392ceb3f0 (diff)
downloadminetest-5bd50a2d9060f265d4c8d2fff062cac106ccab7c.tar.gz
minetest-5bd50a2d9060f265d4c8d2fff062cac106ccab7c.tar.bz2
minetest-5bd50a2d9060f265d4c8d2fff062cac106ccab7c.zip
Fix most walled-off caves
-rw-r--r--src/map.cpp23
-rw-r--r--src/porting.h2
-rw-r--r--src/voxel.cpp8
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));
}
}