mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
added drawallfaces to luaentities
This commit is contained in:
parent
77df09540c
commit
0947644729
3 changed files with 63 additions and 2 deletions
|
@ -1815,6 +1815,15 @@ public:
|
|||
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 if(m_prop->visual == "cube_allfaces"){
|
||||
infostream<<"LuaEntityCAO::addToScene(): cube_allfaces"<<std::endl;
|
||||
scene::IMesh *mesh = createCubeMesh(v3f(BS,BS,BS),true);
|
||||
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);
|
||||
|
|
54
src/mesh.cpp
54
src/mesh.cpp
|
@ -33,7 +33,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
#define MY_ETLM_READ_ONLY video::ETLM_READ_ONLY
|
||||
#endif
|
||||
|
||||
scene::IAnimatedMesh* createCubeMesh(v3f scale)
|
||||
scene::IAnimatedMesh* createCubeMesh(v3f scale,bool allfaces)
|
||||
{
|
||||
video::SColor c(255,255,255,255);
|
||||
video::S3DVertex vertices[24] =
|
||||
|
@ -86,6 +86,58 @@ scene::IAnimatedMesh* createCubeMesh(v3f scale)
|
|||
buf->drop();
|
||||
}
|
||||
|
||||
if (allfaces) {
|
||||
video::S3DVertex vertices[24] =
|
||||
{
|
||||
// Up
|
||||
video::S3DVertex(-0.5,-0.5,-0.5, 0,1,0, c, 0,1),
|
||||
video::S3DVertex(-0.5,-0.5,+0.5, 0,1,0, c, 0,0),
|
||||
video::S3DVertex(+0.5,-0.5,+0.5, 0,1,0, c, 1,0),
|
||||
video::S3DVertex(+0.5,-0.5,-0.5, 0,1,0, c, 1,1),
|
||||
// Down
|
||||
video::S3DVertex(-0.5,+0.5,-0.5, 0,-1,0, c, 0,0),
|
||||
video::S3DVertex(+0.5,+0.5,-0.5, 0,-1,0, c, 1,0),
|
||||
video::S3DVertex(+0.5,+0.5,+0.5, 0,-1,0, c, 1,1),
|
||||
video::S3DVertex(-0.5,+0.5,+0.5, 0,-1,0, c, 0,1),
|
||||
// Right
|
||||
video::S3DVertex(-0.5,-0.5,-0.5, 1,0,0, c, 0,1),
|
||||
video::S3DVertex(-0.5,+0.5,-0.5, 1,0,0, c, 0,0),
|
||||
video::S3DVertex(-0.5,+0.5,+0.5, 1,0,0, c, 1,0),
|
||||
video::S3DVertex(-0.5,-0.5,+0.5, 1,0,0, c, 1,1),
|
||||
// Left
|
||||
video::S3DVertex(+0.5,-0.5,-0.5, -1,0,0, c, 1,1),
|
||||
video::S3DVertex(+0.5,-0.5,+0.5, -1,0,0, c, 0,1),
|
||||
video::S3DVertex(+0.5,+0.5,+0.5, -1,0,0, c, 0,0),
|
||||
video::S3DVertex(+0.5,+0.5,-0.5, -1,0,0, c, 1,0),
|
||||
// Back
|
||||
video::S3DVertex(-0.5,-0.5,-0.5, 0,0,1, c, 1,1),
|
||||
video::S3DVertex(+0.5,-0.5,-0.5, 0,0,1, c, 0,1),
|
||||
video::S3DVertex(+0.5,+0.5,-0.5, 0,0,1, c, 0,0),
|
||||
video::S3DVertex(-0.5,+0.5,-0.5, 0,0,1, c, 1,0),
|
||||
// Front
|
||||
video::S3DVertex(-0.5,-0.5,+0.5, 0,0,-1, c, 0,1),
|
||||
video::S3DVertex(-0.5,+0.5,+0.5, 0,0,-1, c, 0,0),
|
||||
video::S3DVertex(+0.5,+0.5,+0.5, 0,0,-1, c, 1,0),
|
||||
video::S3DVertex(+0.5,-0.5,+0.5, 0,0,-1, c, 1,1),
|
||||
};
|
||||
|
||||
u16 indices[6] = {0,1,2,2,3,0};
|
||||
|
||||
for (u32 i=0; i<6; ++i)
|
||||
{
|
||||
scene::IMeshBuffer *buf = new scene::SMeshBuffer();
|
||||
buf->append(vertices + 4 * i, 4, indices, 6);
|
||||
// Set default material
|
||||
buf->getMaterial().setFlag(video::EMF_LIGHTING, false);
|
||||
buf->getMaterial().setFlag(video::EMF_BILINEAR_FILTER, false);
|
||||
buf->getMaterial().MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL_REF;
|
||||
// Add mesh buffer to mesh
|
||||
mesh->addMeshBuffer(buf);
|
||||
buf->drop();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
scene::SAnimatedMesh *anim_mesh = new scene::SAnimatedMesh(mesh);
|
||||
mesh->drop();
|
||||
scaleMesh(anim_mesh, scale); // also recalculates bounding box
|
||||
|
|
|
@ -30,7 +30,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
The resulting mesh has 6 materials (up, down, right, left, back, front)
|
||||
which must be defined by the caller.
|
||||
*/
|
||||
scene::IAnimatedMesh* createCubeMesh(v3f scale);
|
||||
scene::IAnimatedMesh* createCubeMesh(v3f scale, bool allfaces=false);
|
||||
|
||||
/*
|
||||
Create a new cube mesh not linked to mapnode size.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue