aboutsummaryrefslogtreecommitdiff
path: root/src/voxel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/voxel.cpp')
-rw-r--r--src/voxel.cpp15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/voxel.cpp b/src/voxel.cpp
index 4b523b596..0d8b55163 100644
--- a/src/voxel.cpp
+++ b/src/voxel.cpp
@@ -183,11 +183,10 @@ void VoxelManipulator::addArea(VoxelArea area)
// Allocate and clear new data
MapNode *new_data = new MapNode[new_size];
+ assert(new_data);
u8 *new_flags = new u8[new_size];
- for(s32 i=0; i<new_size; i++)
- {
- new_flags[i] = VOXELFLAG_NOT_LOADED;
- }
+ assert(new_flags);
+ memset(new_flags, VOXELFLAG_NOT_LOADED, new_size);
// Copy old data
@@ -195,11 +194,13 @@ void VoxelManipulator::addArea(VoxelArea area)
for(s32 y=m_area.MinEdge.Y; y<=m_area.MaxEdge.Y; y++)
for(s32 x=m_area.MinEdge.X; x<=m_area.MaxEdge.X; x++)
{
+ unsigned int old_index = m_area.index(x,y,z);
// If loaded, copy data and flags
- if((m_flags[m_area.index(x,y,z)] & VOXELFLAG_NOT_LOADED) == false)
+ if((m_flags[old_index] & VOXELFLAG_NOT_LOADED) == false)
{
- new_data[new_area.index(x,y,z)] = m_data[m_area.index(x,y,z)];
- new_flags[new_area.index(x,y,z)] = m_flags[m_area.index(x,y,z)];
+ unsigned int new_index = new_area.index(x,y,z);
+ new_data[new_index] = m_data[old_index];
+ new_flags[new_index] = m_flags[old_index];
}
}