Fix crash when building BakedQuadBuilder
Add javadocs and move sprite to constructor where possible
This commit is contained in:
parent
7c99b756f9
commit
3096608d4a
6 changed files with 17 additions and 19 deletions
|
@ -364,10 +364,9 @@ public final class FluidModel implements IModelGeometry<FluidModel>
|
|||
|
||||
private BakedQuad buildQuad(Direction side, TextureAtlasSprite texture, boolean flip, boolean offset, VertexParameter x, VertexParameter y, VertexParameter z, VertexParameter u, VertexParameter v)
|
||||
{
|
||||
BakedQuadBuilder builder = new BakedQuadBuilder();
|
||||
BakedQuadBuilder builder = new BakedQuadBuilder(texture);
|
||||
|
||||
builder.setQuadOrientation(side);
|
||||
builder.setTexture(texture);
|
||||
builder.setQuadTint(0);
|
||||
|
||||
boolean hasTransform = !transformation.isIdentity();
|
||||
|
|
|
@ -378,11 +378,10 @@ public final class ItemLayerModel implements IModelGeometry<ItemLayerModel>
|
|||
float x2, float y2, float z2, float u2, float v2,
|
||||
float x3, float y3, float z3, float u3, float v3)
|
||||
{
|
||||
BakedQuadBuilder builder = new BakedQuadBuilder();
|
||||
BakedQuadBuilder builder = new BakedQuadBuilder(sprite);
|
||||
|
||||
builder.setQuadTint(tint);
|
||||
builder.setQuadOrientation(side);
|
||||
builder.setTexture(sprite);
|
||||
|
||||
boolean hasTransform = !transform.isIdentity();
|
||||
IVertexConsumer consumer = hasTransform ? new TRSRTransformer(builder, transform) : builder;
|
||||
|
|
|
@ -234,11 +234,10 @@ public final class ItemTextureQuadConverter
|
|||
float x1, float y1, float x2, float y2, float z,
|
||||
float u1, float v1, float u2, float v2)
|
||||
{
|
||||
BakedQuadBuilder builder = new BakedQuadBuilder();
|
||||
BakedQuadBuilder builder = new BakedQuadBuilder(sprite);
|
||||
|
||||
builder.setQuadTint(tint);
|
||||
builder.setQuadOrientation(side);
|
||||
builder.setTexture(sprite);
|
||||
|
||||
// only apply the transform if it's not identity
|
||||
boolean hasTransform = !transform.isIdentity();
|
||||
|
|
|
@ -711,16 +711,15 @@ public enum B3DLoader implements ISelectiveResourceReloadListener
|
|||
});
|
||||
for(Face f : faces)
|
||||
{
|
||||
BakedQuadBuilder quadBuilder = new BakedQuadBuilder();
|
||||
quadBuilder.setContractUVs(true);
|
||||
quadBuilder.setQuadOrientation(Direction.getFacingFromVector(f.getNormal().getX(), f.getNormal().getY(), f.getNormal().getZ()));
|
||||
List<Texture> textures = null;
|
||||
if(f.getBrush() != null) textures = f.getBrush().getTextures();
|
||||
TextureAtlasSprite sprite;
|
||||
if(textures == null || textures.isEmpty()) sprite = this.textures.get("missingno");
|
||||
else if(textures.get(0) == B3DModel.Texture.White) sprite = ModelLoader.White.instance();
|
||||
else sprite = this.textures.get(textures.get(0).getPath());
|
||||
quadBuilder.setTexture(sprite);
|
||||
BakedQuadBuilder quadBuilder = new BakedQuadBuilder(sprite);
|
||||
quadBuilder.setContractUVs(true);
|
||||
quadBuilder.setQuadOrientation(Direction.getFacingFromVector(f.getNormal().getX(), f.getNormal().getY(), f.getNormal().getZ()));
|
||||
putVertexData(quadBuilder, f.getV1(), f.getNormal(), sprite);
|
||||
putVertexData(quadBuilder, f.getV2(), f.getNormal(), sprite);
|
||||
putVertexData(quadBuilder, f.getV3(), f.getNormal(), sprite);
|
||||
|
|
|
@ -361,10 +361,9 @@ public class OBJModel implements IMultipartModelGeometry<OBJModel>
|
|||
Vector4f[] pos = new Vector4f[4];
|
||||
Vector3f[] norm = new Vector3f[4];
|
||||
|
||||
BakedQuadBuilder builder = new BakedQuadBuilder();
|
||||
BakedQuadBuilder builder = new BakedQuadBuilder(texture);
|
||||
|
||||
builder.setQuadTint(tintIndex);
|
||||
builder.setTexture(texture);
|
||||
builder.setApplyDiffuseLighting(!isFullbright);
|
||||
|
||||
int fakeLight = (int)((ambientColor.getX() + ambientColor.getY() + ambientColor.getZ()) * 15 / 3.0f);
|
||||
|
|
|
@ -28,13 +28,15 @@ import net.minecraft.client.renderer.vertex.VertexFormat;
|
|||
import net.minecraft.client.renderer.vertex.VertexFormatElement;
|
||||
import net.minecraft.util.Direction;
|
||||
|
||||
// advantages: non-fixed-length vertex format, no overhead of packing and unpacking attributes to transform the model
|
||||
// disadvantages: (possibly) larger memory footprint, overhead on packing the attributes at the final rendering stage
|
||||
/**
|
||||
* Allows easier building of BakedQuad objects. During building, data is stored
|
||||
* unpacked as floats, but is packed into the typical int array format on build.
|
||||
*/
|
||||
public class BakedQuadBuilder implements IVertexConsumer
|
||||
{
|
||||
private static final int SIZE = DefaultVertexFormats.BLOCK.func_227894_c_().size();
|
||||
|
||||
private final float[][][] unpackedData;
|
||||
private final float[][][] unpackedData = new float[4][SIZE][4];
|
||||
private int tint = -1;
|
||||
private Direction orientation;
|
||||
private TextureAtlasSprite texture;
|
||||
|
@ -45,9 +47,11 @@ public class BakedQuadBuilder implements IVertexConsumer
|
|||
private boolean full = false;
|
||||
private boolean contractUVs = false;
|
||||
|
||||
public BakedQuadBuilder()
|
||||
public BakedQuadBuilder() {}
|
||||
|
||||
public BakedQuadBuilder(TextureAtlasSprite texture)
|
||||
{
|
||||
unpackedData = new float[4][SIZE][4];
|
||||
this.texture = texture;
|
||||
}
|
||||
|
||||
public void setContractUVs(boolean value)
|
||||
|
@ -73,7 +77,6 @@ public class BakedQuadBuilder implements IVertexConsumer
|
|||
this.orientation = orientation;
|
||||
}
|
||||
|
||||
// FIXME: move (or at least add) into constructor
|
||||
@Override
|
||||
public void setTexture(TextureAtlasSprite texture)
|
||||
{
|
||||
|
@ -179,7 +182,7 @@ public class BakedQuadBuilder implements IVertexConsumer
|
|||
}
|
||||
}
|
||||
}
|
||||
int[] packed = new int[SIZE * 4];
|
||||
int[] packed = new int[DefaultVertexFormats.BLOCK.getIntegerSize() * 4];
|
||||
for (int v = 0; v < 4; v++)
|
||||
{
|
||||
for (int e = 0; e < SIZE; e++)
|
||||
|
|
Loading…
Reference in a new issue