Skip to content

Commit 813a9a3

Browse files
numberZeroparamat
authored andcommittedApr 1, 2017
Signlike, glasslike drawtypes: Fix inverted textures
1 parent 773efc1 commit 813a9a3

File tree

1 file changed

+28
-28
lines changed

1 file changed

+28
-28
lines changed
 

‎src/content_mapblock.cpp

+28-28
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ TileSpec MapblockMeshGenerator::getTile(const v3s16& direction)
9898

9999
void MapblockMeshGenerator::drawQuad(v3f *coords, const v3s16 &normal)
100100
{
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)};
102102
video::S3DVertex vertices[4];
103103
bool shade_face = !f->light_source && (normal != v3s16(0, 0, 0));
104104
v3f normal2(normal.X, normal.Y, normal.Z);
@@ -631,22 +631,22 @@ void MapblockMeshGenerator::drawGlasslikeNode()
631631
// Don't make face if neighbor is of same type
632632
if (neighbor.getContent() == n.getContent())
633633
continue;
634+
// Face at Z-
634635
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),
639640
};
640641
for (int i = 0; i < 4; i++) {
641-
// Rotations in the g_6dirs format
642642
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+
}
650650
}
651651
drawQuad(vertices, dir);
652652
}
@@ -797,10 +797,10 @@ void MapblockMeshGenerator::drawTorchlikeNode()
797797

798798
float size = BS / 2 * f->visual_scale;
799799
v3f vertices[4] = {
800-
v3f(-size, -size, 0),
801-
v3f( size, -size, 0),
802-
v3f( size, size, 0),
803800
v3f(-size, size, 0),
801+
v3f( size, size, 0),
802+
v3f( size, -size, 0),
803+
v3f(-size, -size, 0),
804804
};
805805
for (int i = 0; i < 4; i++) {
806806
switch (wall) {
@@ -845,19 +845,19 @@ void MapblockMeshGenerator::drawPlantlikeQuad(float rotation, float quad_offset,
845845
bool offset_top_only)
846846
{
847847
v3f vertices[4] = {
848-
v3f(-scale, -BS / 2, 0),
849-
v3f( scale, -BS / 2, 0),
850-
v3f( scale, -BS / 2 + scale * 2, 0),
851848
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),
852852
};
853853
if (random_offset_Y) {
854854
PseudoRandom yrng(face_num++ | p.X << 16 | p.Z << 8 | p.Y << 24);
855855
offset.Y = BS * ((yrng.next() % 16 / 16.0) * 0.125);
856856
}
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;
858860
for (int i = 0; i < 4; i++) {
859-
if (i >= offset_first_index)
860-
vertices[i].Z += quad_offset;
861861
vertices[i].rotateXZBy(rotation + rotate_degree);
862862
vertices[i] += offset;
863863
}
@@ -933,10 +933,10 @@ void MapblockMeshGenerator::drawFirelikeQuad(float rotation, float opening_angle
933933
float offset_h, float offset_v)
934934
{
935935
v3f vertices[4] = {
936-
v3f(-scale, -BS / 2, 0),
937-
v3f( scale, -BS / 2, 0),
938-
v3f( scale, -BS / 2 + scale * 2, 0),
939936
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),
940940
};
941941
for (int i = 0; i < 4; i++) {
942942
vertices[i].rotateYZBy(opening_angle);
@@ -1151,10 +1151,10 @@ void MapblockMeshGenerator::drawRaillikeNode()
11511151
static const float size = BS / 2;
11521152
float y2 = sloped ? size : -size;
11531153
v3f vertices[4] = {
1154-
v3f(-size, -size + offset, -size),
1155-
v3f( size, -size + offset, -size),
1156-
v3f( size, y2 + offset, size),
11571154
v3f(-size, y2 + offset, size),
1155+
v3f( size, y2 + offset, size),
1156+
v3f( size, -size + offset, -size),
1157+
v3f(-size, -size + offset, -size),
11581158
};
11591159
if (angle)
11601160
for (int i = 0; i < 4; i++)

0 commit comments

Comments
 (0)
Please sign in to comment.