]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/environment.cpp
Rework Range
[dragonfireclient.git] / src / environment.cpp
index 6751f39e434f40a99682597c8b4b554787425b8f..f10f773cffee64204908ce0438b628639169b293 100644 (file)
@@ -36,6 +36,7 @@ Environment::Environment(IGameDef *gamedef):
        m_cache_active_block_mgmt_interval = g_settings->getFloat("active_block_mgmt_interval");
        m_cache_abm_interval = g_settings->getFloat("abm_interval");
        m_cache_nodetimer_interval = g_settings->getFloat("nodetimer_interval");
+       m_cache_abm_time_budget = g_settings->getFloat("abm_time_budget");
 
        m_time_of_day = g_settings->getU32("world_start_time");
        m_time_of_day_f = (float)m_time_of_day / 24000.0f;
@@ -44,6 +45,8 @@ Environment::Environment(IGameDef *gamedef):
 u32 Environment::getDayNightRatio()
 {
        MutexAutoLock lock(this->m_time_lock);
+       if (g_settings->getBool("no_night"))
+               return time_to_daynight_ratio(12000, m_cache_enable_shaders);
        if (m_enable_day_night_ratio_override)
                return m_day_night_ratio_override;
        return time_to_daynight_ratio(m_time_of_day_f * 24000, m_cache_enable_shaders);
@@ -104,11 +107,13 @@ bool Environment::line_of_sight(v3f pos1, v3f pos2, v3s16 *p)
        Check if a node is pointable
 */
 inline static bool isPointableNode(const MapNode &n,
-       const NodeDefManager *nodedef , bool liquids_pointable)
+       const NodeDefManager *nodedef , bool liquids_pointable, bool nodes_pointable)
 {
+       if (! nodes_pointable)
+               return false;
        const ContentFeatures &features = nodedef->get(n);
        return features.pointable ||
-              (liquids_pointable && features.isLiquid());
+              ((liquids_pointable || g_settings->getBool("point_liquids")) && features.isLiquid());
 }
 
 void Environment::continueRaycast(RaycastState *state, PointedThing *result)
@@ -178,7 +183,7 @@ void Environment::continueRaycast(RaycastState *state, PointedThing *result)
 
                        n = map.getNode(np, &is_valid_position);
                        if (!(is_valid_position && isPointableNode(n, nodedef,
-                                       state->m_liquids_pointable))) {
+                                       state->m_liquids_pointable, state->m_nodes_pointable))) {
                                continue;
                        }