summaryrefslogtreecommitdiff
path: root/src/wieldmesh.cpp
diff options
context:
space:
mode:
authorSapier <sapier AT gmx dot net>2015-12-19 04:43:59 +0100
committerSapier <sapier AT gmx dot net>2015-12-29 16:27:06 +0100
commit91bafceee6606fab79db1bde4cba01b84fed65c7 (patch)
treeb09068be483bdac711954a112ddb4226d6504742 /src/wieldmesh.cpp
parentf14e7bac54af65e3d3d99f89f23f114b17058e49 (diff)
downloadminetest-91bafceee6606fab79db1bde4cba01b84fed65c7.tar.gz
minetest-91bafceee6606fab79db1bde4cba01b84fed65c7.tar.bz2
minetest-91bafceee6606fab79db1bde4cba01b84fed65c7.zip
Add support for using arbitrary meshes as items
Diffstat (limited to 'src/wieldmesh.cpp')
-rw-r--r--src/wieldmesh.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/wieldmesh.cpp b/src/wieldmesh.cpp
index a022754a6..77a5cf73a 100644
--- a/src/wieldmesh.cpp
+++ b/src/wieldmesh.cpp
@@ -386,6 +386,20 @@ void WieldMeshSceneNode::setItem(const ItemStack &item, IGameDef *gamedef)
}
return;
}
+ else if (idef->getWieldMesh(def.name, gamedef) != 0) {
+ irr::scene::IMesh * mesh = idef->getWieldMesh(def.name, gamedef);
+ m_meshnode->setMesh(mesh);
+ u32 material_count = m_meshnode->getMaterialCount();
+ for (u32 i = 0; i < material_count; ++i) {
+ video::SMaterial &material = m_meshnode->getMaterial(i);
+ 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);
+ material.MaterialType = m_material_type;
+ material.setTexture(0, tsrc->getTexture(def.meshtexture));
+ }
+ return;
+ }
else if (def.inventory_image != "") {
setExtruded(def.inventory_image, def.wield_scale, tsrc, 1);
return;