Fix cullface calculation for model-faces, fixes #347
This commit is contained in:
parent
c9b88ed6d7
commit
550b52d503
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue