Skip to content

Commit

Permalink
Drop never documented 'alpha' property from nodedef
Browse files Browse the repository at this point in the history
Includes minimal support code for practical reasons.
We'll need it for a slightly different purpose next commit.
  • Loading branch information
sfan5 committed Jan 29, 2021
1 parent e6e5910 commit edd8c3c
Show file tree
Hide file tree
Showing 5 changed files with 8 additions and 42 deletions.
1 change: 0 additions & 1 deletion builtin/game/item.lua
Expand Up @@ -715,7 +715,6 @@ core.nodedef_default = {
-- {name="", backface_culling=true},
-- {name="", backface_culling=true},
--},
alpha = 255,

This comment has been minimized.

This comment has been minimized.

Copy link
@sfan5

sfan5 Jan 29, 2021

Author Member

Yes, I'm aware that it's in use despite being undocumented.

post_effect_color = {a=0, r=0, g=0, b=0},
paramtype = "none",
paramtype2 = "none",
Expand Down
15 changes: 4 additions & 11 deletions games/devtest/mods/testnodes/textures.lua
Expand Up @@ -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
Expand Down
20 changes: 0 additions & 20 deletions src/nodedef.cpp
Expand Up @@ -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
Expand Down Expand Up @@ -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;
Expand Down
9 changes: 0 additions & 9 deletions src/nodedef.h
Expand Up @@ -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.
Expand Down
5 changes: 4 additions & 1 deletion src/script/common/c_content.cpp
Expand Up @@ -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);
Expand Down

0 comments on commit edd8c3c

Please sign in to comment.