diff options
author | Sapier <sapier AT gmx dot net> | 2015-12-19 04:43:59 +0100 |
---|---|---|
committer | Sapier <sapier AT gmx dot net> | 2015-12-29 16:27:06 +0100 |
commit | 91bafceee6606fab79db1bde4cba01b84fed65c7 (patch) | |
tree | b09068be483bdac711954a112ddb4226d6504742 /src/wieldmesh.cpp | |
parent | f14e7bac54af65e3d3d99f89f23f114b17058e49 (diff) | |
download | minetest-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.cpp | 14 |
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; |