From 023a1c2427fa34d5a87e7234c0c322d56765082b Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Sat, 13 Aug 2022 08:52:16 +0200 Subject: 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. --- src/nodedef.cpp | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) (limited to 'src/nodedef.cpp') 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 &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]); } } -- cgit v1.2.3