transformNodeBox(): Rotate first by facedir

This commit is contained in:
Desour 2025-01-07 13:09:12 +01:00 committed by DS
parent 1e81c454c8
commit 966abc85da

View file

@ -187,122 +187,44 @@ void transformNodeBox(const MapNode &n, const NodeBox &nodebox,
if (nodebox.type == NODEBOX_LEVELED) if (nodebox.type == NODEBOX_LEVELED)
box.MaxEdge.Y = (-0.5f + n.getLevel(nodemgr) / 64.0f) * BS; box.MaxEdge.Y = (-0.5f + n.getLevel(nodemgr) / 64.0f) * BS;
switch (axisdir) { if(facedir == 1) {
case 0:
if(facedir == 1)
{
box.MinEdge.rotateXZBy(-90); box.MinEdge.rotateXZBy(-90);
box.MaxEdge.rotateXZBy(-90); box.MaxEdge.rotateXZBy(-90);
} } else if(facedir == 2) {
else if(facedir == 2)
{
box.MinEdge.rotateXZBy(180); box.MinEdge.rotateXZBy(180);
box.MaxEdge.rotateXZBy(180); box.MaxEdge.rotateXZBy(180);
} } else if(facedir == 3) {
else if(facedir == 3)
{
box.MinEdge.rotateXZBy(90); box.MinEdge.rotateXZBy(90);
box.MaxEdge.rotateXZBy(90); box.MaxEdge.rotateXZBy(90);
} }
switch (axisdir) {
case 0:
break; break;
case 1: // z+ case 1: // z+
box.MinEdge.rotateYZBy(90); box.MinEdge.rotateYZBy(90);
box.MaxEdge.rotateYZBy(90); box.MaxEdge.rotateYZBy(90);
if(facedir == 1)
{
box.MinEdge.rotateXYBy(90);
box.MaxEdge.rotateXYBy(90);
}
else if(facedir == 2)
{
box.MinEdge.rotateXYBy(180);
box.MaxEdge.rotateXYBy(180);
}
else if(facedir == 3)
{
box.MinEdge.rotateXYBy(-90);
box.MaxEdge.rotateXYBy(-90);
}
break; break;
case 2: //z- case 2: //z-
box.MinEdge.rotateYZBy(-90); box.MinEdge.rotateYZBy(-90);
box.MaxEdge.rotateYZBy(-90); box.MaxEdge.rotateYZBy(-90);
if(facedir == 1)
{
box.MinEdge.rotateXYBy(-90);
box.MaxEdge.rotateXYBy(-90);
}
else if(facedir == 2)
{
box.MinEdge.rotateXYBy(180);
box.MaxEdge.rotateXYBy(180);
}
else if(facedir == 3)
{
box.MinEdge.rotateXYBy(90);
box.MaxEdge.rotateXYBy(90);
}
break; break;
case 3: //x+ case 3: //x+
box.MinEdge.rotateXYBy(-90); box.MinEdge.rotateXYBy(-90);
box.MaxEdge.rotateXYBy(-90); box.MaxEdge.rotateXYBy(-90);
if(facedir == 1)
{
box.MinEdge.rotateYZBy(90);
box.MaxEdge.rotateYZBy(90);
}
else if(facedir == 2)
{
box.MinEdge.rotateYZBy(180);
box.MaxEdge.rotateYZBy(180);
}
else if(facedir == 3)
{
box.MinEdge.rotateYZBy(-90);
box.MaxEdge.rotateYZBy(-90);
}
break; break;
case 4: //x- case 4: //x-
box.MinEdge.rotateXYBy(90); box.MinEdge.rotateXYBy(90);
box.MaxEdge.rotateXYBy(90); box.MaxEdge.rotateXYBy(90);
if(facedir == 1)
{
box.MinEdge.rotateYZBy(-90);
box.MaxEdge.rotateYZBy(-90);
}
else if(facedir == 2)
{
box.MinEdge.rotateYZBy(180);
box.MaxEdge.rotateYZBy(180);
}
else if(facedir == 3)
{
box.MinEdge.rotateYZBy(90);
box.MaxEdge.rotateYZBy(90);
}
break; break;
case 5: case 5:
box.MinEdge.rotateXYBy(-180); box.MinEdge.rotateXYBy(-180);
box.MaxEdge.rotateXYBy(-180); box.MaxEdge.rotateXYBy(-180);
if(facedir == 1)
{
box.MinEdge.rotateXZBy(90);
box.MaxEdge.rotateXZBy(90);
}
else if(facedir == 2)
{
box.MinEdge.rotateXZBy(180);
box.MaxEdge.rotateXZBy(180);
}
else if(facedir == 3)
{
box.MinEdge.rotateXZBy(-90);
box.MaxEdge.rotateXZBy(-90);
}
break; break;
default: default:
break; break;
} }
box.repair(); box.repair();
boxes.push_back(box); boxes.push_back(box);
} }