diff options
author | obneq <obneq@users.noreply.github.com> | 2016-08-12 19:11:56 +0200 |
---|---|---|
committer | paramat <mat.gregory@virginmedia.com> | 2016-08-18 20:45:18 +0100 |
commit | 7f4c6f32da3cd0c5f1367af63f084775131f2ecc (patch) | |
tree | 88589f2ded5887e2c546f27119f25350b08275b3 | |
parent | 5c0e659516857733d968707490b16bcf62f33c92 (diff) | |
download | minetest-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.
-rw-r--r-- | src/mapblock_mesh.cpp | 31 |
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; } } |