下面列出了net.minecraft.util.EnumFacing#toString ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public static EnumHeading fromFacing(EnumFacing facing){
if(facing == null) return null;
switch(facing){
case NORTH:
return EnumHeading.NORTH;
case SOUTH:
return EnumHeading.SOUTH;
case WEST:
return EnumHeading.WEST;
case EAST:
return EnumHeading.EAST;
default:
throw new IllegalArgumentException(facing.toString());
}
}
public TexCoords worldVecToTextureCoords(EnumFacing side, double x, double y, double z) {
final double wallX;
final double wallY;
final double h;
// positive h always points "outside" block
switch (side) {
case UP:
wallX = x;
wallY = z;
h = y - 1;
break;
case DOWN:
wallX = x;
wallY = z;
h = -y;
break;
case EAST:
wallX = z;
wallY = 1 - y;
h = x - 1;
break;
case WEST:
wallX = z;
wallY = 1 - y;
h = -x;
break;
case NORTH:
wallX = x;
wallY = 1 - y;
h = -z;
break;
case SOUTH:
wallX = x;
wallY = 1 - y;
h = z - 1;
break;
default:
throw new IllegalArgumentException(side.toString());
}
final Matrix2d transformation = transforms.get(side);
final double u = transformation.transformX(wallX - 0.5, wallY - 0.5) + 0.5;
final double v = transformation.transformY(wallX - 0.5, wallY - 0.5) + 0.5;
return new TexCoords(u, v, h);
}
public Vec3d textureCoordsToWorldVec(EnumFacing side, double u, double v, double h) {
final Matrix2d transformation = inverseTransforms.get(side);
if (transformation == null) throw new IllegalArgumentException(side.toString());
final double wallX = transformation.transformX(u - 0.5, v - 0.5) + 0.5;
final double wallY = transformation.transformY(u - 0.5, v - 0.5) + 0.5;
final double globalX;
final double globalY;
final double globalZ;
switch (side) {
case UP:
globalX = wallX;
globalY = h + 1;
globalZ = wallY;
break;
case DOWN:
globalX = wallX;
globalY = -h;
globalZ = wallY;
break;
case EAST:
globalX = h + 1;
globalY = 1 - wallY;
globalZ = wallX;
break;
case WEST:
globalX = -h;
globalY = 1 - wallY;
globalZ = wallX;
break;
case NORTH:
globalX = wallX;
globalY = 1 - wallY;
globalZ = -h;
break;
case SOUTH:
globalX = wallX;
globalY = 1 - wallY;
globalZ = h + 1;
break;
default:
throw new IllegalArgumentException(side.toString());
}
return new Vec3d(globalX, globalY, globalZ);
}