Skip to content

Commit 0850d3f

Browse files
committedJul 21, 2013
Fix light issue in 6d facedir.
1 parent 46d1d70 commit 0850d3f

File tree

1 file changed

+41
-3
lines changed

1 file changed

+41
-3
lines changed
 

‎src/mapblock_mesh.cpp

+41-3
Original file line numberDiff line numberDiff line change
@@ -448,7 +448,7 @@ static void makeFastFace(TileSpec tile, u16 li0, u16 li1, u16 li2, u16 li3,
448448
v3f p, v3s16 dir, v3f scale, u8 light_source, std::vector<FastFace> &dest)
449449
{
450450
FastFace face;
451-
451+
452452
// Position is at the center of the cube.
453453
v3f pos = p * BS;
454454

@@ -460,7 +460,9 @@ static void makeFastFace(TileSpec tile, u16 li0, u16 li1, u16 li2, u16 li3,
460460
v3f vertex_pos[4];
461461
v3s16 vertex_dirs[4];
462462
getNodeVertexDirs(dir, vertex_dirs);
463+
463464
v3s16 t;
465+
u16 t1;
464466
switch (tile.rotation)
465467
{
466468
case 0:
@@ -471,6 +473,11 @@ static void makeFastFace(TileSpec tile, u16 li0, u16 li1, u16 li2, u16 li3,
471473
vertex_dirs[3] = vertex_dirs[2];
472474
vertex_dirs[2] = vertex_dirs[1];
473475
vertex_dirs[1] = t;
476+
t1=li0;
477+
li0=li3;
478+
li3=li2;
479+
li2=li1;
480+
li1=t1;
474481
break;
475482
case 2: //R180
476483
t = vertex_dirs[0];
@@ -479,20 +486,36 @@ static void makeFastFace(TileSpec tile, u16 li0, u16 li1, u16 li2, u16 li3,
479486
t = vertex_dirs[1];
480487
vertex_dirs[1] = vertex_dirs[3];
481488
vertex_dirs[3] = t;
489+
t1 = li0;
490+
li0 = li2;
491+
li2 = t1;
492+
t1 = li1;
493+
li1 = li3;
494+
li3 = t1;
482495
break;
483496
case 3: //R270
484497
t = vertex_dirs[0];
485498
vertex_dirs[0] = vertex_dirs[1];
486499
vertex_dirs[1] = vertex_dirs[2];
487500
vertex_dirs[2] = vertex_dirs[3];
488501
vertex_dirs[3] = t;
502+
t1 = li0;
503+
li0 = li1;
504+
li1 = li2;
505+
li2 = li3;
506+
li3 = t1;
489507
break;
490508
case 4: //FXR90
491509
t = vertex_dirs[0];
492510
vertex_dirs[0] = vertex_dirs[3];
493511
vertex_dirs[3] = vertex_dirs[2];
494512
vertex_dirs[2] = vertex_dirs[1];
495513
vertex_dirs[1] = t;
514+
t1 = li0;
515+
li0 = li3;
516+
li3 = li2;
517+
li2 = li1;
518+
li1 = t1;
496519
y0 += h;
497520
h *= -1;
498521
break;
@@ -502,6 +525,11 @@ static void makeFastFace(TileSpec tile, u16 li0, u16 li1, u16 li2, u16 li3,
502525
vertex_dirs[1] = vertex_dirs[2];
503526
vertex_dirs[2] = vertex_dirs[3];
504527
vertex_dirs[3] = t;
528+
t1 = li0;
529+
li0 = li1;
530+
li1 = li2;
531+
li2 = li3;
532+
li3 = t1;
505533
y0 += h;
506534
h *= -1;
507535
break;
@@ -511,6 +539,11 @@ static void makeFastFace(TileSpec tile, u16 li0, u16 li1, u16 li2, u16 li3,
511539
vertex_dirs[3] = vertex_dirs[2];
512540
vertex_dirs[2] = vertex_dirs[1];
513541
vertex_dirs[1] = t;
542+
t1 = li0;
543+
li0 = li3;
544+
li3 = li2;
545+
li2 = li1;
546+
li1 = t1;
514547
x0 += w;
515548
w *= -1;
516549
break;
@@ -520,6 +553,11 @@ static void makeFastFace(TileSpec tile, u16 li0, u16 li1, u16 li2, u16 li3,
520553
vertex_dirs[1] = vertex_dirs[2];
521554
vertex_dirs[2] = vertex_dirs[3];
522555
vertex_dirs[3] = t;
556+
t1 = li0;
557+
li0 = li1;
558+
li1 = li2;
559+
li2 = li3;
560+
li3 = t1;
523561
x0 += w;
524562
w *= -1;
525563
break;
@@ -534,6 +572,7 @@ static void makeFastFace(TileSpec tile, u16 li0, u16 li1, u16 li2, u16 li3,
534572
default:
535573
break;
536574
}
575+
537576
for(u16 i=0; i<4; i++)
538577
{
539578
vertex_pos[i] = v3f(
@@ -551,7 +590,7 @@ static void makeFastFace(TileSpec tile, u16 li0, u16 li1, u16 li2, u16 li3,
551590
vertex_pos[i] += pos;
552591
}
553592

554-
f32 abs_scale = 1.;
593+
f32 abs_scale = 1.0;
555594
if (scale.X < 0.999 || scale.X > 1.001) abs_scale = scale.X;
556595
else if(scale.Y < 0.999 || scale.Y > 1.001) abs_scale = scale.Y;
557596
else if(scale.Z < 0.999 || scale.Z > 1.001) abs_scale = scale.Z;
@@ -574,7 +613,6 @@ static void makeFastFace(TileSpec tile, u16 li0, u16 li1, u16 li2, u16 li3,
574613
core::vector2d<f32>(x0+w*abs_scale, y0));
575614

576615
face.tile = tile;
577-
578616
dest.push_back(face);
579617
}
580618

0 commit comments

Comments
 (0)
Please sign in to comment.