aboutsummaryrefslogtreecommitdiff
path: root/src/nodedef.cpp
diff options
context:
space:
mode:
authorSmallJoker <SmallJoker@users.noreply.github.com>2022-08-13 08:52:16 +0200
committerGitHub <noreply@github.com>2022-08-13 08:52:16 +0200
commit023a1c2427fa34d5a87e7234c0c322d56765082b (patch)
tree2a24ab5e2838452959d225b1015292350b1a0d57 /src/nodedef.cpp
parent8bf1609cccba24e2516ecb98dbf694b91fe697bf (diff)
downloadminetest-023a1c2427fa34d5a87e7234c0c322d56765082b.tar.xz
Textures: introduce world-align overrides (#12540)
Many games do not care about world align textures, however texture packs should have the capabilities to change that if they have suitable textures. This commmit now introduces a node property override for world-align in particular to force a certain scale on the selected override tiles.
Diffstat (limited to 'src/nodedef.cpp')
-rw-r--r--src/nodedef.cpp32
1 files changed, 20 insertions, 12 deletions
diff --git a/src/nodedef.cpp b/src/nodedef.cpp
index 4022ac835..733dbf07a 100644
--- a/src/nodedef.cpp
+++ b/src/nodedef.cpp
@@ -1445,44 +1445,52 @@ void NodeDefManager::applyTextureOverrides(const std::vector<TextureOverride> &o
ContentFeatures &nodedef = m_content_features[id];
+ auto apply = [&] (TileDef &tile) {
+ tile.name = texture_override.texture;
+ if (texture_override.world_scale > 0) {
+ tile.align_style = ALIGN_STYLE_WORLD;
+ tile.scale = texture_override.world_scale;
+ }
+ };
+
// Override tiles
if (texture_override.hasTarget(OverrideTarget::TOP))
- nodedef.tiledef[0].name = texture_override.texture;
+ apply(nodedef.tiledef[0]);
if (texture_override.hasTarget(OverrideTarget::BOTTOM))
- nodedef.tiledef[1].name = texture_override.texture;
+ apply(nodedef.tiledef[1]);
if (texture_override.hasTarget(OverrideTarget::RIGHT))
- nodedef.tiledef[2].name = texture_override.texture;
+ apply(nodedef.tiledef[2]);
if (texture_override.hasTarget(OverrideTarget::LEFT))
- nodedef.tiledef[3].name = texture_override.texture;
+ apply(nodedef.tiledef[3]);
if (texture_override.hasTarget(OverrideTarget::BACK))
- nodedef.tiledef[4].name = texture_override.texture;
+ apply(nodedef.tiledef[4]);
if (texture_override.hasTarget(OverrideTarget::FRONT))
- nodedef.tiledef[5].name = texture_override.texture;
+ apply(nodedef.tiledef[5]);
// Override special tiles, if applicable
if (texture_override.hasTarget(OverrideTarget::SPECIAL_1))
- nodedef.tiledef_special[0].name = texture_override.texture;
+ apply(nodedef.tiledef_special[0]);
if (texture_override.hasTarget(OverrideTarget::SPECIAL_2))
- nodedef.tiledef_special[1].name = texture_override.texture;
+ apply(nodedef.tiledef_special[1]);
if (texture_override.hasTarget(OverrideTarget::SPECIAL_3))
- nodedef.tiledef_special[2].name = texture_override.texture;
+ apply(nodedef.tiledef_special[2]);
if (texture_override.hasTarget(OverrideTarget::SPECIAL_4))
- nodedef.tiledef_special[3].name = texture_override.texture;
+ apply(nodedef.tiledef_special[3]);
if (texture_override.hasTarget(OverrideTarget::SPECIAL_5))
- nodedef.tiledef_special[4].name = texture_override.texture;
+ apply(nodedef.tiledef_special[4]);
if (texture_override.hasTarget(OverrideTarget::SPECIAL_6))
- nodedef.tiledef_special[5].name = texture_override.texture;
+ apply(nodedef.tiledef_special[5]);
}
}