Skip to content

Commit

Permalink
Fix farmesh
Browse files Browse the repository at this point in the history
  • Loading branch information
proller committed Dec 9, 2023
1 parent 21f540a commit de8c072
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 6 deletions.
18 changes: 14 additions & 4 deletions src/client/content_mapblock.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -421,7 +421,7 @@ void MapblockMeshGenerator::drawSolidNode()
u16 lights[6];
content_t n1 = cur_node.n.getContent();
for (int face = 0; face < 6; face++) {
v3s16 p2 = blockpos_nodes + cur_node.p + tile_dirs[face];
v3s16 p2 = blockpos_nodes + cur_node.p + tile_dirs[face] * data->step;
MapNode neighbor = data->m_vmanip.getNodeNoEx(p2);
content_t n2 = neighbor.getContent();
bool backface_culling = cur_node.f->drawtype == NDT_NORMAL;
Expand Down Expand Up @@ -456,6 +456,10 @@ void MapblockMeshGenerator::drawSolidNode()
u8 mask = faces ^ 0b0011'1111; // k-th bit is set if k-th face is to be *omitted*, as expected by cuboid drawing functions.
cur_node.origin = intToFloat(cur_node.p, BS);
auto box = aabb3f(v3f(-0.5 * BS), v3f(0.5 * BS));

box.MinEdge *= data->step;
box.MaxEdge *= data->step;

f32 texture_coord_buf[24];
box.MinEdge += cur_node.origin;
box.MaxEdge += cur_node.origin;
Expand Down Expand Up @@ -1703,6 +1707,12 @@ void MapblockMeshGenerator::drawNode()
default:
break;
}

if (data->step > 1) {
drawSolidNode();
return;
}

cur_node.origin = intToFloat(cur_node.p, BS);
if (data->m_smooth_lighting)
getSmoothLightFrame();
Expand All @@ -1728,9 +1738,9 @@ void MapblockMeshGenerator::drawNode()

void MapblockMeshGenerator::generate()
{
for (cur_node.p.Z = 0; cur_node.p.Z < data->side_length; cur_node.p.Z++)
for (cur_node.p.Y = 0; cur_node.p.Y < data->side_length; cur_node.p.Y++)
for (cur_node.p.X = 0; cur_node.p.X < data->side_length; cur_node.p.X++) {
for (cur_node.p.Z = 0; cur_node.p.Z < data->side_length_data; cur_node.p.Z+=data->step)
for (cur_node.p.Y = 0; cur_node.p.Y < data->side_length_data; cur_node.p.Y+=data->step)
for (cur_node.p.X = 0; cur_node.p.X < data->side_length_data; cur_node.p.X+=data->step) {
cur_node.n = data->m_vmanip.getNodeNoEx(blockpos_nodes + cur_node.p);
cur_node.f = &nodedef->get(cur_node.n);
drawNode();
Expand Down
6 changes: 4 additions & 2 deletions src/client/mapblock_mesh.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -362,7 +362,7 @@ static u16 getSmoothLightCombined(const v3s16 &p,
*/
u16 getSmoothLightSolid(const v3s16 &p, const v3s16 &face_dir, const v3s16 &corner, MeshMakeData *data)
{
return getSmoothLightTransparent(p + face_dir, corner - 2 * face_dir, data);
return getSmoothLightTransparent(p + face_dir * data->step, corner - 2 * face_dir, data);
}

/*
Expand Down Expand Up @@ -791,7 +791,7 @@ MapBlockMesh::MapBlockMesh(MeshMakeData *data, v3s16 camera_offset):
- whatever
*/

if(step <= 1)
//if(step <= 1)
{
MapblockMeshGenerator(data, &collector,
data->m_client->getSceneManager()->getMeshManipulator()).generate();
Expand Down Expand Up @@ -925,11 +925,13 @@ MapBlockMesh::MapBlockMesh(MeshMakeData *data, v3s16 camera_offset):

}

/* for old fastfaces
if (step > 1) {
translateMesh(m_mesh[layer], v3f(HBS, 0, HBS));
scaleMesh(m_mesh[layer], v3f(step, step, step));
translateMesh(m_mesh[layer], v3f(-HBS, -HBS*step + HBS + BS, -HBS));
}
*/

if (m_mesh[layer]) {
// Use VBO for mesh (this just would set this for ever buffer)
Expand Down

0 comments on commit de8c072

Please sign in to comment.