summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSapier <sapier AT gmx dot net>2015-12-29 19:53:38 +0100
committerSapier <sapier AT gmx dot net>2015-12-29 19:53:38 +0100
commit25d128da36bb5aaa27f0dcd32b86fb5616684426 (patch)
treea372c94fed2009568d6f1deb709258a9f1e589a3
parent61cb4d52a6873a0af69bb8c9a295586f09b2c27a (diff)
downloadminetest-25d128da36bb5aaa27f0dcd32b86fb5616684426.tar.gz
minetest-25d128da36bb5aaa27f0dcd32b86fb5616684426.tar.bz2
minetest-25d128da36bb5aaa27f0dcd32b86fb5616684426.zip
Revert "Add support for using arbitrary meshes as items"
This reverts commit 91bafceee6606fab79db1bde4cba01b84fed65c7. Reverted due to missinterpretation of agreement, obvious dislike and me not interested in doing fights for feature I don't actually need
-rw-r--r--src/content_cao.cpp61
-rw-r--r--src/itemdef.cpp110
-rw-r--r--src/itemdef.h9
-rw-r--r--src/script/common/c_content.cpp2
-rw-r--r--src/wieldmesh.cpp14
5 files changed, 10 insertions, 186 deletions
diff --git a/src/content_cao.cpp b/src/content_cao.cpp
index bde0dd320..1b8e84c8f 100644
--- a/src/content_cao.cpp
+++ b/src/content_cao.cpp
@@ -954,43 +954,15 @@ void GenericCAO::addToScene(scene::ISceneManager *smgr, ITextureSource *tsrc,
IItemDefManager *idef = m_gamedef->idef();
ItemStack item(m_prop.textures[0], 1, 0, "", idef);
- if (!item.getDefinition(idef).meshname.empty())
- {
- scene::IAnimatedMesh *mesh = m_gamedef->getMesh(item.getDefinition(idef).meshname);
- if(mesh)
- {
- m_animated_meshnode = smgr->addAnimatedMeshSceneNode(mesh, NULL);
-
- m_animated_meshnode->grab();
- mesh->drop(); // The scene node took hold of it
- m_animated_meshnode->animateJoints(); // Needed for some animations
- m_animated_meshnode->setScale(v3f(m_prop.visual_size.X,
- m_prop.visual_size.Y,
- m_prop.visual_size.X));
- u8 li = m_last_light;
- setMeshColor(m_animated_meshnode->getMesh(), video::SColor(255,li,li,li));
-
- bool backface_culling = m_prop.backface_culling;
- if (m_is_player)
- backface_culling = false;
-
- m_animated_meshnode->setMaterialFlag(video::EMF_LIGHTING, false);
- m_animated_meshnode->setMaterialFlag(video::EMF_BILINEAR_FILTER, false);
- m_animated_meshnode->setMaterialType(video::EMT_TRANSPARENT_ALPHA_CHANNEL_REF);
- m_animated_meshnode->setMaterialFlag(video::EMF_FOG_ENABLE, true);
- m_animated_meshnode->setMaterialFlag(video::EMF_BACK_FACE_CULLING, backface_culling);
- }
- }
- else {
- m_wield_meshnode = new WieldMeshSceneNode(
- smgr->getRootSceneNode(), smgr, -1);
- m_wield_meshnode->setItem(item, m_gamedef);
- m_wield_meshnode->setScale(v3f(m_prop.visual_size.X/2,
- m_prop.visual_size.Y/2,
- m_prop.visual_size.X/2));
- u8 li = m_last_light;
- m_wield_meshnode->setColor(video::SColor(255,li,li,li));
- }
+ m_wield_meshnode = new WieldMeshSceneNode(
+ smgr->getRootSceneNode(), smgr, -1);
+ m_wield_meshnode->setItem(item, m_gamedef);
+
+ m_wield_meshnode->setScale(v3f(m_prop.visual_size.X/2,
+ m_prop.visual_size.Y/2,
+ m_prop.visual_size.X/2));
+ u8 li = m_last_light;
+ m_wield_meshnode->setColor(video::SColor(255,li,li,li));
}
} else {
infostream<<"GenericCAO::addToScene(): \""<<m_prop.visual
@@ -1430,21 +1402,6 @@ void GenericCAO::updateTextures(const std::string &mod)
m_animated_meshnode->getMaterial(i).SpecularColor = m_prop.colors[i];
}
}
- else if (m_prop.visual == "wielditem") {
- IItemDefManager *idef = m_gamedef->idef();
- ItemStack item(m_prop.textures[0], 1, 0, "", idef);
-
- if (!item.getDefinition(idef).meshname.empty()) {
-
- unsigned int materialcount = m_animated_meshnode->getMaterialCount();
-
- for (unsigned int i = 0; i < materialcount; i++) {
- m_animated_meshnode->getMaterial(i)
- .setTexture(0, tsrc->getTexture(item
- .getDefinition(idef).meshtexture));
- }
- }
- }
}
if(m_meshnode)
{
diff --git a/src/itemdef.cpp b/src/itemdef.cpp
index e37f10d61..fa277f4ff 100644
--- a/src/itemdef.cpp
+++ b/src/itemdef.cpp
@@ -77,8 +77,6 @@ ItemDefinition& ItemDefinition::operator=(const ItemDefinition &def)
sound_place = def.sound_place;
sound_place_failed = def.sound_place_failed;
range = def.range;
- meshname = def.meshname;
- meshtexture = def.meshtexture;
return *this;
}
@@ -159,10 +157,6 @@ void ItemDefinition::serialize(std::ostream &os, u16 protocol_version) const
os << serializeString(sound_place_failed.name);
writeF1000(os, sound_place_failed.gain);
}
-
- //TODO check for protocol version?
- os<<serializeString(meshname);
- os<<serializeString(meshtexture);
}
void ItemDefinition::deSerialize(std::istream &is)
@@ -220,10 +214,6 @@ void ItemDefinition::deSerialize(std::istream &is)
sound_place_failed.name = deSerializeString(is);
sound_place_failed.gain = readF1000(is);
} catch(SerializationError &e) {};
-
- //TODO check for protocol?
- meshname = deSerializeString(is);
- meshtexture = deSerializeString(is);
}
/*
@@ -351,7 +341,7 @@ CItemDefManager::ClientCached* CItemDefManager::createClientCachedDirect(const s
// Create an inventory texture
cc->inventory_texture = NULL;
- if (!def.inventory_image.empty())
+ if (def.inventory_image != "")
cc->inventory_texture = tsrc->getTexture(def.inventory_image);
// Additional processing for nodes:
@@ -362,10 +352,6 @@ CItemDefManager::ClientCached* CItemDefManager::createClientCachedDirect(const s
if (def.type == ITEM_NODE) {
createNodeItemTexture(name, def, nodedef, cc, gamedef, tsrc);
}
- else if (def.type == ITEM_CRAFT) {
- if ( !def.meshname.empty())
- createMeshItemTexture(name, def, nodedef, cc, gamedef, tsrc);
- }
// Put in cache
m_clientcached.set(name, cc);
@@ -664,100 +650,6 @@ void CItemDefManager::createNodeItemTexture(const std::string& name,
if (node_mesh)
node_mesh->drop();
}
-
-/******************************************************************************/
-void CItemDefManager::renderMeshToTexture(const ItemDefinition& def, scene::IMesh* mesh,
- ClientCached* cc, ITextureSource* tsrc) const
-{
- video::ITexture *itemimage = cc->inventory_texture;
-
- /*
- Draw node mesh into a render target texture
- */
- TextureFromMeshParams params;
- params.mesh = mesh;
- params.dim.set(64, 64);
- params.rtt_texture_name = "INVENTORY_" + def.name + "_RTT";
- params.delete_texture_on_shutdown = true;
- params.camera_position.set(0, 1.0, -1.5);
- params.camera_position.rotateXZBy(45);
- params.camera_lookat.set(0, 0, 0);
- // Set orthogonal projection
- params.camera_projection_matrix.buildProjectionMatrixOrthoLH(1.65, 1.65, 0,
- 100);
- params.ambient_light.set(1.0, 0.9, 0.9, 0.9);
- params.light_position.set(10, 100, -50);
- params.light_color.set(1.0, 0.5, 0.5, 0.5);
- params.light_radius = 1000;
- cc->inventory_texture = tsrc->generateTextureFromMesh(params);
-
- // render-to-target didn't work
- if (cc->inventory_texture == NULL) {
-
- cc->inventory_texture = itemimage;
- }
-}
-
-/******************************************************************************/
-void CItemDefManager::createMeshItemTexture(const std::string& name,
- const ItemDefinition& def, INodeDefManager* nodedef,
- ClientCached* cc, IGameDef* gamedef, ITextureSource* tsrc) const
-{
- // Get node properties
- content_t id = nodedef->getId(name);
- const ContentFeatures& f = nodedef->get(id);
-
- if (def.meshname == "")
- return;
-
- video::ITexture *texture = tsrc->getTexture(def.meshtexture);
-
- infostream<<"CItemDefManager::createMeshItemTexture(): mesh"<<std::endl;
-
- scene::IAnimatedMesh *mesh = gamedef->getMesh(def.meshname);
- if(mesh)
- {
-
- video::SColor c(255, 255, 255, 255);
- setMeshColor(mesh, c);
-
- rotateMeshXZby(mesh, 180);
-
- // scale and translate the mesh so it's a
- // unit cube centered on the origin
- scaleMesh(mesh, v3f(1.0 / BS, 1.0 / BS, 1.0 / BS));
-
- // Customize materials
- for (u32 i = 0; i < mesh->getMeshBufferCount(); ++i) {
-
- video::SMaterial &material = mesh->getMeshBuffer(i)->getMaterial();
- material.setTexture(0, texture);
- material.setFlag(video::EMF_BACK_FACE_CULLING, true);
- material.setFlag(video::EMF_BILINEAR_FILTER, false);
- material.MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL_REF;
- }
-
- /*
- Draw node mesh into a render target texture
- */
- renderMeshToTexture(def, mesh, cc, tsrc);
-
- /*
- Use the ingot mesh as the wield mesh
- */
-
- cc->wield_mesh = mesh;
- cc->wield_mesh->grab();
- // no way reference count can be smaller than 2 in this place!
- assert(cc->wield_mesh->getReferenceCount() >= 2);
-
- if (mesh)
- mesh->drop();
-
- }
- else
- errorstream<<"CItemDefManager::createMeshItemTexture(): Could not load mesh "<<def.meshname<<std::endl;
-}
#endif
/******************************************************************************/
diff --git a/src/itemdef.h b/src/itemdef.h
index 74c6d0b3e..fb157705f 100644
--- a/src/itemdef.h
+++ b/src/itemdef.h
@@ -66,8 +66,6 @@ struct ItemDefinition
std::string inventory_image; // Optional for nodes, mandatory for tools/craftitems
std::string wield_image; // If empty, inventory_image or mesh (only nodes) is used
v3f wield_scale;
- std::string meshname; // name of internal mesh (or meshfile to use TBD)
- std::string meshtexture; // meshtexture
/*
Item stack and interaction properties
@@ -213,13 +211,6 @@ private:
const ItemDefinition& def, INodeDefManager* nodedef,
ClientCached* cc, IGameDef* gamedef, ITextureSource* tsrc) const;
- void createMeshItemTexture(const std::string& name,
- const ItemDefinition& def, INodeDefManager* nodedef,
- ClientCached* cc, IGameDef* gamedef, ITextureSource* tsrc) const;
-
- void renderMeshToTexture(const ItemDefinition& def, scene::IMesh* mesh,
- ClientCached* cc, ITextureSource* tsrc) const;
-
ClientCached* createClientCachedDirect(const std::string &name,
IGameDef *gamedef) const;
diff --git a/src/script/common/c_content.cpp b/src/script/common/c_content.cpp
index 78f3c943f..36a5c2ddd 100644
--- a/src/script/common/c_content.cpp
+++ b/src/script/common/c_content.cpp
@@ -58,8 +58,6 @@ ItemDefinition read_item_definition(lua_State* L,int index,
getstringfield(L, index, "description", def.description);
getstringfield(L, index, "inventory_image", def.inventory_image);
getstringfield(L, index, "wield_image", def.wield_image);
- getstringfield(L, index, "mesh", def.meshname);
- getstringfield(L, index, "meshtexture", def.meshtexture);
lua_getfield(L, index, "wield_scale");
if(lua_istable(L, -1)){
diff --git a/src/wieldmesh.cpp b/src/wieldmesh.cpp
index 77a5cf73a..a022754a6 100644
--- a/src/wieldmesh.cpp
+++ b/src/wieldmesh.cpp
@@ -386,20 +386,6 @@ 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;