]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/client/wieldmesh.cpp
Add disable_jump check for the player's feet
[dragonfireclient.git] / src / client / wieldmesh.cpp
index 4c25fafb1e94ceac449d3258ef11d27b5b38dda1..997eb1b5b66d30b4c1e177dd4a1eb591f6c9fae3 100644 (file)
@@ -282,6 +282,7 @@ void WieldMeshSceneNode::setExtruded(const std::string &imagename,
                material.TextureLayer[0].TextureWrapU = video::ETC_CLAMP_TO_EDGE;
                material.TextureLayer[0].TextureWrapV = video::ETC_CLAMP_TO_EDGE;
                material.MaterialType = m_material_type;
+               material.MaterialTypeParam = 0.5f;
                material.setFlag(video::EMF_BACK_FACE_CULLING, true);
                // Enable bi/trilinear filtering only for high resolution textures
                if (dim.Width > 32) {
@@ -346,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;
        }
 
@@ -426,6 +427,7 @@ void WieldMeshSceneNode::setItem(const ItemStack &item, Client *client, bool che
                for (u32 i = 0; i < material_count; ++i) {
                        video::SMaterial &material = m_meshnode->getMaterial(i);
                        material.MaterialType = m_material_type;
+                       material.MaterialTypeParam = 0.5f;
                        material.setFlag(video::EMF_BACK_FACE_CULLING, true);
                        material.setFlag(video::EMF_BILINEAR_FILTER, m_bilinear_filter);
                        material.setFlag(video::EMF_TRILINEAR_FILTER, m_trilinear_filter);
@@ -469,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,
@@ -569,6 +586,7 @@ void getItemMesh(Client *client, const ItemStack &item, ItemMesh *result)
                        scene::IMeshBuffer *buf = mesh->getMeshBuffer(i);
                        video::SMaterial &material = buf->getMaterial();
                        material.MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL;
+                       material.MaterialTypeParam = 0.5f;
                        material.setFlag(video::EMF_BILINEAR_FILTER, false);
                        material.setFlag(video::EMF_TRILINEAR_FILTER, false);
                        material.setFlag(video::EMF_BACK_FACE_CULLING, true);
@@ -619,6 +637,7 @@ scene::SMesh *getExtrudedMesh(ITextureSource *tsrc,
                material.setFlag(video::EMF_BACK_FACE_CULLING, true);
                material.setFlag(video::EMF_LIGHTING, false);
                material.MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL;
+               material.MaterialTypeParam = 0.5f;
        }
        scaleMesh(mesh, v3f(2.0, 2.0, 2.0));