]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/client/clientmap.cpp
Improved X-Ray, added AutoEject
[dragonfireclient.git] / src / client / clientmap.cpp
index 8a182b14a5509787ad06a8d5eff7215e7c6b842f..d41b667416ce8eb765b8902763fe8ad11bb4da9b 100644 (file)
@@ -63,14 +63,13 @@ ClientMap::ClientMap(
 MapSector * ClientMap::emergeSector(v2s16 p2d)
 {
        // Check that it doesn't exist already
-       try {
-               return getSectorNoGenerate(p2d);
-       } catch(InvalidPositionException &e) {
-       }
+       MapSector *sector = getSectorNoGenerate(p2d);
 
-       // Create a sector
-       MapSector *sector = new MapSector(this, p2d, m_gamedef);
-       m_sectors[p2d] = sector;
+       // Create it if it does not exist yet
+       if (!sector) {
+               sector = new MapSector(this, p2d, m_gamedef);
+               m_sectors[p2d] = sector;
+       }
 
        return sector;
 }
@@ -145,13 +144,18 @@ void ClientMap::updateDrawList()
        // No occlusion culling when free_move is on and camera is
        // inside ground
        bool occlusion_culling_enabled = true;
-       if (g_settings->getBool("free_move")) {
+       if (g_settings->getBool("free_move") && g_settings->getBool("noclip")) {
                MapNode n = getNode(cam_pos_nodes);
                if (n.getContent() == CONTENT_IGNORE ||
                                m_nodedef->get(n).solidness == 2)
                        occlusion_culling_enabled = false;
        }
 
+       // Uncomment to debug occluded blocks in the wireframe mode
+       // TODO: Include this as a flag for an extended debugging setting
+       //if (occlusion_culling_enabled && m_control.show_wireframe)
+       //    occlusion_culling_enabled = porting::getTimeS() & 1;
+
        for (const auto &sector_it : m_sectors) {
                MapSector *sector = sector_it.second;
                v2s16 sp = sector->getPos();
@@ -584,7 +588,7 @@ void ClientMap::renderPostFx(CameraMode cam_mode)
        // - Do not if player is in third person mode
        const ContentFeatures& features = m_nodedef->get(n);
        video::SColor post_effect_color = features.post_effect_color;
-       if(features.solidness == 2 && !(g_settings->getBool("noclip") &&
+       if(features.solidness == 2 && !((g_settings->getBool("noclip") || g_settings->getBool("freecam")) &&
                        m_client->checkLocalPrivilege("noclip")) &&
                        cam_mode == CAMERA_MODE_FIRST)
        {