Mapblock mesh: Fix updateFastFaceRow tiling issue
authorobneq <obneq@users.noreply.github.com>
Fri, 12 Aug 2016 17:11:56 +0000 (19:11 +0200)
committerparamat <mat.gregory@virginmedia.com>
Thu, 18 Aug 2016 19:45:18 +0000 (20:45 +0100)
Increase maximum length of tiled node rows from 2 to mapblock size.

src/mapblock_mesh.cpp

index e1b044271cb4983ab0432e05525bd7bdb18110aa..a11fb5887b388dda225d47afdc1cf3fdf1281676 100644 (file)
@@ -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;
        }
 }