Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --- celeron55-minetest-6957930.orig/src/content_cao.cpp 2011-12-24 05:38:29.000000000 +0100
- +++ celeron55-minetest-6957930/src/content_cao.cpp 2011-12-24 14:07:21.000000000 +0100
- @@ -1816,6 +1816,17 @@
- // Will be shown when we know the brightness
- m_meshnode->setVisible(false);
- }
- + else if (m_prop->visual == "plant") {
- + infostream<<"LuaEntityCAO::addToScene(): plant"<<std::endl;
- +
- + scene::IMesh *mesh = createPlantMesh(v3f(BS,BS,BS));
- + m_meshnode = smgr->addMeshSceneNode(mesh, NULL);
- + mesh->drop();
- +
- + m_meshnode->setScale(v3f(1));
- + // Will be shown when we know the brightness
- + m_meshnode->setVisible(false);
- + }
- else {
- infostream<<"LuaEntityCAO::addToScene(): \""<<m_prop->visual
- <<"\" not supported"<<std::endl;
- @@ -1968,28 +1979,55 @@
- tsrc->getTextureRaw(texturestring));
- }
- if(m_meshnode){
- - for (u32 i = 0; i < 6; ++i)
- - {
- - std::string texturestring = "unknown_block.png";
- - if(m_prop->textures.size() > i)
- - texturestring = m_prop->textures[i];
- - texturestring += mod;
- - AtlasPointer ap = tsrc->getTexture(texturestring);
- -
- - // Get the tile texture and atlas transformation
- - video::ITexture* atlas = ap.atlas;
- - v2f pos = ap.pos;
- - v2f size = ap.size;
- -
- - // Set material flags and texture
- - video::SMaterial& material = m_meshnode->getMaterial(i);
- - material.setFlag(video::EMF_LIGHTING, false);
- - material.setFlag(video::EMF_BILINEAR_FILTER, false);
- - material.setTexture(0, atlas);
- - material.getTextureMatrix(0).setTextureTranslate(pos.X, pos.Y);
- - material.getTextureMatrix(0).setTextureScale(size.X, size.Y);
- - material.MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL;
- + if (m_prop->visual == "plant") {
- + for (u32 i = 0; i < 4; ++i)
- + {
- + std::string texturestring = "unknown_block.png";
- + if(m_prop->textures.size() > 0)
- + texturestring = m_prop->textures[0];
- + texturestring += mod;
- + AtlasPointer ap = tsrc->getTexture(texturestring);
- +
- + // Get the tile texture and atlas transformation
- + video::ITexture* atlas = ap.atlas;
- + v2f pos = ap.pos;
- + v2f size = ap.size;
- +
- + // Set material flags and texture
- + video::SMaterial& material = m_meshnode->getMaterial(i);
- + material.setFlag(video::EMF_LIGHTING, false);
- + material.setFlag(video::EMF_BILINEAR_FILTER, false);
- + material.setTexture(0, atlas);
- + material.getTextureMatrix(0).setTextureTranslate(pos.X, pos.Y);
- + material.getTextureMatrix(0).setTextureScale(size.X, size.Y);
- + material.MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL;
- + }
- }
- + else {
- + for (u32 i = 0; i < 6; ++i)
- + {
- + std::string texturestring = "unknown_block.png";
- + if(m_prop->textures.size() > i)
- + texturestring = m_prop->textures[i];
- + texturestring += mod;
- + AtlasPointer ap = tsrc->getTexture(texturestring);
- +
- + // Get the tile texture and atlas transformation
- + video::ITexture* atlas = ap.atlas;
- + v2f pos = ap.pos;
- + v2f size = ap.size;
- +
- + // Set material flags and texture
- + video::SMaterial& material = m_meshnode->getMaterial(i);
- + material.setFlag(video::EMF_LIGHTING, false);
- + material.setFlag(video::EMF_BILINEAR_FILTER, false);
- + material.setTexture(0, atlas);
- + material.getTextureMatrix(0).setTextureTranslate(pos.X, pos.Y);
- + material.getTextureMatrix(0).setTextureScale(size.X, size.Y);
- + material.MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL;
- + }
- + }
- +
- }
- }
- --- celeron55-minetest-6957930.orig/src/mesh.h 2011-12-24 05:34:20.000000000 +0100
- +++ celeron55-minetest-6957930/src/mesh.h 2011-12-24 12:49:47.000000000 +0100
- @@ -40,6 +40,16 @@
- */
- scene::IAnimatedMesh* createCubeMesh(v3f scale,core::aabbox3d<f32> box);
- +
- +/*
- + Create a new cube mesh.
- + Vertices are at (+-scale.X/2, +-scale.Y/2, +-scale.Z/2).
- +
- + The resulting mesh has 6 materials (up, down, right, left, back, front)
- + which must be defined by the caller.
- +*/
- +scene::IAnimatedMesh* createPlantMesh(v3f scale);
- +
- /*
- Create a new extruded mesh from a texture.
- Maximum bounding box is (+-scale.X/2, +-scale.Y/2, +-scale.Z).
- --- celeron55-minetest-6957930.orig/src/mesh.cpp 2011-12-24 05:34:20.000000000 +0100
- +++ celeron55-minetest-6957930/src/mesh.cpp 2011-12-24 14:06:51.000000000 +0100
- @@ -82,6 +82,52 @@
- return anim_mesh;
- }
- +scene::IAnimatedMesh* createPlantMesh(v3f scale)
- +{
- + video::SColor c(255,255,255,255);
- + video::S3DVertex vertices[16] =
- + {
- + // Plane 1 Front
- + video::S3DVertex(-0.5,-0.5,-0.5, 0.5,0,-0.5, c, 0,1),
- + video::S3DVertex(-0.5,+0.5,-0.5, 0.5,0,-0.5, c, 0,0),
- + video::S3DVertex(+0.5,+0.5,+0.5, 0.5,0,-0.5, c, 1,0),
- + video::S3DVertex(+0.5,-0.5,+0.5, 0.5,0,-0.5, c, 1,1),
- + // Plane 1 Back
- + video::S3DVertex(+0.5,-0.5,+0.5, -0.5,0,0.5, c, 1,1),
- + video::S3DVertex(+0.5,+0.5,+0.5, -0.5,0,0.5, c, 1,0),
- + video::S3DVertex(-0.5,+0.5,-0.5, -0.5,0,0.5, c, 0,0),
- + video::S3DVertex(-0.5,-0.5,-0.5, -0.5,0,0.5, c, 0,1),
- +
- + // Plane 2 Front
- + video::S3DVertex(-0.5,-0.5,+0.5, -0.5,0,-0.5, c, 1,1),
- + video::S3DVertex(-0.5,+0.5,+0.5, -0.5,0,-0.5, c, 1,0),
- + video::S3DVertex(+0.5,+0.5,-0.5, -0.5,0,-0.5, c, 0,0),
- + video::S3DVertex(+0.5,-0.5,-0.5, -0.5,0,-0.5, c, 0,1),
- +
- + // Plane 2 Back
- + video::S3DVertex(+0.5,-0.5,-0.5, 0.5,0,0.5, c, 0,1),
- + video::S3DVertex(+0.5,+0.5,-0.5, 0.5,0,0.5, c, 0,0),
- + video::S3DVertex(-0.5,+0.5,+0.5, 0.5,0,0.5, c, 1,0),
- + video::S3DVertex(-0.5,-0.5,+0.5, 0.5,0,0.5, c, 1,1)
- +
- + };
- +
- + u16 indices[6] = {0,1,2,2,3,0};
- +
- + scene::SMesh *mesh = new scene::SMesh();
- + for (u32 i=0; i<4; ++i)
- + {
- + scene::IMeshBuffer *buf = new scene::SMeshBuffer();
- + buf->append(vertices + 4 * i, 4, indices, 6);
- + mesh->addMeshBuffer(buf);
- + buf->drop();
- + }
- + scene::SAnimatedMesh *anim_mesh = new scene::SAnimatedMesh(mesh);
- + mesh->drop();
- + scaleMesh(anim_mesh, scale); // also recalculates bounding box
- + return anim_mesh;
- +}
- +
- scene::IAnimatedMesh* createCubeMesh(v3f scale,core::aabbox3d<f32> box)
- {
- video::SColor c(255,255,255,255);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement