From: Perttu Ahola Date: Tue, 15 Nov 2011 19:36:46 +0000 (+0200) Subject: Improve glass X-Git-Url: http://81.2.79.47:8989/gitweb/?a=commitdiff_plain;h=2f2392f7834e355bfa57ef9f2fbd3f645be6ca6d;p=zefram%2Fminetest%2Fminetest_engine.git Improve glass --- diff --git a/data/mods/default/textures/glass.png b/data/mods/default/textures/glass.png index 8598ce67..ade0196f 100644 Binary files a/data/mods/default/textures/glass.png and b/data/mods/default/textures/glass.png differ diff --git a/src/content_mapblock.cpp b/src/content_mapblock.cpp index fd2a30ba..0bd2d226 100644 --- a/src/content_mapblock.cpp +++ b/src/content_mapblock.cpp @@ -529,6 +529,14 @@ void mapblock_mesh_generate_special(MeshMakeData *data, for(u32 j=0; j<6; j++) { + // Check this neighbor + v3s16 n2p = blockpos_nodes + p + g_6dirs[j]; + MapNode n2 = data->m_vmanip.getNodeNoEx(n2p); + // Don't make face if neighbor is of same type + if(n2.getContent() == n.getContent()) + continue; + + // The face at Z+ video::S3DVertex vertices[4] = { video::S3DVertex(-BS/2,-BS/2,BS/2, 0,0,0, c, @@ -540,40 +548,28 @@ void mapblock_mesh_generate_special(MeshMakeData *data, video::S3DVertex(-BS/2,BS/2,BS/2, 0,0,0, c, pa_glass.x0(), pa_glass.y0()), }; - - if(j == 0) - { + + // Rotations in the g_6dirs format + if(j == 0) // Z+ for(u16 i=0; i<4; i++) vertices[i].Pos.rotateXZBy(0); - } - else if(j == 1) - { + else if(j == 1) // Y+ for(u16 i=0; i<4; i++) - vertices[i].Pos.rotateXZBy(180); - } - else if(j == 2) - { + vertices[i].Pos.rotateYZBy(-90); + else if(j == 2) // X+ for(u16 i=0; i<4; i++) vertices[i].Pos.rotateXZBy(-90); - } - else if(j == 3) - { - for(u16 i=0; i<4; i++) - vertices[i].Pos.rotateXZBy(90); - } - else if(j == 4) - { + else if(j == 3) // Z- for(u16 i=0; i<4; i++) - vertices[i].Pos.rotateYZBy(-90); - } - else if(j == 5) - { + vertices[i].Pos.rotateXZBy(180); + else if(j == 4) // Y- for(u16 i=0; i<4; i++) vertices[i].Pos.rotateYZBy(90); - } + else if(j == 5) // X- + for(u16 i=0; i<4; i++) + vertices[i].Pos.rotateXZBy(90); - for(u16 i=0; i<4; i++) - { + for(u16 i=0; i<4; i++){ vertices[i].Pos += intToFloat(p + blockpos_nodes, BS); } @@ -609,39 +605,27 @@ void mapblock_mesh_generate_special(MeshMakeData *data, pa_leaves1.x0(), pa_leaves1.y0()), }; - if(j == 0) - { + // Rotations in the g_6dirs format + if(j == 0) // Z+ for(u16 i=0; i<4; i++) vertices[i].Pos.rotateXZBy(0); - } - else if(j == 1) - { + else if(j == 1) // Y+ for(u16 i=0; i<4; i++) - vertices[i].Pos.rotateXZBy(180); - } - else if(j == 2) - { + vertices[i].Pos.rotateYZBy(-90); + else if(j == 2) // X+ for(u16 i=0; i<4; i++) vertices[i].Pos.rotateXZBy(-90); - } - else if(j == 3) - { + else if(j == 3) // Z- for(u16 i=0; i<4; i++) - vertices[i].Pos.rotateXZBy(90); - } - else if(j == 4) - { - for(u16 i=0; i<4; i++) - vertices[i].Pos.rotateYZBy(-90); - } - else if(j == 5) - { + vertices[i].Pos.rotateXZBy(180); + else if(j == 4) // Y- for(u16 i=0; i<4; i++) vertices[i].Pos.rotateYZBy(90); - } + else if(j == 5) // X- + for(u16 i=0; i<4; i++) + vertices[i].Pos.rotateXZBy(90); - for(u16 i=0; i<4; i++) - { + for(u16 i=0; i<4; i++){ vertices[i].Pos += intToFloat(p + blockpos_nodes, BS); }