@@ -98,7 +98,7 @@ TileSpec MapblockMeshGenerator::getTile(const v3s16& direction)
98
98
99
99
void MapblockMeshGenerator::drawQuad (v3f *coords, const v3s16 &normal )
100
100
{
101
- static const v2f tcoords[4 ] = {v2f (0 , 1 ), v2f (1 , 1 ), v2f (1 , 0 ), v2f (0 , 0 )};
101
+ static const v2f tcoords[4 ] = {v2f (0 , 0 ), v2f (1 , 0 ), v2f (1 , 1 ), v2f (0 , 1 )};
102
102
video::S3DVertex vertices[4 ];
103
103
bool shade_face = !f->light_source && (normal != v3s16 (0 , 0 , 0 ));
104
104
v3f normal2 (normal .X , normal .Y , normal .Z );
@@ -631,22 +631,22 @@ void MapblockMeshGenerator::drawGlasslikeNode()
631
631
// Don't make face if neighbor is of same type
632
632
if (neighbor.getContent () == n.getContent ())
633
633
continue ;
634
+ // Face at Z-
634
635
v3f vertices[4 ] = {
635
- v3f (-BS / 2 , - BS / 2 , BS / 2 ),
636
- v3f ( BS / 2 , - BS / 2 , BS / 2 ),
637
- v3f ( BS / 2 , BS / 2 , BS / 2 ),
638
- v3f (-BS / 2 , BS / 2 , BS / 2 ),
636
+ v3f (-BS / 2 , BS / 2 , - BS / 2 ),
637
+ v3f ( BS / 2 , BS / 2 , - BS / 2 ),
638
+ v3f ( BS / 2 , - BS / 2 , - BS / 2 ),
639
+ v3f (-BS / 2 , - BS / 2 , - BS / 2 ),
639
640
};
640
641
for (int i = 0 ; i < 4 ; i++) {
641
- // Rotations in the g_6dirs format
642
642
switch (face) {
643
- case 0 : vertices[i].rotateXZBy ( 0 ); break ; // Z+
644
- case 1 : vertices[i].rotateYZBy (- 90 ); break ; // Y+
645
- case 2 : vertices[i].rotateXZBy (- 90 ); break ; // X+
646
- case 3 : vertices[i].rotateXZBy (180 ); break ; // Z-
647
- case 4 : vertices[i].rotateYZBy ( 90 ); break ; // Y-
648
- case 5 : vertices[i].rotateXZBy ( 90 ); break ; // X-
649
- };
643
+ case D6D_ZP : vertices[i].rotateXZBy (180 ); break ;
644
+ case D6D_YP : vertices[i].rotateYZBy ( 90 ); break ;
645
+ case D6D_XP : vertices[i].rotateXZBy ( 90 ); break ;
646
+ case D6D_ZN : vertices[i].rotateXZBy ( 0 ); break ;
647
+ case D6D_YN : vertices[i].rotateYZBy (- 90 ); break ;
648
+ case D6D_XN : vertices[i].rotateXZBy (- 90 ); break ;
649
+ }
650
650
}
651
651
drawQuad (vertices, dir);
652
652
}
@@ -797,10 +797,10 @@ void MapblockMeshGenerator::drawTorchlikeNode()
797
797
798
798
float size = BS / 2 * f->visual_scale ;
799
799
v3f vertices[4 ] = {
800
- v3f (-size, -size, 0 ),
801
- v3f ( size, -size, 0 ),
802
- v3f ( size, size, 0 ),
803
800
v3f (-size, size, 0 ),
801
+ v3f ( size, size, 0 ),
802
+ v3f ( size, -size, 0 ),
803
+ v3f (-size, -size, 0 ),
804
804
};
805
805
for (int i = 0 ; i < 4 ; i++) {
806
806
switch (wall) {
@@ -845,19 +845,19 @@ void MapblockMeshGenerator::drawPlantlikeQuad(float rotation, float quad_offset,
845
845
bool offset_top_only)
846
846
{
847
847
v3f vertices[4 ] = {
848
- v3f (-scale, -BS / 2 , 0 ),
849
- v3f ( scale, -BS / 2 , 0 ),
850
- v3f ( scale, -BS / 2 + scale * 2 , 0 ),
851
848
v3f (-scale, -BS / 2 + scale * 2 , 0 ),
849
+ v3f ( scale, -BS / 2 + scale * 2 , 0 ),
850
+ v3f ( scale, -BS / 2 , 0 ),
851
+ v3f (-scale, -BS / 2 , 0 ),
852
852
};
853
853
if (random_offset_Y) {
854
854
PseudoRandom yrng (face_num++ | p.X << 16 | p.Z << 8 | p.Y << 24 );
855
855
offset.Y = BS * ((yrng.next () % 16 / 16.0 ) * 0.125 );
856
856
}
857
- int offset_first_index = offset_top_only ? 2 : 0 ;
857
+ int offset_count = offset_top_only ? 2 : 4 ;
858
+ for (int i = 0 ; i < offset_count; i++)
859
+ vertices[i].Z += quad_offset;
858
860
for (int i = 0 ; i < 4 ; i++) {
859
- if (i >= offset_first_index)
860
- vertices[i].Z += quad_offset;
861
861
vertices[i].rotateXZBy (rotation + rotate_degree);
862
862
vertices[i] += offset;
863
863
}
@@ -933,10 +933,10 @@ void MapblockMeshGenerator::drawFirelikeQuad(float rotation, float opening_angle
933
933
float offset_h, float offset_v)
934
934
{
935
935
v3f vertices[4 ] = {
936
- v3f (-scale, -BS / 2 , 0 ),
937
- v3f ( scale, -BS / 2 , 0 ),
938
- v3f ( scale, -BS / 2 + scale * 2 , 0 ),
939
936
v3f (-scale, -BS / 2 + scale * 2 , 0 ),
937
+ v3f ( scale, -BS / 2 + scale * 2 , 0 ),
938
+ v3f ( scale, -BS / 2 , 0 ),
939
+ v3f (-scale, -BS / 2 , 0 ),
940
940
};
941
941
for (int i = 0 ; i < 4 ; i++) {
942
942
vertices[i].rotateYZBy (opening_angle);
@@ -1151,10 +1151,10 @@ void MapblockMeshGenerator::drawRaillikeNode()
1151
1151
static const float size = BS / 2 ;
1152
1152
float y2 = sloped ? size : -size;
1153
1153
v3f vertices[4 ] = {
1154
- v3f (-size, -size + offset, -size),
1155
- v3f ( size, -size + offset, -size),
1156
- v3f ( size, y2 + offset, size),
1157
1154
v3f (-size, y2 + offset, size),
1155
+ v3f ( size, y2 + offset, size),
1156
+ v3f ( size, -size + offset, -size),
1157
+ v3f (-size, -size + offset, -size),
1158
1158
};
1159
1159
if (angle)
1160
1160
for (int i = 0 ; i < 4 ; i++)
0 commit comments