diff options
author | Perttu Ahola <celeron55@gmail.com> | 2011-11-15 21:36:46 +0200 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2011-11-29 19:13:45 +0200 |
commit | 2f2392f7834e355bfa57ef9f2fbd3f645be6ca6d (patch) | |
tree | 3990153c9fd4901add6b5c7abd3cde1fc5abf4ab /src | |
parent | c3703ded953326823c5a0941881d23f3f136f88d (diff) | |
download | minetest-2f2392f7834e355bfa57ef9f2fbd3f645be6ca6d.tar.gz minetest-2f2392f7834e355bfa57ef9f2fbd3f645be6ca6d.tar.bz2 minetest-2f2392f7834e355bfa57ef9f2fbd3f645be6ca6d.zip |
Improve glass
Diffstat (limited to 'src')
-rw-r--r-- | src/content_mapblock.cpp | 82 |
1 files changed, 33 insertions, 49 deletions
diff --git a/src/content_mapblock.cpp b/src/content_mapblock.cpp index fd2a30baf..0bd2d2263 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); } |