Expose getPointedThing to Lua
[oweals/minetest.git] / src / nodedef.cpp
index 110393d630a050fd190b7ac6859cddbe4308214b..6ccbc1557d993ba7055d68770a8cc242f13706b5 100644 (file)
@@ -690,6 +690,8 @@ void ContentFeatures::updateTextures(ITextureSource *tsrc, IShaderSource *shdsrc
        switch (drawtype) {
        default:
        case NDT_NORMAL:
+               material_type = (alpha == 255) ?
+                       TILE_MATERIAL_OPAQUE : TILE_MATERIAL_ALPHA;
                solidness = 2;
                break;
        case NDT_AIRLIKE:
@@ -786,6 +788,16 @@ void ContentFeatures::updateTextures(ITextureSource *tsrc, IShaderSource *shdsrc
                tile_shader[j] = shdsrc->getShader("nodes_shader",
                        material_type, drawtype);
        }
+       u8 overlay_material = material_type;
+       if (overlay_material == TILE_MATERIAL_OPAQUE)
+               overlay_material = TILE_MATERIAL_BASIC;
+       else if (overlay_material == TILE_MATERIAL_LIQUID_OPAQUE)
+               overlay_material = TILE_MATERIAL_LIQUID_TRANSPARENT;
+       u32 overlay_shader[6];
+       for (u16 j = 0; j < 6; j++) {
+               overlay_shader[j] = shdsrc->getShader("nodes_shader",
+                       overlay_material, drawtype);
+       }
 
        // Tiles (fill in f->tiles[])
        for (u16 j = 0; j < 6; j++) {
@@ -794,8 +806,8 @@ void ContentFeatures::updateTextures(ITextureSource *tsrc, IShaderSource *shdsrc
                        tdef[j].backface_culling, material_type);
                if (tdef_overlay[j].name != "")
                        fillTileAttribs(tsrc, &tiles[j].layers[1], &tdef_overlay[j],
-                               tile_shader[j], tsettings.use_normal_texture,
-                               tdef[j].backface_culling, material_type);
+                               overlay_shader[j], tsettings.use_normal_texture,
+                               tdef[j].backface_culling, overlay_material);
        }
 
        // Special tiles (fill in f->special_tiles[])