diff options
| author | SmallJoker <SmallJoker@users.noreply.github.com> | 2022-08-13 08:52:16 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-08-13 08:52:16 +0200 |
| commit | 023a1c2427fa34d5a87e7234c0c322d56765082b (patch) | |
| tree | 2a24ab5e2838452959d225b1015292350b1a0d57 /src/nodedef.cpp | |
| parent | 8bf1609cccba24e2516ecb98dbf694b91fe697bf (diff) | |
| download | minetest-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.cpp | 32 |
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]); } } |
