Use memset for flag initialization (compiler optimization is way better)
authorsapier <Sapier at GMX dot net>
Sat, 7 Jun 2014 00:52:58 +0000 (02:52 +0200)
committersapier <Sapier at GMX dot net>
Sun, 22 Jun 2014 22:13:41 +0000 (00:13 +0200)
use temp variables instead of recalculating array index

src/voxel.cpp

index 4b523b5960ce7235b843ac603c591710c0540da7..0d8b55163daa37196895ceb68565515f0afe72d6 100644 (file)
@@ -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];
                }
        }