Fix cullface calculation for model-faces, fixes #347

This commit is contained in:
Lukas Rieger (Blue) 2022-10-13 19:29:08 +02:00
parent c9b88ed6d7
commit 550b52d503
No known key found for this signature in database
GPG Key ID: 2D09EC5ED2687FF2
2 changed files with 22 additions and 3 deletions

View File

@ -39,7 +39,7 @@ public class Element {
}
private void init() {
faces.forEach((direction, face) -> face.init(direction, this::calculateDefaultUV));
faces.forEach((direction, face) -> face.init(direction, this::calculateDefaultUV, this::calculateDefaultCullface));
}
private Vector4f calculateDefaultUV(Direction face) {
@ -75,6 +75,25 @@ public class Element {
}
}
private Direction calculateDefaultCullface(Direction face) {
switch (face) {
case DOWN:
return from.getY() == 0f ? Direction.DOWN : null;
case UP:
return to.getY() == 1f ? Direction.UP : null;
case NORTH:
return from.getZ() == 0f ? Direction.NORTH : null;
case SOUTH:
return to.getZ() == 1f ? Direction.SOUTH : null;
case EAST:
return to.getX() == 1f ? Direction.EAST : null;
case WEST:
return from.getX() == 0f ? Direction.WEST : null;
default:
return null;
}
}
public Vector3f getFrom() {
return from;
}

View File

@ -30,8 +30,8 @@ public class Face {
this.tintindex = copyFrom.tintindex;
}
void init(Direction direction, Function<Direction, Vector4f> defaultUvCalculator) {
if (cullface == null) cullface = direction;
void init(Direction direction, Function<Direction, Vector4f> defaultUvCalculator, Function<Direction, Direction> defaultCullfaceCalculator) {
if (cullface == null) cullface = defaultCullfaceCalculator.apply(direction);
if (uv == null) uv = defaultUvCalculator.apply(direction);
}