1
0
mirror of https://github.com/luanti-org/luanti.git synced 2025-11-06 10:15:19 +01:00

Respect node alpha node for inventory drawing (#16556)

This commit is contained in:
sfan5
2025-10-11 19:37:30 +02:00
committed by GitHub
parent a141f8478b
commit c2e2b97944
4 changed files with 114 additions and 64 deletions

View File

@@ -49,13 +49,14 @@ class ItemMeshBufferInfo
public:
ItemMeshBufferInfo() = default;
ItemMeshBufferInfo(int layer) : layer(layer) {}
ItemMeshBufferInfo(bool override, video::SColor color) :
override_color(color), override_color_set(override)
ItemMeshBufferInfo(int layer, bool override, video::SColor color) :
override_color(color), override_color_set(override),
layer(layer)
{}
ItemMeshBufferInfo(const TileLayer &layer);
ItemMeshBufferInfo(int layer_num, const TileLayer &layer);
void applyOverride(video::SColor &dest) const {
if (override_color_set)
@@ -70,6 +71,9 @@ public:
return true;
}
// Index of the tile layer this mesh buffer belongs to
u8 layer;
// Null for no animated parts
std::unique_ptr<AnimationInfo> animation_info;
};
@@ -132,6 +136,7 @@ private:
// Child scene node with the current wield mesh
scene::IMeshSceneNode *m_meshnode = nullptr;
// Material types used as fallback
video::E_MATERIAL_TYPE m_material_type;
bool m_anisotropic_filter;
@@ -156,6 +161,10 @@ private:
ShadowRenderer *m_shadow;
};
/**
* NOTE: The item mesh is only suitable for inventory rendering (due to its
* material types). In-world rendering of items must go through WieldMeshSceneNode.
*/
void getItemMesh(Client *client, const ItemStack &item, ItemMesh *result);
scene::SMesh *getExtrudedMesh(video::ITexture *texture,