Reuse object_shader for "wielditem" and "item" entity drawtypes (#9537)
[oweals/minetest.git] / src / client / wieldmesh.cpp
index 2c6807fab10ec3c9a933f9974da33c83803def42..997eb1b5b66d30b4c1e177dd4a1eb591f6c9fae3 100644 (file)
@@ -347,7 +347,7 @@ void WieldMeshSceneNode::setItem(const ItemStack &item, Client *client, bool che
        scene::SMesh *mesh = nullptr;
 
        if (m_enable_shaders) {
-               u32 shader_id = shdrsrc->getShader("wielded_shader", TILE_MATERIAL_BASIC, NDT_NORMAL);
+               u32 shader_id = shdrsrc->getShader("object_shader", TILE_MATERIAL_BASIC, NDT_NORMAL);
                m_material_type = shdrsrc->getShaderInfo(shader_id).material;
        }
 
@@ -471,6 +471,21 @@ void WieldMeshSceneNode::setColor(video::SColor c)
        }
 }
 
+void WieldMeshSceneNode::setNodeLightColor(video::SColor color)
+{
+       if (!m_meshnode)
+               return;
+
+       if (m_enable_shaders) {
+               for (u32 i = 0; i < m_meshnode->getMaterialCount(); ++i) {
+                       video::SMaterial &material = m_meshnode->getMaterial(i);
+                       material.EmissiveColor = color;
+               }
+       } else {
+               setColor(color);
+       }
+}
+
 void WieldMeshSceneNode::render()
 {
        // note: if this method is changed to actually do something,