Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Use memset for flag initialization (compiler optimization is way better)
use temp variables instead of recalculating array index
  • Loading branch information
sapier authored and sapier committed Jun 22, 2014
1 parent 496cb11 commit 56bf867
Showing 1 changed file with 8 additions and 7 deletions.
15 changes: 8 additions & 7 deletions src/voxel.cpp
Expand Up @@ -183,23 +183,24 @@ 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

for(s32 z=m_area.MinEdge.Z; z<=m_area.MaxEdge.Z; z++)
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];
}
}

Expand Down

0 comments on commit 56bf867

Please sign in to comment.