diff options
author | RealBadAngel <maciej.kasatkin@o2.pl> | 2014-10-21 05:12:15 +0200 |
---|---|---|
committer | RealBadAngel <maciej.kasatkin@o2.pl> | 2014-10-21 18:43:29 +0200 |
commit | d221917170c2bb43c66e5e09f2a43350cf28d71b (patch) | |
tree | b76f4ef279a5139756787413a423102b3dd20a68 /src/content_mapblock.cpp | |
parent | 9029a34cc6a3b19c1a431fe3ba069c30a13321fc (diff) | |
download | minetest-d221917170c2bb43c66e5e09f2a43350cf28d71b.tar.gz minetest-d221917170c2bb43c66e5e09f2a43350cf28d71b.tar.bz2 minetest-d221917170c2bb43c66e5e09f2a43350cf28d71b.zip |
Recalculate normals for cached meshes.
Check if mesh is here before adding to meshcollector.
Fix deleting the meshes.
Diffstat (limited to 'src/content_mapblock.cpp')
-rw-r--r-- | src/content_mapblock.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/content_mapblock.cpp b/src/content_mapblock.cpp index 996db421b..527086b89 100644 --- a/src/content_mapblock.cpp +++ b/src/content_mapblock.cpp @@ -1720,11 +1720,13 @@ void mapblock_mesh_generate_special(MeshMakeData *data, v3f pos = intToFloat(p, BS); video::SColor c = MapBlock_LightColor(255, getInteriorLight(n, 1, nodedef), f.light_source); u8 facedir = n.getFaceDir(nodedef); - for(u16 j = 0; j < f.mesh_ptr[facedir]->getMeshBufferCount(); j++) { - scene::IMeshBuffer *buf = f.mesh_ptr[facedir]->getMeshBuffer(j); - collector.append(getNodeTileN(n, p, j, data), - (video::S3DVertex *)buf->getVertices(), buf->getVertexCount(), - buf->getIndices(), buf->getIndexCount(), pos, c); + if (f.mesh_ptr[facedir]) { + for(u16 j = 0; j < f.mesh_ptr[facedir]->getMeshBufferCount(); j++) { + scene::IMeshBuffer *buf = f.mesh_ptr[facedir]->getMeshBuffer(j); + collector.append(getNodeTileN(n, p, j, data), + (video::S3DVertex *)buf->getVertices(), buf->getVertexCount(), + buf->getIndices(), buf->getIndexCount(), pos, c); + } } break;} } |