Revert "Remove workaround in itemdef.cpp to enable/disable/enable "enable_shaders...
authorCraig Robbins <kde.psych@gmail.com>
Wed, 11 Feb 2015 07:01:19 +0000 (17:01 +1000)
committerCraig Robbins <kde.psych@gmail.com>
Wed, 11 Feb 2015 07:01:19 +0000 (17:01 +1000)
This reverts commit d25ff8fd2592f457b91e8a61240694af3902d23f.

src/client.cpp
src/client.h
src/itemdef.cpp
src/mapblock_mesh.cpp
src/mapblock_mesh.h
src/wieldmesh.cpp

index 107e16f1487f377cb8d84051800e8cf31bfc4a6c..b13631f9507d1df0be01c2b5c02b37a0a13d831d 100644 (file)
@@ -283,7 +283,6 @@ Client::Client(
        }
 
        m_cache_smooth_lighting = g_settings->getBool("smooth_lighting");
-       m_cache_enable_shaders  = g_settings->getBool("enable_shaders");
 }
 
 void Client::Stop()
@@ -2682,7 +2681,7 @@ void Client::addUpdateMeshTask(v3s16 p, bool ack_to_server, bool urgent)
                Create a task to update the mesh of the block
        */
 
-       MeshMakeData *data = new MeshMakeData(this, m_cache_enable_shaders);
+       MeshMakeData *data = new MeshMakeData(this);
 
        {
                //TimeTaker timer("data fill");
index 93143009e2c6c9cd6963701662f2cb6d9053796e..fd43361b11f68d9c65c22a2d87e45b52283055e8 100644 (file)
@@ -623,9 +623,8 @@ private:
        Database *localdb;
        Server *localserver;
 
-       // TODO: Add callback to update these when g_settings changes
+       // TODO: Add callback to update this when g_settings changes
        bool m_cache_smooth_lighting;
-       bool m_cache_enable_shaders;
 };
 
 #endif // !CLIENT_HEADER
index d356b96c5379d4b2f68cb7becf2416853c40e060..ac67c5b271994827502559cf0fc28543e4357674 100644 (file)
@@ -362,6 +362,8 @@ public:
 
                        scene::IMesh *node_mesh = NULL;
 
+                       bool reenable_shaders = false;
+
                        if (need_rtt_mesh || need_wield_mesh) {
                                u8 param1 = 0;
                                if (f.param_type == CPT_LIGHT)
@@ -370,7 +372,11 @@ public:
                                /*
                                        Make a mesh from the node
                                */
-                               MeshMakeData mesh_make_data(gamedef, false);
+                               if (g_settings->getBool("enable_shaders")) {
+                                       reenable_shaders = true;
+                                       g_settings->setBool("enable_shaders", false);
+                               }
+                               MeshMakeData mesh_make_data(gamedef);
                                u8 param2 = 0;
                                if (f.param_type_2 == CPT2_WALLMOUNTED)
                                        param2 = 1;
@@ -437,6 +443,9 @@ public:
 
                        if (node_mesh)
                                node_mesh->drop();
+
+                       if (reenable_shaders)
+                               g_settings->setBool("enable_shaders",true);
                }
 
                // Put in cache
index 318be14d69d2ffd68876378aefad6a0672b3dd08..cf311acba1a54454eeaab7e904fd5897c2483bb3 100644 (file)
@@ -42,7 +42,7 @@ static void applyFacesShading(video::SColor& color, float factor)
        MeshMakeData
 */
 
-MeshMakeData::MeshMakeData(IGameDef *gamedef, bool use_shaders):
+MeshMakeData::MeshMakeData(IGameDef *gamedef):
        m_vmanip(),
        m_blockpos(-1337,-1337,-1337),
        m_crack_pos_relative(-1337, -1337, -1337),
@@ -50,8 +50,7 @@ MeshMakeData::MeshMakeData(IGameDef *gamedef, bool use_shaders):
        m_smooth_lighting(false),
        m_show_hud(false),
        m_highlight_mesh_color(255, 255, 255, 255),
-       m_gamedef(gamedef),
-       m_use_shaders(use_shaders)
+       m_gamedef(gamedef)
 {}
 
 void MeshMakeData::fill(MapBlock *block)
index 98af92c74c396e4019845182c2e2afed6bc96dff..be56d4c586a03e37ac20bcc7120f988073665b68 100644 (file)
@@ -45,9 +45,8 @@ struct MeshMakeData
        video::SColor m_highlight_mesh_color;
 
        IGameDef *m_gamedef;
-       bool m_use_shaders;
 
-       MeshMakeData(IGameDef *gamedef, bool use_shaders);
+       MeshMakeData(IGameDef *gamedef);
 
        /*
                Copy central data directly from block, and other data from
index 7c16bddcbdb282af08ac465ab970c5f931013288..4ddae36d485deda8569923edf40c8b1a054a68cd 100644 (file)
@@ -340,9 +340,7 @@ void WieldMeshSceneNode::setItem(const ItemStack &item, IGameDef *gamedef)
                } else if (f.drawtype == NDT_NORMAL || f.drawtype == NDT_ALLFACES) {
                        setCube(f.tiles, def.wield_scale, tsrc);
                } else {
-                       //// TODO: Change false in the following constructor args to
-                       //// appropriate value when shader is added for wield items (if applicable)
-                       MeshMakeData mesh_make_data(gamedef, false);
+                       MeshMakeData mesh_make_data(gamedef);
                        MapNode mesh_make_node(id, 255, 0);
                        mesh_make_data.fillSingleNode(&mesh_make_node);
                        MapBlockMesh mapblock_mesh(&mesh_make_data, v3s16(0, 0, 0));