]> git.lizzy.rs Git - minetest.git/blobdiff - src/voxel.cpp
Optionally specify propagateSunlight area in calcLighting
[minetest.git] / src / voxel.cpp
index e6d4bdcd22587d5bad6895f61e337f8df029f9bf..1299a5296da9c5eef0d25e243b6f2ca721f5e052 100644 (file)
@@ -46,21 +46,15 @@ VoxelManipulator::VoxelManipulator():
 VoxelManipulator::~VoxelManipulator()
 {
        clear();
-       if(m_data)
-               delete[] m_data;
-       if(m_flags)
-               delete[] m_flags;
 }
 
 void VoxelManipulator::clear()
 {
        // Reset area to volume=0
        m_area = VoxelArea();
-       if(m_data)
-               delete[] m_data;
+       delete[] m_data;
        m_data = NULL;
-       if(m_flags)
-               delete[] m_flags;
+       delete[] m_flags;
        m_flags = NULL;
 }
 
@@ -180,7 +174,9 @@ void VoxelManipulator::addArea(const VoxelArea &area)
        dstream<<std::endl;*/
 
        // Allocate and clear new data
-       MapNode *new_data = new MapNode[new_size];
+       // FIXME: UGLY KLUDGE because MapNode default constructor is FUBAR; it
+       //        initialises data that is going to be overwritten anyway
+       MapNode *new_data = (MapNode*)new char[new_size * sizeof (*new_data)];
        assert(new_data);
        u8 *new_flags = new u8[new_size];
        assert(new_flags);
@@ -213,10 +209,8 @@ void VoxelManipulator::addArea(const VoxelArea &area)
        m_data = new_data;
        m_flags = new_flags;
 
-       if(old_data)
-               delete[] old_data;
-       if(old_flags)
-               delete[] old_flags;
+       delete[] old_data;
+       delete[] old_flags;
 
        //dstream<<"addArea done"<<std::endl;
 }
@@ -420,7 +414,7 @@ void VoxelManipulator::unspreadLight(enum LightBank bank,
                std::map<v3s16, u8> & from_nodes,
                std::set<v3s16> & light_sources, INodeDefManager *nodemgr)
 {
-       if(from_nodes.size() == 0)
+       if(from_nodes.empty())
                return;
 
        for(std::map<v3s16, u8>::iterator j = from_nodes.begin();
@@ -646,7 +640,7 @@ void VoxelManipulator::spreadLight(enum LightBank bank,
                v3s16(-1,0,0), // left
        };
 
-       if(from_nodes.size() == 0)
+       if(from_nodes.empty())
                return;
 
        std::set<v3s16> lighted_nodes;
@@ -719,7 +713,7 @@ void VoxelManipulator::spreadLight(enum LightBank bank,
                        <<" for "<<from_nodes.size()<<" nodes"
                        <<std::endl;*/
 
-       if(lighted_nodes.size() > 0)
+       if(!lighted_nodes.empty())
                spreadLight(bank, lighted_nodes, nodemgr);
 }
 #endif