Fixes #4657: Remove usage of an implementation class and just copy the needed values into arrays.

This commit is contained in:
Sebastian Hartte
2020-08-29 00:45:01 +02:00
parent b1a55f3a79
commit 87cf070b33
@@ -19,11 +19,8 @@
package appeng.thirdparty.codechicken.lib.model.pipeline.transformers; package appeng.thirdparty.codechicken.lib.model.pipeline.transformers;
import net.fabricmc.fabric.api.renderer.v1.mesh.MutableQuadView; import net.fabricmc.fabric.api.renderer.v1.mesh.MutableQuadView;
import net.fabricmc.fabric.api.renderer.v1.mesh.QuadEmitter;
import net.fabricmc.fabric.api.renderer.v1.mesh.QuadView; import net.fabricmc.fabric.api.renderer.v1.mesh.QuadView;
import net.fabricmc.fabric.api.renderer.v1.render.RenderContext; import net.fabricmc.fabric.api.renderer.v1.render.RenderContext;
import net.fabricmc.fabric.impl.client.indigo.renderer.mesh.EncodingFormat;
import net.fabricmc.fabric.impl.client.indigo.renderer.mesh.MutableQuadViewImpl;
import appeng.thirdparty.codechicken.lib.math.InterpHelper; import appeng.thirdparty.codechicken.lib.math.InterpHelper;
@@ -39,16 +36,11 @@ public class QuadReInterpolator implements RenderContext.QuadTransform {
private final InterpHelper interpHelper = new InterpHelper(); private final InterpHelper interpHelper = new InterpHelper();
private final MutableQuadViewImpl bufferQuad = new MutableQuadViewImpl() { private final int[] originalSpriteColor = new int[4];
{
data = new int[EncodingFormat.TOTAL_STRIDE];
}
@Override private final float[] originalSpriteU = new float[4];
public QuadEmitter emit() {
throw new UnsupportedOperationException(); private final float[] originalSpriteV = new float[4];
}
};
public QuadReInterpolator() { public QuadReInterpolator() {
super(); super();
@@ -63,7 +55,13 @@ public class QuadReInterpolator implements RenderContext.QuadTransform {
quad.posByIndex(1, xIdx), quad.posByIndex(1, yIdx), // quad.posByIndex(1, xIdx), quad.posByIndex(1, yIdx), //
quad.posByIndex(2, xIdx), quad.posByIndex(2, yIdx), // quad.posByIndex(2, xIdx), quad.posByIndex(2, yIdx), //
quad.posByIndex(3, xIdx), quad.posByIndex(3, yIdx)); quad.posByIndex(3, xIdx), quad.posByIndex(3, yIdx));
quad.copyTo(bufferQuad);
// Save the original properties of the quad's vertices
for (int i = 0; i < 4; i++) {
originalSpriteColor[i] = quad.spriteColor(i, 0);
originalSpriteU[i] = quad.spriteU(i, 0);
originalSpriteV[i] = quad.spriteV(i, 0);
}
} }
@Override @Override
@@ -89,10 +87,10 @@ public class QuadReInterpolator implements RenderContext.QuadTransform {
* reference. * reference.
*/ */
public void interpColorFrom(MutableQuadView quad, int vertexIndex) { public void interpColorFrom(MutableQuadView quad, int vertexIndex) {
int p1 = bufferQuad.spriteColor(0, 0); int p1 = this.originalSpriteColor[0];
int p2 = bufferQuad.spriteColor(1, 0); int p2 = this.originalSpriteColor[1];
int p3 = bufferQuad.spriteColor(2, 0); int p3 = this.originalSpriteColor[2];
int p4 = bufferQuad.spriteColor(3, 0); int p4 = this.originalSpriteColor[3];
if (p1 == p2 && p2 == p3 && p3 == p4) { if (p1 == p2 && p2 == p3 && p3 == p4) {
return; // Don't bother for uniformly colored quads return; // Don't bother for uniformly colored quads
} }
@@ -118,16 +116,16 @@ public class QuadReInterpolator implements RenderContext.QuadTransform {
* reference. * reference.
*/ */
public void interpUVFrom(MutableQuadView quad, int vertexIndex) { public void interpUVFrom(MutableQuadView quad, int vertexIndex) {
float p1 = bufferQuad.spriteU(0, 0); float p1 = originalSpriteU[0];
float p2 = bufferQuad.spriteU(1, 0); float p2 = originalSpriteU[1];
float p3 = bufferQuad.spriteU(2, 0); float p3 = originalSpriteU[2];
float p4 = bufferQuad.spriteU(3, 0); float p4 = originalSpriteU[3];
float u = interpHelper.interpolate(p1, p2, p3, p4); float u = interpHelper.interpolate(p1, p2, p3, p4);
p1 = bufferQuad.spriteV(0, 0); p1 = originalSpriteV[0];
p2 = bufferQuad.spriteV(1, 0); p2 = originalSpriteV[1];
p3 = bufferQuad.spriteV(2, 0); p3 = originalSpriteV[2];
p4 = bufferQuad.spriteV(3, 0); p4 = originalSpriteV[3];
float v = interpHelper.interpolate(p1, p2, p3, p4); float v = interpHelper.interpolate(p1, p2, p3, p4);
quad.sprite(vertexIndex, 0, u, v); quad.sprite(vertexIndex, 0, u, v);
} }