Improve code in mapblock_mesh.cpp a bit

master
sfan5 2022-05-09 19:28:27 +02:00
parent ed26ed5a1f
commit 5d26ac0088
1 changed files with 12 additions and 20 deletions

View File

@ -1349,30 +1349,22 @@ MapBlockMesh::MapBlockMesh(MeshMakeData *data, v3s16 camera_offset):
scene::SMeshBuffer *buf = new scene::SMeshBuffer(); scene::SMeshBuffer *buf = new scene::SMeshBuffer();
buf->Material = material; buf->Material = material;
switch (p.layer.material_type) { if (p.layer.isTransparent()) {
// list of transparent materials taken from tile.h buf->append(&p.vertices[0], p.vertices.size(), nullptr, 0);
case TILE_MATERIAL_ALPHA:
case TILE_MATERIAL_LIQUID_TRANSPARENT:
case TILE_MATERIAL_WAVING_LIQUID_TRANSPARENT:
{
buf->append(&p.vertices[0], p.vertices.size(),
&p.indices[0], 0);
MeshTriangle t; MeshTriangle t;
t.buffer = buf; t.buffer = buf;
for (u32 i = 0; i < p.indices.size(); i += 3) { m_transparent_triangles.reserve(p.indices.size() / 3);
t.p1 = p.indices[i]; for (u32 i = 0; i < p.indices.size(); i += 3) {
t.p2 = p.indices[i + 1]; t.p1 = p.indices[i];
t.p3 = p.indices[i + 2]; t.p2 = p.indices[i + 1];
t.updateAttributes(); t.p3 = p.indices[i + 2];
m_transparent_triangles.push_back(t); t.updateAttributes();
} m_transparent_triangles.push_back(t);
} }
break; } else {
default:
buf->append(&p.vertices[0], p.vertices.size(), buf->append(&p.vertices[0], p.vertices.size(),
&p.indices[0], p.indices.size()); &p.indices[0], p.indices.size());
break;
} }
mesh->addMeshBuffer(buf); mesh->addMeshBuffer(buf);
buf->drop(); buf->drop();