From edd8c3c664ad005eb32e1968ce80091851ffb817 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sat, 16 Jan 2021 22:16:04 +0100 Subject: [PATCH] Drop never documented 'alpha' property from nodedef Includes minimal support code for practical reasons. We'll need it for a slightly different purpose next commit. --- builtin/game/item.lua | 1 - games/devtest/mods/testnodes/textures.lua | 15 ++++----------- src/nodedef.cpp | 20 -------------------- src/nodedef.h | 9 --------- src/script/common/c_content.cpp | 5 ++++- 5 files changed, 8 insertions(+), 42 deletions(-) diff --git a/builtin/game/item.lua b/builtin/game/item.lua index 0df25b455..63f8d50e5 100644 --- a/builtin/game/item.lua +++ b/builtin/game/item.lua @@ -715,7 +715,6 @@ core.nodedef_default = { -- {name="", backface_culling=true}, -- {name="", backface_culling=true}, --}, - alpha = 255, post_effect_color = {a=0, r=0, g=0, b=0}, paramtype = "none", paramtype2 = "none", diff --git a/games/devtest/mods/testnodes/textures.lua b/games/devtest/mods/testnodes/textures.lua index e0724c229..af3b7f468 100644 --- a/games/devtest/mods/testnodes/textures.lua +++ b/games/devtest/mods/testnodes/textures.lua @@ -51,23 +51,16 @@ for a=1,#alphas do groups = { dig_immediate = 3 }, }) - -- Transparency set via "alpha" parameter + -- Transparency set via texture modifier minetest.register_node("testnodes:alpha_"..alpha, { description = S("Alpha Test Node (@1)", alpha), - -- It seems that only the liquid drawtype supports the alpha parameter - drawtype = "liquid", + drawtype = "glasslike", paramtype = "light", tiles = { - "testnodes_alpha.png", + "testnodes_alpha.png^[opacity:" .. alpha, }, - alpha = alpha, + use_texture_alpha = true, - - liquidtype = "source", - liquid_range = 0, - liquid_viscosity = 0, - liquid_alternative_source = "testnodes:alpha_"..alpha, - liquid_alternative_flowing = "testnodes:alpha_"..alpha, groups = { dig_immediate = 3 }, }) end diff --git a/src/nodedef.cpp b/src/nodedef.cpp index 1740b010a..b2cfd1f87 100644 --- a/src/nodedef.cpp +++ b/src/nodedef.cpp @@ -491,21 +491,6 @@ void ContentFeatures::serialize(std::ostream &os, u16 protocol_version) const writeU8(os, leveled_max); } -void ContentFeatures::correctAlpha(TileDef *tiles, int length) -{ - // alpha == 0 means that the node is using texture alpha - if (alpha == 0 || alpha == 255) - return; - - for (int i = 0; i < length; i++) { - if (tiles[i].name.empty()) - continue; - std::stringstream s; - s << tiles[i].name << "^[noalpha^[opacity:" << ((int)alpha); - tiles[i].name = s.str(); - } -} - void ContentFeatures::deSerialize(std::istream &is) { // version detection @@ -874,11 +859,6 @@ void ContentFeatures::updateTextures(ITextureSource *tsrc, IShaderSource *shdsrc } if (is_liquid) { - // Vertex alpha is no longer supported, correct if necessary. - correctAlpha(tdef, 6); - correctAlpha(tdef_overlay, 6); - correctAlpha(tdef_spec, CF_SPECIAL_COUNT); - if (waving == 3) { material_type = (alpha == 255) ? TILE_MATERIAL_WAVING_LIQUID_OPAQUE : TILE_MATERIAL_WAVING_LIQUID_TRANSPARENT; diff --git a/src/nodedef.h b/src/nodedef.h index 66c21cc07..63b9474b9 100644 --- a/src/nodedef.h +++ b/src/nodedef.h @@ -418,15 +418,6 @@ struct ContentFeatures void serialize(std::ostream &os, u16 protocol_version) const; void deSerialize(std::istream &is); - /*! - * Since vertex alpha is no longer supported, this method - * adds opacity directly to the texture pixels. - * - * \param tiles array of the tile definitions. - * \param length length of tiles - */ - void correctAlpha(TileDef *tiles, int length); - #ifndef SERVER /* * Checks if any tile texture has any transparent pixels. diff --git a/src/script/common/c_content.cpp b/src/script/common/c_content.cpp index 4316f412d..5d29422af 100644 --- a/src/script/common/c_content.cpp +++ b/src/script/common/c_content.cpp @@ -618,7 +618,10 @@ void read_content_features(lua_State *L, ContentFeatures &f, int index) } lua_pop(L, 1); - f.alpha = getintfield_default(L, index, "alpha", 255); + warn_if_field_exists(L, index, "alpha", + "Obsolete, only limited compatibility provided"); + if (getintfield_default(L, index, "alpha", 255) != 255) + f.alpha = 0; bool usealpha = getboolfield_default(L, index, "use_texture_alpha", false);