aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorobneq <obneq@users.noreply.github.com>2016-08-12 19:11:56 +0200
committerparamat <mat.gregory@virginmedia.com>2016-08-18 20:45:18 +0100
commit7f4c6f32da3cd0c5f1367af63f084775131f2ecc (patch)
tree88589f2ded5887e2c546f27119f25350b08275b3 /src
parent5c0e659516857733d968707490b16bcf62f33c92 (diff)
downloadminetest-7f4c6f32da3cd0c5f1367af63f084775131f2ecc.tar.gz
minetest-7f4c6f32da3cd0c5f1367af63f084775131f2ecc.tar.bz2
minetest-7f4c6f32da3cd0c5f1367af63f084775131f2ecc.zip
Mapblock mesh: Fix updateFastFaceRow tiling issue
Increase maximum length of tiled node rows from 2 to mapblock size.
Diffstat (limited to 'src')
-rw-r--r--src/mapblock_mesh.cpp31
1 files changed, 13 insertions, 18 deletions
diff --git a/src/mapblock_mesh.cpp b/src/mapblock_mesh.cpp
index e1b044271..a11fb5887 100644
--- a/src/mapblock_mesh.cpp
+++ b/src/mapblock_mesh.cpp
@@ -839,7 +839,7 @@ static void updateFastFaceRow(
{
v3s16 p = startpos;
- u16 continuous_tiles_count = 0;
+ u16 continuous_tiles_count = 1;
bool makes_face = false;
v3s16 p_corrected;
@@ -889,8 +889,8 @@ static void updateFastFaceRow(
&& (tile.material_flags & MATERIAL_FLAG_TILEABLE_HORIZONTAL)
&& (tile.material_flags & MATERIAL_FLAG_TILEABLE_VERTICAL)) {
next_is_different = false;
- }
- else{
+ continuous_tiles_count++;
+ } else {
/*if(makes_face){
g_profiler->add("Meshgen: diff: next_makes_face != makes_face",
next_makes_face != makes_face ? 1 : 0);
@@ -915,8 +915,6 @@ static void updateFastFaceRow(
g_profiler->add("Meshgen: diff: last position", 1);*/
}
- continuous_tiles_count++;
-
if(next_is_different)
{
/*
@@ -928,8 +926,6 @@ static void updateFastFaceRow(
v3f pf(p_corrected.X, p_corrected.Y, p_corrected.Z);
// Center point of face (kind of)
v3f sp = pf - ((f32)continuous_tiles_count / 2.0 - 0.5) * translate_dir_f;
- if(continuous_tiles_count != 1)
- sp += translate_dir_f;
v3f scale(1,1,1);
if(translate_dir.X != 0) {
@@ -952,19 +948,18 @@ static void updateFastFaceRow(
}
}
- continuous_tiles_count = 0;
-
- makes_face = next_makes_face;
- p_corrected = next_p_corrected;
- face_dir_corrected = next_face_dir_corrected;
- lights[0] = next_lights[0];
- lights[1] = next_lights[1];
- lights[2] = next_lights[2];
- lights[3] = next_lights[3];
- tile = next_tile;
- light_source = next_light_source;
+ continuous_tiles_count = 1;
}
+ makes_face = next_makes_face;
+ p_corrected = next_p_corrected;
+ face_dir_corrected = next_face_dir_corrected;
+ lights[0] = next_lights[0];
+ lights[1] = next_lights[1];
+ lights[2] = next_lights[2];
+ lights[3] = next_lights[3];
+ tile = next_tile;
+ light_source = next_light_source;
p = p_next;
}
}