]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/mapblock_mesh.cpp
Fix MinGW build
[dragonfireclient.git] / src / mapblock_mesh.cpp
index 28c52f4b9a2092caef9f592ddff98ffffbc58b2b..253703ddc82ab58ba21cd6ac3e674c0a3d449117 100644 (file)
@@ -711,7 +711,8 @@ TileSpec getNodeTile(MapNode mn, v3s16 p, v3s16 dir, MeshMakeData *data)
 
        // Get rotation for things like chests
        u8 facedir = mn.getFaceDir(ndef);
-       assert(facedir <= 23);
+       if (facedir > 23)
+               facedir = 0;
        static const u16 dir_to_tile[24 * 16] =
        {
                // 0     +X    +Y    +Z           -Z    -Y    -X   ->   value=tile,rotation  
@@ -734,17 +735,17 @@ TileSpec getNodeTile(MapNode mn, v3s16 p, v3s16 dir, MeshMakeData *data)
                   0,0,  0,2 , 5,3 , 3,1 ,  0,0,  2,3 , 4,3 , 1,0 ,
                   0,0,  0,1 , 2,3 , 5,1 ,  0,0,  4,3 , 3,3 , 1,1 ,
                   0,0,  0,0 , 4,3 , 2,1 ,  0,0,  3,3 , 5,3 , 1,2 ,
-                  
+
                   0,0,  1,1 , 2,1 , 4,3 ,  0,0,  5,1 , 3,1 , 0,1 ,  // rotate around x- 16 - 19  
                   0,0,  1,2 , 4,1 , 3,3 ,  0,0,  2,1 , 5,1 , 0,0 ,
                   0,0,  1,3 , 3,1 , 5,3 ,  0,0,  4,1 , 2,1 , 0,3 ,  
                   0,0,  1,0 , 5,1 , 2,3 ,  0,0,  3,1 , 4,1 , 0,2 ,  
-               
+
                   0,0,  3,2 , 1,2 , 4,2 ,  0,0,  5,2 , 0,2 , 2,2 ,  // rotate around y- 20 - 23
                   0,0,  5,2 , 1,3 , 3,2 ,  0,0,  2,2 , 0,1 , 4,2 ,  
                   0,0,  2,2 , 1,0 , 5,2 ,  0,0,  4,2 , 0,0 , 3,2 ,  
                   0,0,  4,2 , 1,1 , 2,2 ,  0,0,  3,2 , 0,3 , 5,2   
-                  
+
        };
        u16 tile_index=facedir*16 + dir_i;
        TileSpec spec = getNodeTileN(mn, p, dir_to_tile[tile_index], data);
@@ -1108,18 +1109,22 @@ MapBlockMesh::MapBlockMesh(MeshMakeData *data):
        /*
                Convert MeshCollector to SMesh
        */
+       bool enable_shaders     = g_settings->getBool("enable_shaders");
        bool enable_bumpmapping = g_settings->getBool("enable_bumpmapping");
-       bool enable_shaders = g_settings->getBool("enable_shaders");
-       video::E_MATERIAL_TYPE shadermat1 = m_gamedef->getShaderSource()->
-                       getShader("test_shader_1").material;
-       video::E_MATERIAL_TYPE shadermat2 = m_gamedef->getShaderSource()->
-                       getShader("test_shader_2").material;
-       video::E_MATERIAL_TYPE shadermat3 = m_gamedef->getShaderSource()->
-                       getShader("test_shader_3").material;
-       video::E_MATERIAL_TYPE bumpmaps1 = m_gamedef->getShaderSource()->
-                       getShader("bumpmaps_solids").material;
-       video::E_MATERIAL_TYPE bumpmaps2 = m_gamedef->getShaderSource()->
-                       getShader("bumpmaps_liquids").material;
+
+       video::E_MATERIAL_TYPE  shadermat1, shadermat2, shadermat3, bumpmaps1, bumpmaps2;
+       shadermat1 = shadermat2 = shadermat3 = bumpmaps1 = bumpmaps2 = video::EMT_SOLID;
+
+       if (enable_shaders) {
+               IShaderSource *shdrsrc = m_gamedef->getShaderSource();
+               shadermat1 = shdrsrc->getShader("test_shader_1").material;
+               shadermat2 = shdrsrc->getShader("test_shader_2").material;
+               shadermat3 = shdrsrc->getShader("test_shader_3").material;
+               if (enable_bumpmapping) {
+                       bumpmaps1 = shdrsrc->getShader("bumpmaps_solids").material;
+                       bumpmaps2 = shdrsrc->getShader("bumpmaps_liquids").material;
+               }
+       }
 
        for(u32 i = 0; i < collector.prebuffers.size(); i++)
        {
@@ -1293,7 +1298,7 @@ MapBlockMesh::~MapBlockMesh()
 
 bool MapBlockMesh::animate(bool faraway, float time, int crack, u32 daynight_ratio)
 {
-       bool enable_shaders = (g_settings->getS32("enable_shaders") > 0);
+       bool enable_shaders = g_settings->getBool("enable_shaders");
        bool enable_bumpmapping = g_settings->getBool("enable_bumpmapping");
        
        if(!m_has_animation)