summaryrefslogtreecommitdiff
path: root/src/content_mapblock.cpp
diff options
context:
space:
mode:
authorRealBadAngel <maciej.kasatkin@o2.pl>2014-10-21 05:12:15 +0200
committerRealBadAngel <maciej.kasatkin@o2.pl>2014-10-21 18:43:29 +0200
commitd221917170c2bb43c66e5e09f2a43350cf28d71b (patch)
treeb76f4ef279a5139756787413a423102b3dd20a68 /src/content_mapblock.cpp
parent9029a34cc6a3b19c1a431fe3ba069c30a13321fc (diff)
downloadminetest-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.cpp12
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;}
}