diff options
author | sfan5 <sfan5@live.de> | 2021-05-08 19:33:52 +0200 |
---|---|---|
committer | sfan5 <sfan5@live.de> | 2021-05-08 19:44:43 +0200 |
commit | 2443f1e2351d641d82597525e937792cce15be1e (patch) | |
tree | b53e9cc6c59b68f54ce50210e464c321690346c8 | |
parent | 7c2826cbc0f36027d4a9781f433150d1c5d0d03f (diff) | |
download | minetest-2443f1e2351d641d82597525e937792cce15be1e.tar.gz minetest-2443f1e2351d641d82597525e937792cce15be1e.tar.bz2 minetest-2443f1e2351d641d82597525e937792cce15be1e.zip |
Fix overlays for 2D-drawn items
fixes #11248
-rw-r--r-- | src/client/hud.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/client/hud.cpp b/src/client/hud.cpp index 7f044cccd..0bfdd5af0 100644 --- a/src/client/hud.cpp +++ b/src/client/hud.cpp @@ -997,6 +997,8 @@ void drawItemStack( const ItemDefinition &def = item.getDefinition(client->idef()); + bool draw_overlay = false; + // Render as mesh if animated or no inventory image if ((enable_animations && rotation_kind < IT_ROT_NONE) || def.inventory_image.empty()) { ItemMesh *imesh = client->idef()->getWieldMesh(def.name, client); @@ -1089,6 +1091,8 @@ void drawItemStack( driver->setTransform(video::ETS_VIEW, oldViewMat); driver->setTransform(video::ETS_PROJECTION, oldProjMat); driver->setViewPort(oldViewPort); + + draw_overlay = def.type == ITEM_NODE && def.inventory_image.empty(); } else { // Otherwise just draw as 2D video::ITexture *texture = client->idef()->getInventoryTexture(def.name, client); if (!texture) @@ -1100,11 +1104,12 @@ void drawItemStack( draw2DImageFilterScaled(driver, texture, rect, core::rect<s32>({0, 0}, core::dimension2di(texture->getOriginalSize())), clip, colors, true); + + draw_overlay = true; } // draw the inventory_overlay - if (def.type == ITEM_NODE && def.inventory_image.empty() && - !def.inventory_overlay.empty()) { + if (!def.inventory_overlay.empty() && draw_overlay) { ITextureSource *tsrc = client->getTextureSource(); video::ITexture *overlay_texture = tsrc->getTexture(def.inventory_overlay); core::dimension2d<u32> dimens = overlay_texture->getOriginalSize(); |