]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/voxel.cpp
random build system tweaking
[dragonfireclient.git] / src / voxel.cpp
index f8a98942cc7e72873803875a4c91791ce09a10d0..2fd4e7b457ab4bef1f0b64f8cfd38e4ef48dba3f 100644 (file)
@@ -21,8 +21,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "map.h"
 
 // For TimeTaker
-#include "main.h"
 #include "utility.h"
+#include "gettime.h"
 
 /*
        Debug stuff
@@ -138,7 +138,7 @@ void VoxelManipulator::addArea(VoxelArea area)
        if(m_area.contains(area))
                return;
        
-       TimeTaker timer("addArea", g_device, &addarea_time);
+       TimeTaker timer("addArea", &addarea_time);
 
        // Calculate new area
        VoxelArea new_area;
@@ -290,7 +290,7 @@ void VoxelManipulator::interpolate(VoxelArea area)
 void VoxelManipulator::clearFlag(u8 flags)
 {
        // 0-1ms on moderate area
-       TimeTaker timer("clearFlag", g_device, &clearflag_time);
+       TimeTaker timer("clearFlag", &clearflag_time);
 
        v3s16 s = m_area.getExtent();
 
@@ -539,8 +539,7 @@ void VoxelManipulator::updateAreaWaterPressure(VoxelArea a,
                core::map<v3s16, u8> &active_nodes,
                bool checked3_is_clear)
 {
-       TimeTaker timer("updateAreaWaterPressure", g_device,
-                       &updateareawaterpressure_time);
+       TimeTaker timer("updateAreaWaterPressure", &updateareawaterpressure_time);
 
        emerge(a, 3);
        
@@ -585,7 +584,7 @@ void VoxelManipulator::updateAreaWaterPressure(VoxelArea a,
                try
                {
                        // 0-1ms @ recur_count <= 100
-                       //TimeTaker timer("getWaterPressure", g_device);
+                       //TimeTaker timer("getWaterPressure", g_irrlicht);
                        pr = getWaterPressure(p, highest_y, recur_count);
                }
                catch(ProcessingLimitException &e)
@@ -613,7 +612,7 @@ void VoxelManipulator::updateAreaWaterPressure(VoxelArea a,
                try
                {
                        // 0ms
-                       //TimeTaker timer("spreadWaterPressure", g_device);
+                       //TimeTaker timer("spreadWaterPressure", g_irrlicht);
                        spreadWaterPressure(p, pr, a, active_nodes, 0);
                }
                catch(ProcessingLimitException &e)
@@ -653,7 +652,7 @@ bool VoxelManipulator::flowWater(v3s16 removed_pos,
        //dstream<<"s1="<<s1<<", s2="<<s2<<std::endl;
 
        {
-       TimeTaker timer1("flowWater pre", g_device, &flowwater_pre_time);
+       TimeTaker timer1("flowWater pre", &flowwater_pre_time);
        
        // Load neighboring nodes
        emerge(VoxelArea(removed_pos - v3s16(1,1,1), removed_pos + v3s16(1,1,1)), 4);
@@ -802,11 +801,13 @@ bool VoxelManipulator::flowWater(v3s16 removed_pos,
                                debugprint, stoptime);
        }
        
-       if(stoptime != 0 && g_device != NULL)
+       if(stoptime != 0)
        {
-               u32 timenow = g_device->getTimer()->getRealTime();
-               if(timenow >= stoptime ||
-                               (stoptime < 0x80000000 && timenow > 0x80000000))
+               u32 timenow = getTimeMs();
+               // Well, it is a bit hard to guess because we don't know the
+               // start time...
+               bool overflow = timenow < stoptime - 100000;
+               if(timenow >= stoptime || overflow)
                {
                        dstream<<"flowWater: stoptime reached"<<std::endl;
                        throw ProcessingLimitException("flowWater stoptime reached");
@@ -870,16 +871,13 @@ void VoxelManipulator::flowWater(
                return;
        }
 
-       //TimeTaker timer1("flowWater (active_nodes)", g_device);
+       //TimeTaker timer1("flowWater (active_nodes)", g_irrlicht);
 
        //dstream<<"active_nodes.size() = "<<active_nodes.size()<<std::endl;
 
 
        u32 stoptime = 0;
-       if(g_device != NULL)
-       {
-               stoptime = g_device->getTimer()->getRealTime() + timelimit;
-       }
+       stoptime = getTimeMs() + timelimit;
 
        // Count of handled active nodes
        u32 handled_count = 0;
@@ -895,7 +893,7 @@ void VoxelManipulator::flowWater(
        */
        s32 k = 0;
        if(active_nodes.size() != 0)
-               k = (s32)rand() % (s32)active_nodes.size();
+               k = (s32)myrand() % (s32)active_nodes.size();
 
        // Flow water to active nodes
        for(;;)