[gdx] Update TwoColorPolygonBatch to match latest libgdx changes.

This commit is contained in:
NathanSweet 2018-09-29 01:11:03 +02:00
parent b8ed13f219
commit 12338fa262

View File

@ -67,9 +67,13 @@ public class TwoColorPolygonBatch implements Batch {
private int blendDstFuncAlpha = GL20.GL_ONE_MINUS_SRC_ALPHA; private int blendDstFuncAlpha = GL20.GL_ONE_MINUS_SRC_ALPHA;
private boolean premultipliedAlpha; private boolean premultipliedAlpha;
private float light = Color.WHITE.toFloatBits(); private final Color light = new Color(1, 1, 1, 1);
private float dark = Color.BLACK.toFloatBits(); private final Color dark = new Color(0, 0, 0, 1);
private Color tempColor = new Color(1, 1, 1, 1); private float lightPacked = Color.WHITE.toFloatBits();
private float darkPacked = Color.BLACK.toFloatBits();
/** Number of rendering calls, ever. Will not be reset unless set manually. **/
public int totalRenderCalls = 0;
public TwoColorPolygonBatch () { public TwoColorPolygonBatch () {
this(2000); this(2000);
@ -122,61 +126,53 @@ public class TwoColorPolygonBatch implements Batch {
@Override @Override
public void setColor (Color tint) { public void setColor (Color tint) {
light = tint.toFloatBits(); light.set(tint);
lightPacked = tint.toFloatBits();
} }
@Override @Override
public void setColor (float r, float g, float b, float a) { public void setColor (float r, float g, float b, float a) {
int intBits = (int)(255 * a) << 24 | (int)(255 * b) << 16 | (int)(255 * g) << 8 | (int)(255 * r); light.set(r, g, b, a);
light = NumberUtils.intToFloatColor(intBits); lightPacked = light.toFloatBits();
} }
@Override @Override
public void setColor (float color) { public void setPackedColor (float packedColor) {
this.light = color; Color.rgba8888ToColor(light, NumberUtils.floatToIntColor(packedColor));
lightPacked = packedColor;
} }
@Override @Override
public Color getColor () { public Color getColor () {
int intBits = NumberUtils.floatToIntColor(light); return light;
Color color = this.tempColor;
color.r = (intBits & 0xff) / 255f;
color.g = ((intBits >>> 8) & 0xff) / 255f;
color.b = ((intBits >>> 16) & 0xff) / 255f;
color.a = ((intBits >>> 24) & 0xff) / 255f;
return color;
} }
@Override @Override
public float getPackedColor () { public float getPackedColor () {
return light; return lightPacked;
} }
public void setDarkColor (Color tint) { public void setDarkColor (Color tint) {
dark = tint.toFloatBits(); dark.set(tint);
darkPacked = tint.toFloatBits();
} }
public void setDarkColor (float r, float g, float b, float a) { public void setDarkColor (float r, float g, float b, float a) {
int intBits = (int)(255 * a) << 24 | (int)(255 * b) << 16 | (int)(255 * g) << 8 | (int)(255 * r); dark.set(r, g, b, a);
dark = NumberUtils.intToFloatColor(intBits); darkPacked = dark.toFloatBits();
} }
public void setDarkColor (float color) { public void setPackedDarkColor (float packedColor) {
this.dark = color; Color.rgba8888ToColor(dark, NumberUtils.floatToIntColor(packedColor));
this.darkPacked = packedColor;
} }
public Color getDarkColor () { public Color getDarkColor () {
int intBits = NumberUtils.floatToIntColor(dark); return dark;
Color color = this.tempColor;
color.r = (intBits & 0xff) / 255f;
color.g = ((intBits >>> 8) & 0xff) / 255f;
color.b = ((intBits >>> 16) & 0xff) / 255f;
color.a = ((intBits >>> 24) & 0xff) / 255f;
return color;
} }
public float getPackedDarkColor () { public float getPackedDarkColor () {
return dark; return darkPacked;
} }
/** Draws a polygon region with the bottom left corner at x,y having the width and height of the region. */ /** Draws a polygon region with the bottom left corner at x,y having the width and height of the region. */
@ -204,8 +200,8 @@ public class TwoColorPolygonBatch implements Batch {
this.triangleIndex = triangleIndex; this.triangleIndex = triangleIndex;
final float[] vertices = this.vertices; final float[] vertices = this.vertices;
final float light = this.light; final float light = this.lightPacked;
final float dark = this.dark; final float dark = this.darkPacked;
final float[] textureCoords = region.getTextureCoords(); final float[] textureCoords = region.getTextureCoords();
for (int i = 0; i < regionVerticesLength; i += 2) { for (int i = 0; i < regionVerticesLength; i += 2) {
@ -245,8 +241,8 @@ public class TwoColorPolygonBatch implements Batch {
this.triangleIndex = triangleIndex; this.triangleIndex = triangleIndex;
final float[] vertices = this.vertices; final float[] vertices = this.vertices;
final float light = this.light; final float light = this.lightPacked;
final float dark = this.dark; final float dark = this.darkPacked;
final float[] textureCoords = region.getTextureCoords(); final float[] textureCoords = region.getTextureCoords();
final float sX = width / textureRegion.getRegionWidth(); final float sX = width / textureRegion.getRegionWidth();
final float sY = height / textureRegion.getRegionHeight(); final float sY = height / textureRegion.getRegionHeight();
@ -292,8 +288,8 @@ public class TwoColorPolygonBatch implements Batch {
this.triangleIndex = triangleIndex; this.triangleIndex = triangleIndex;
final float[] vertices = this.vertices; final float[] vertices = this.vertices;
final float light = this.light; final float light = this.lightPacked;
final float dark = this.dark; final float dark = this.darkPacked;
final float[] textureCoords = region.getTextureCoords(); final float[] textureCoords = region.getTextureCoords();
final float worldOriginX = x + originX; final float worldOriginX = x + originX;
@ -455,8 +451,8 @@ public class TwoColorPolygonBatch implements Batch {
v2 = tmp; v2 = tmp;
} }
float light = this.light; float light = this.lightPacked;
float dark = this.dark; float dark = this.darkPacked;
int idx = this.vertexIndex; int idx = this.vertexIndex;
vertices[idx++] = x1; vertices[idx++] = x1;
vertices[idx++] = y1; vertices[idx++] = y1;
@ -530,8 +526,8 @@ public class TwoColorPolygonBatch implements Batch {
v2 = tmp; v2 = tmp;
} }
float light = this.light; float light = this.lightPacked;
float dark = this.dark; float dark = this.darkPacked;
int idx = this.vertexIndex; int idx = this.vertexIndex;
vertices[idx++] = x; vertices[idx++] = x;
vertices[idx++] = y; vertices[idx++] = y;
@ -592,8 +588,8 @@ public class TwoColorPolygonBatch implements Batch {
final float fx2 = x + srcWidth; final float fx2 = x + srcWidth;
final float fy2 = y + srcHeight; final float fy2 = y + srcHeight;
float light = this.light; float light = this.lightPacked;
float dark = this.dark; float dark = this.darkPacked;
int idx = this.vertexIndex; int idx = this.vertexIndex;
vertices[idx++] = x; vertices[idx++] = x;
vertices[idx++] = y; vertices[idx++] = y;
@ -650,8 +646,8 @@ public class TwoColorPolygonBatch implements Batch {
final float fx2 = x + width; final float fx2 = x + width;
final float fy2 = y + height; final float fy2 = y + height;
float light = this.light; float light = this.lightPacked;
float dark = this.dark; float dark = this.darkPacked;
int idx = this.vertexIndex; int idx = this.vertexIndex;
vertices[idx++] = x; vertices[idx++] = x;
vertices[idx++] = y; vertices[idx++] = y;
@ -717,8 +713,8 @@ public class TwoColorPolygonBatch implements Batch {
final float u2 = 1; final float u2 = 1;
final float v2 = 0; final float v2 = 0;
float light = this.light; float light = this.lightPacked;
float dark = this.dark; float dark = this.darkPacked;
int idx = this.vertexIndex; int idx = this.vertexIndex;
vertices[idx++] = x; vertices[idx++] = x;
vertices[idx++] = y; vertices[idx++] = y;
@ -750,8 +746,9 @@ public class TwoColorPolygonBatch implements Batch {
this.vertexIndex = idx; this.vertexIndex = idx;
} }
/** Draws a rectangle using the given vertices. There must be 4 vertices, each made up of 6 elements in this order: x, y, lightColor, darkColor, /** Draws a rectangle using the given vertices. There must be 4 vertices, each made up of 6 elements in this order: x, y,
* u, v. The {@link #getColor()} and {@link #getDarkColor()} from the TwoColorPolygonBatch is not applied. */ * lightColor, darkColor, u, v. The {@link #getColor()} and {@link #getDarkColor()} from the TwoColorPolygonBatch is not
* applied. */
@Override @Override
public void draw (Texture texture, float[] spriteVertices, int offset, int count) { public void draw (Texture texture, float[] spriteVertices, int offset, int count) {
if (!drawing) throw new IllegalStateException("begin must be called before draw."); if (!drawing) throw new IllegalStateException("begin must be called before draw.");
@ -832,8 +829,8 @@ public class TwoColorPolygonBatch implements Batch {
final float u2 = region.getU2(); final float u2 = region.getU2();
final float v2 = region.getV(); final float v2 = region.getV();
float light = this.light; float light = this.lightPacked;
float dark = this.dark; float dark = this.darkPacked;
int idx = this.vertexIndex; int idx = this.vertexIndex;
vertices[idx++] = x; vertices[idx++] = x;
vertices[idx++] = y; vertices[idx++] = y;
@ -968,8 +965,8 @@ public class TwoColorPolygonBatch implements Batch {
final float u2 = region.getU2(); final float u2 = region.getU2();
final float v2 = region.getV(); final float v2 = region.getV();
float light = this.light; float light = this.lightPacked;
float dark = this.dark; float dark = this.darkPacked;
int idx = this.vertexIndex; int idx = this.vertexIndex;
vertices[idx++] = x1; vertices[idx++] = x1;
vertices[idx++] = y1; vertices[idx++] = y1;
@ -1120,8 +1117,8 @@ public class TwoColorPolygonBatch implements Batch {
v4 = region.getV2(); v4 = region.getV2();
} }
float light = this.light; float light = this.lightPacked;
float dark = this.dark; float dark = this.darkPacked;
int idx = this.vertexIndex; int idx = this.vertexIndex;
vertices[idx++] = x1; vertices[idx++] = x1;
vertices[idx++] = y1; vertices[idx++] = y1;
@ -1191,8 +1188,8 @@ public class TwoColorPolygonBatch implements Batch {
final float u2 = region.getU2(); final float u2 = region.getU2();
final float v2 = region.getV(); final float v2 = region.getV();
float light = this.light; float light = this.lightPacked;
float dark = this.dark; float dark = this.darkPacked;
int idx = vertexIndex; int idx = vertexIndex;
vertices[idx++] = x1; vertices[idx++] = x1;
vertices[idx++] = y1; vertices[idx++] = y1;
@ -1228,6 +1225,8 @@ public class TwoColorPolygonBatch implements Batch {
public void flush () { public void flush () {
if (vertexIndex == 0) return; if (vertexIndex == 0) return;
totalRenderCalls++;
lastTexture.bind(); lastTexture.bind();
Mesh mesh = this.mesh; Mesh mesh = this.mesh;
mesh.setVertices(vertices, 0, vertexIndex); mesh.setVertices(vertices, 0, vertexIndex);
@ -1241,13 +1240,13 @@ public class TwoColorPolygonBatch implements Batch {
} }
@Override @Override
public void disableBlending() { public void disableBlending () {
flush(); flush();
blendingDisabled = true; blendingDisabled = true;
} }
@Override @Override
public void enableBlending() { public void enableBlending () {
flush(); flush();
blendingDisabled = false; blendingDisabled = false;
} }
@ -1323,7 +1322,7 @@ public class TwoColorPolygonBatch implements Batch {
} }
@Override @Override
public ShaderProgram getShader() { public ShaderProgram getShader () {
return shader; return shader;
} }
@ -1366,12 +1365,12 @@ public class TwoColorPolygonBatch implements Batch {
} }
@Override @Override
public int getBlendSrcFuncAlpha() { public int getBlendSrcFuncAlpha () {
return blendSrcFuncAlpha; return blendSrcFuncAlpha;
} }
@Override @Override
public int getBlendDstFuncAlpha() { public int getBlendDstFuncAlpha () {
return blendDstFuncAlpha; return blendDstFuncAlpha;
} }