Advertisement
Guest User

BakedModelTest

a guest
Oct 11th, 2016
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.63 KB | None | 0 0
  1. public class BakedModelTest implements IBakedModel
  2. {
  3. private TextureAtlasSprite sprite;
  4. private VertexFormat format;
  5.  
  6. public BakedModelTest(VertexFormat format, Function<ResourceLocation, TextureAtlasSprite> bakedTextureGetter) {
  7. this.format = format;
  8. sprite = bakedTextureGetter.apply(new ResourceLocation(Reflibs.MOD_ID, "blocks/Blue"));
  9. }
  10.  
  11.  
  12. private void putVertex(UnpackedBakedQuad.Builder builder, Vec3d normal, double x, double y, double z, float u, float v) {
  13. for (int e = 0; e < format.getElementCount(); e++) {
  14. switch (format.getElement(e).getUsage()) {
  15. case POSITION:
  16. builder.put(e, (float)x, (float)y, (float)z, 1.0f);
  17. break;
  18. case COLOR:
  19. builder.put(e, 1.0f, 1.0f, 1.0f, 1.0f);
  20. break;
  21. case UV:
  22. if (format.getElement(e).getIndex() == 0) {
  23. u = sprite.getInterpolatedU(u);
  24. v = sprite.getInterpolatedV(v);
  25. builder.put(e, u, v, 0f, 1f);
  26. break;
  27. }
  28. case NORMAL:
  29. builder.put(e, (float) normal.xCoord, (float) normal.yCoord, (float) normal.zCoord, 0f);
  30. break;
  31. default:
  32. builder.put(e);
  33. break;
  34. }
  35. }
  36. }
  37.  
  38. private BakedQuad createQuad(Vec3d v1, Vec3d v2, Vec3d v3, Vec3d v4, TextureAtlasSprite sprite) {
  39. Vec3d normal = v1.subtract(v2).crossProduct(v3.subtract(v2));
  40.  
  41. UnpackedBakedQuad.Builder builder = new UnpackedBakedQuad.Builder(format);
  42. builder.setTexture(sprite);
  43. putVertex(builder, normal, v1.xCoord, v1.yCoord, v1.zCoord, 0, 0);
  44. putVertex(builder, normal, v2.xCoord, v2.yCoord, v2.zCoord, 0, 16);
  45. putVertex(builder, normal, v3.xCoord, v3.yCoord, v3.zCoord, 16, 16);
  46. putVertex(builder, normal, v4.xCoord, v4.yCoord, v4.zCoord, 16, 0);
  47. return builder.build();
  48. }
  49.  
  50. @Override
  51. public List<BakedQuad> getQuads(IBlockState state, EnumFacing side, long rand)
  52. {
  53. if (side != null)
  54. {
  55. return Collections.emptyList();
  56. }
  57.  
  58. List<BakedQuad> quads = new ArrayList<BakedQuad>();
  59.  
  60. quads.add(createQuad(new Vec3d(1.0D, 0.0D, 0.0D), new Vec3d(1.0D, 0.0D, 1.0D), new Vec3d(0.0D, 0.0D, 1.0D), new Vec3d(0.0D, 0.0D, 0.0D), this.sprite));
  61. quads.add(createQuad(new Vec3d(0.0D, 1.0D, 0.0D), new Vec3d(0.0D, 1.0D, 1.0D), new Vec3d(1.0D, 1.0D, 1.0D), new Vec3d(1.0D, 1.0D, 0.0D), this.sprite));
  62. quads.add(createQuad(new Vec3d(1.0D, 0.0D, 1.0D), new Vec3d(1.0D, 1.0D, 1.0D), new Vec3d(0.0D, 1.0D, 1.0D), new Vec3d(0.0D, 0.0D, 1.0D), this.sprite));
  63. quads.add(createQuad(new Vec3d(0.0D, 0.0D, 0.0D), new Vec3d(0.0D, 1.0D, 0.0D), new Vec3d(1.0D, 1.0D, 0.0D), new Vec3d(1.0D, 0.0D, 0.0D), this.sprite));
  64. quads.add(createQuad(new Vec3d(0.0D, 0.0D, 1.0D), new Vec3d(0.0D, 1.0D, 1.0D), new Vec3d(0.0D, 1.0D, 0.0D), new Vec3d(0.0D, 0.0D, 0.0D), this.sprite));
  65. quads.add(createQuad(new Vec3d(1.0D, 0.0D, 0.0D), new Vec3d(1.0D, 1.0D, 0.0D), new Vec3d(1.0D, 1.0D, 1.0D), new Vec3d(1.0D, 0.0D, 1.0D), this.sprite));
  66.  
  67. return quads;
  68. }
  69.  
  70. @Override
  71. public ItemOverrideList getOverrides() {
  72. return null;
  73. }
  74.  
  75. @Override
  76. public boolean isAmbientOcclusion() {
  77. return false;
  78. }
  79.  
  80. @Override
  81. public boolean isGui3d() {
  82. return false;
  83. }
  84.  
  85. @Override
  86. public boolean isBuiltInRenderer() {
  87. return false;
  88. }
  89.  
  90. @Override
  91. public TextureAtlasSprite getParticleTexture() {
  92. return sprite;
  93. }
  94.  
  95. @Override
  96. public ItemCameraTransforms getItemCameraTransforms() {
  97. return ItemCameraTransforms.DEFAULT;
  98. }
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement