]> git.lizzy.rs Git - minetest.git/blobdiff - src/environment.cpp
Deduplicate code and use stdlib in string functions
[minetest.git] / src / environment.cpp
index 6e5305b1e014778dde7ec52478a3787b3666d2db..ee4488476455293e06d41296b4c925e31034324e 100644 (file)
@@ -55,6 +55,7 @@ Environment::Environment():
        m_enable_day_night_ratio_override(false),
        m_day_night_ratio_override(0.0f)
 {
+       m_cache_enable_shaders = g_settings->getBool("enable_shaders");
 }
 
 Environment::~Environment()
@@ -206,8 +207,7 @@ u32 Environment::getDayNightRatio()
 {
        if(m_enable_day_night_ratio_override)
                return m_day_night_ratio_override;
-       bool smooth = g_settings->getBool("enable_shaders");
-       return time_to_daynight_ratio(m_time_of_day_f*24000, smooth);
+       return time_to_daynight_ratio(m_time_of_day_f*24000, m_cache_enable_shaders);
 }
 
 void Environment::setTimeOfDaySpeed(float speed)
@@ -1669,7 +1669,7 @@ void ServerEnvironment::activateObjects(MapBlock *block, u32 dtime_s)
        if(block==NULL)
                return;
        // Ignore if no stored objects (to not set changed flag)
-       if(block->m_static_objects.m_stored.size() == 0)
+       if(block->m_static_objects.m_stored.empty())
                return;
        verbosestream<<"ServerEnvironment::activateObjects(): "
                        <<"activating objects of block "<<PP(block->getPos())
@@ -2342,10 +2342,8 @@ void ClientEnvironment::step(float dtime)
                // (day: LIGHT_SUN, night: 0)
                MapNode node_at_lplayer(CONTENT_AIR, 0x0f, 0);
 
-               try {
-                       v3s16 p = lplayer->getLightPosition();
-                       node_at_lplayer = m_map->getNode(p);
-               } catch (InvalidPositionException &e) {}
+               v3s16 p = lplayer->getLightPosition();
+               node_at_lplayer = m_map->getNodeNoEx(p);
 
                u16 light = getInteriorLight(node_at_lplayer, 0, m_gamedef->ndef());
                u8 day = light & 0xff;
@@ -2371,15 +2369,16 @@ void ClientEnvironment::step(float dtime)
                {
                        // Update lighting
                        u8 light = 0;
-                       try{
-                               // Get node at head
-                               v3s16 p = obj->getLightPosition();
-                               MapNode n = m_map->getNode(p);
+                       bool pos_ok;
+
+                       // Get node at head
+                       v3s16 p = obj->getLightPosition();
+                       MapNode n = m_map->getNodeNoEx(p, &pos_ok);
+                       if (pos_ok)
                                light = n.getLightBlend(day_night_ratio, m_gamedef->ndef());
-                       }
-                       catch(InvalidPositionException &e){
+                       else
                                light = blend_light(day_night_ratio, LIGHT_SUN, 0);
-                       }
+
                        obj->updateLight(light);
                }
        }
@@ -2470,15 +2469,16 @@ u16 ClientEnvironment::addActiveObject(ClientActiveObject *object)
        object->addToScene(m_smgr, m_texturesource, m_irr);
        { // Update lighting immediately
                u8 light = 0;
-               try{
-                       // Get node at head
-                       v3s16 p = object->getLightPosition();
-                       MapNode n = m_map->getNode(p);
+               bool pos_ok;
+
+               // Get node at head
+               v3s16 p = object->getLightPosition();
+               MapNode n = m_map->getNodeNoEx(p, &pos_ok);
+               if (pos_ok)
                        light = n.getLightBlend(getDayNightRatio(), m_gamedef->ndef());
-               }
-               catch(InvalidPositionException &e){
+               else
                        light = blend_light(getDayNightRatio(), LIGHT_SUN, 0);
-               }
+
                object->updateLight(light);
        }
        return object->getId();