summaryrefslogtreecommitdiff
path: root/src/content_mapblock.cpp
diff options
context:
space:
mode:
authorRealBadAngel <maciej.kasatkin@o2.pl>2014-09-18 09:56:27 +0200
committerRealBadAngel <maciej.kasatkin@o2.pl>2014-09-18 09:56:27 +0200
commit86a0f5603b9e936b8527ae22c4aeaf5714c9d279 (patch)
tree94ec87f57e5dd83e345a42988b0a22dc60177af4 /src/content_mapblock.cpp
parent58e6d25e033c76dc91aaac18fdeda92ac23fe0e1 (diff)
downloadminetest-86a0f5603b9e936b8527ae22c4aeaf5714c9d279.tar.gz
minetest-86a0f5603b9e936b8527ae22c4aeaf5714c9d279.tar.bz2
minetest-86a0f5603b9e936b8527ae22c4aeaf5714c9d279.zip
Bugfix: don't highlight air nodes.
Diffstat (limited to 'src/content_mapblock.cpp')
-rw-r--r--src/content_mapblock.cpp70
1 files changed, 36 insertions, 34 deletions
diff --git a/src/content_mapblock.cpp b/src/content_mapblock.cpp
index 0b4b7fd0a..b7a48d57e 100644
--- a/src/content_mapblock.cpp
+++ b/src/content_mapblock.cpp
@@ -193,41 +193,43 @@ void mapblock_mesh_generate_special(MeshMakeData *data,
(p.Z >= 0) & (p.Z < MAP_BLOCKSIZE)) {
MapNode n = data->m_vmanip.getNodeNoEx(blockpos_nodes + p);
- // Get selection mesh light level
- static const v3s16 dirs[7] = {
- v3s16( 0, 0, 0),
- v3s16( 0, 1, 0),
- v3s16( 0,-1, 0),
- v3s16( 1, 0, 0),
- v3s16(-1, 0, 0),
- v3s16( 0, 0, 1),
- v3s16( 0, 0,-1)
- };
+ if(n.getContent() != CONTENT_AIR) {
+ // Get selection mesh light level
+ static const v3s16 dirs[7] = {
+ v3s16( 0, 0, 0),
+ v3s16( 0, 1, 0),
+ v3s16( 0,-1, 0),
+ v3s16( 1, 0, 0),
+ v3s16(-1, 0, 0),
+ v3s16( 0, 0, 1),
+ v3s16( 0, 0,-1)
+ };
- u16 l = 0;
- u16 l1 = 0;
- for (u8 i = 0; i < 7; i++) {
- MapNode n1 = data->m_vmanip.getNodeNoEx(blockpos_nodes + p + dirs[i]);
- l1 = getInteriorLight(n1, -4, nodedef);
- if (l1 > l)
- l = l1;
- }
- video::SColor c = MapBlock_LightColor(255, l, 0);
- data->m_highlight_mesh_color = c;
- std::vector<aabb3f> boxes = n.getSelectionBoxes(nodedef);
- TileSpec h_tile;
- h_tile.material_flags |= MATERIAL_FLAG_HIGHLIGHTED;
- h_tile.texture = tsrc->getTexture("halo.png",&h_tile.texture_id);
- v3f pos = intToFloat(p, BS);
- f32 d = 0.05 * BS;
- for(std::vector<aabb3f>::iterator
- i = boxes.begin();
- i != boxes.end(); i++)
- {
- aabb3f box = *i;
- box.MinEdge += v3f(-d, -d, -d) + pos;
- box.MaxEdge += v3f(d, d, d) + pos;
- makeCuboid(&collector, box, &h_tile, 1, c, NULL);
+ u16 l = 0;
+ u16 l1 = 0;
+ for (u8 i = 0; i < 7; i++) {
+ MapNode n1 = data->m_vmanip.getNodeNoEx(blockpos_nodes + p + dirs[i]);
+ l1 = getInteriorLight(n1, -4, nodedef);
+ if (l1 > l)
+ l = l1;
+ }
+ video::SColor c = MapBlock_LightColor(255, l, 0);
+ data->m_highlight_mesh_color = c;
+ std::vector<aabb3f> boxes = n.getSelectionBoxes(nodedef);
+ TileSpec h_tile;
+ h_tile.material_flags |= MATERIAL_FLAG_HIGHLIGHTED;
+ h_tile.texture = tsrc->getTexture("halo.png",&h_tile.texture_id);
+ v3f pos = intToFloat(p, BS);
+ f32 d = 0.05 * BS;
+ for(std::vector<aabb3f>::iterator
+ i = boxes.begin();
+ i != boxes.end(); i++)
+ {
+ aabb3f box = *i;
+ box.MinEdge += v3f(-d, -d, -d) + pos;
+ box.MaxEdge += v3f(d, d, d) + pos;
+ makeCuboid(&collector, box, &h_tile, 1, c, NULL);
+ }
}
}