diff options
author | Perttu Ahola <celeron55@gmail.com> | 2011-11-08 16:17:38 +0200 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2011-11-08 16:17:38 +0200 |
commit | 045e32b6ecb99432beac3363685fb622e9ec3457 (patch) | |
tree | 8cd881ec22499a5848e8682061a4cf10ae8bd91c /src/content_mapblock.cpp | |
parent | fea55a9b87b47eb7cac19587923c5debde8336b7 (diff) | |
download | minetest-045e32b6ecb99432beac3363685fb622e9ec3457.tar.gz minetest-045e32b6ecb99432beac3363685fb622e9ec3457.tar.bz2 minetest-045e32b6ecb99432beac3363685fb622e9ec3457.zip |
Fix water-glass and water-lava surfaces
Diffstat (limited to 'src/content_mapblock.cpp')
-rw-r--r-- | src/content_mapblock.cpp | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/content_mapblock.cpp b/src/content_mapblock.cpp index 60e07781e..b033e484c 100644 --- a/src/content_mapblock.cpp +++ b/src/content_mapblock.cpp @@ -364,6 +364,9 @@ void mapblock_mesh_generate_special(MeshMakeData *data, assert(content_features(n).special_material); video::SMaterial &liquid_material = *content_features(n).special_material; + video::SMaterial &liquid_material_bfculled = + *content_features(n).special_material2; + assert(content_features(n).special_atlas); AtlasPointer &pa_liquid1 = *content_features(n).special_atlas; @@ -516,10 +519,10 @@ void mapblock_mesh_generate_special(MeshMakeData *data, continue; content_t neighbor_content = neighbor_contents[dir]; + ContentFeatures &n_feat = content_features(neighbor_content); - // Don't draw face if neighbor is not air or liquid - if(neighbor_content != CONTENT_AIR - && content_liquid(neighbor_content) == false) + // Don't draw face if neighbor is blocking the view + if(n_feat.solidness == 2) continue; bool neighbor_is_same_liquid = (neighbor_content == c_source @@ -530,6 +533,12 @@ void mapblock_mesh_generate_special(MeshMakeData *data, if(neighbor_is_same_liquid == true && top_is_same_liquid == false) continue; + + // Use backface culled material if neighbor doesn't have a + // solidness of 0 + video::SMaterial *current_material = &liquid_material; + if(n_feat.solidness != 0 || n_feat.visual_solidness != 0) + current_material = &liquid_material_bfculled; video::S3DVertex vertices[4] = { @@ -603,7 +612,7 @@ void mapblock_mesh_generate_special(MeshMakeData *data, u16 indices[] = {0,1,2,2,3,0}; // Add to mesh collector - collector.append(liquid_material, vertices, 4, indices, 6); + collector.append(*current_material, vertices, 4, indices, 6); } /* |