List of usage examples for com.badlogic.gdx.graphics.g2d PolygonRegion getTextureCoords
public float[] getTextureCoords()
From source file:com.esotericsoftware.spine.utils.TwoColorPolygonBatch.java
License:Open Source License
/** Draws a polygon region with the bottom left corner at x,y having the width and height of the region. */ public void draw(PolygonRegion region, float x, float y) { if (!drawing) throw new IllegalStateException("begin must be called before draw."); final short[] triangles = this.triangles; final short[] regionTriangles = region.getTriangles(); final int regionTrianglesLength = regionTriangles.length; final float[] regionVertices = region.getVertices(); final int regionVerticesLength = regionVertices.length; final Texture texture = region.getRegion().getTexture(); if (texture != lastTexture) switchTexture(texture);/*from w w w .jav a 2 s . c o m*/ else if (triangleIndex + regionTrianglesLength > triangles.length || vertexIndex + regionVerticesLength * VERTEX_SIZE / 2 > vertices.length) flush(); int triangleIndex = this.triangleIndex; int vertexIndex = this.vertexIndex; final int startVertex = vertexIndex / VERTEX_SIZE; for (int i = 0; i < regionTrianglesLength; i++) triangles[triangleIndex++] = (short) (regionTriangles[i] + startVertex); this.triangleIndex = triangleIndex; final float[] vertices = this.vertices; final float light = this.lightPacked; final float dark = this.darkPacked; final float[] textureCoords = region.getTextureCoords(); for (int i = 0; i < regionVerticesLength; i += 2) { vertices[vertexIndex++] = regionVertices[i] + x; vertices[vertexIndex++] = regionVertices[i + 1] + y; vertices[vertexIndex++] = light; vertices[vertexIndex++] = dark; vertices[vertexIndex++] = textureCoords[i]; vertices[vertexIndex++] = textureCoords[i + 1]; } this.vertexIndex = vertexIndex; }
From source file:com.esotericsoftware.spine.utils.TwoColorPolygonBatch.java
License:Open Source License
/** Draws a polygon region with the bottom left corner at x,y and stretching the region to cover the given width and height. */ public void draw(PolygonRegion region, float x, float y, float width, float height) { if (!drawing) throw new IllegalStateException("begin must be called before draw."); final short[] triangles = this.triangles; final short[] regionTriangles = region.getTriangles(); final int regionTrianglesLength = regionTriangles.length; final float[] regionVertices = region.getVertices(); final int regionVerticesLength = regionVertices.length; final TextureRegion textureRegion = region.getRegion(); final Texture texture = textureRegion.getTexture(); if (texture != lastTexture) switchTexture(texture);/* ww w. ja va2s . c o m*/ else if (triangleIndex + regionTrianglesLength > triangles.length || vertexIndex + regionVerticesLength * VERTEX_SIZE / 2 > vertices.length) flush(); int triangleIndex = this.triangleIndex; int vertexIndex = this.vertexIndex; final int startVertex = vertexIndex / VERTEX_SIZE; for (int i = 0, n = regionTriangles.length; i < n; i++) triangles[triangleIndex++] = (short) (regionTriangles[i] + startVertex); this.triangleIndex = triangleIndex; final float[] vertices = this.vertices; final float light = this.lightPacked; final float dark = this.darkPacked; final float[] textureCoords = region.getTextureCoords(); final float sX = width / textureRegion.getRegionWidth(); final float sY = height / textureRegion.getRegionHeight(); for (int i = 0; i < regionVerticesLength; i += 2) { vertices[vertexIndex++] = regionVertices[i] * sX + x; vertices[vertexIndex++] = regionVertices[i + 1] * sY + y; vertices[vertexIndex++] = light; vertices[vertexIndex++] = dark; vertices[vertexIndex++] = textureCoords[i]; vertices[vertexIndex++] = textureCoords[i + 1]; } this.vertexIndex = vertexIndex; }
From source file:com.esotericsoftware.spine.utils.TwoColorPolygonBatch.java
License:Open Source License
/** Draws the polygon region with the bottom left corner at x,y and stretching the region to cover the given width and height. * The polygon region is offset by originX, originY relative to the origin. Scale specifies the scaling factor by which the * polygon region should be scaled around originX, originY. Rotation specifies the angle of counter clockwise rotation of the * rectangle around originX, originY. */ public void draw(PolygonRegion region, float x, float y, float originX, float originY, float width, float height, float scaleX, float scaleY, float rotation) { if (!drawing) throw new IllegalStateException("begin must be called before draw."); final short[] triangles = this.triangles; final short[] regionTriangles = region.getTriangles(); final int regionTrianglesLength = regionTriangles.length; final float[] regionVertices = region.getVertices(); final int regionVerticesLength = regionVertices.length; final TextureRegion textureRegion = region.getRegion(); Texture texture = textureRegion.getTexture(); if (texture != lastTexture) switchTexture(texture);//from w ww .j ava 2 s . c om else if (triangleIndex + regionTrianglesLength > triangles.length || vertexIndex + regionVerticesLength * VERTEX_SIZE / 2 > vertices.length) flush(); int triangleIndex = this.triangleIndex; int vertexIndex = this.vertexIndex; final int startVertex = vertexIndex / VERTEX_SIZE; for (int i = 0; i < regionTrianglesLength; i++) triangles[triangleIndex++] = (short) (regionTriangles[i] + startVertex); this.triangleIndex = triangleIndex; final float[] vertices = this.vertices; final float light = this.lightPacked; final float dark = this.darkPacked; final float[] textureCoords = region.getTextureCoords(); final float worldOriginX = x + originX; final float worldOriginY = y + originY; final float sX = width / textureRegion.getRegionWidth(); final float sY = height / textureRegion.getRegionHeight(); final float cos = MathUtils.cosDeg(rotation); final float sin = MathUtils.sinDeg(rotation); float fx, fy; for (int i = 0; i < regionVerticesLength; i += 2) { fx = (regionVertices[i] * sX - originX) * scaleX; fy = (regionVertices[i + 1] * sY - originY) * scaleY; vertices[vertexIndex++] = cos * fx - sin * fy + worldOriginX; vertices[vertexIndex++] = sin * fx + cos * fy + worldOriginY; vertices[vertexIndex++] = light; vertices[vertexIndex++] = dark; vertices[vertexIndex++] = textureCoords[i]; vertices[vertexIndex++] = textureCoords[i + 1]; } this.vertexIndex = vertexIndex; }
From source file:org.ams.prettypaint.PrettyPolygonBatch.java
License:Open Source License
protected void drawTexture(PolygonRegion region, float pos_x, float pos_y, float width, float height, float scaleX, float scaleY, float rotation, float texture_pos_x, float texture_pos_y, float tex_trans_x, float tex_trans_y, float region_width, float region_height, float packedColor) { if (!isStarted) throw new RuntimeException("You must call begin() before calling this method."); final float[] regionVertices = region.getVertices(); final int regionVerticesLength = regionVertices.length; final TextureRegion textureRegion = region.getRegion(); Texture texture = textureRegion.getTexture(); float vertexCount = 3f; float degenerateVertexCount = 2f; float totalData = dataPerVertex * (vertexCount + degenerateVertexCount); if (texture != lastTexture) { flush();//from w ww . j ava2s . c o m lastTexture = texture; } else if (dataCount + totalData > maxData) { flush(); } final float[] textureCoordinates = region.getTextureCoords(); final float worldOriginX = pos_x; final float worldOriginY = pos_y; final float sX = width / textureRegion.getRegionWidth(); final float sY = height / textureRegion.getRegionHeight(); final float cos = MathUtils.cos(rotation); final float sin = MathUtils.sin(rotation); float fx, fy; int i = 0; { fx = (regionVertices[i] * sX) * scaleX; fy = (regionVertices[i + 1] * sY) * scaleY; data[dataCount++] = cos * fx - sin * fy + worldOriginX; data[dataCount++] = sin * fx + cos * fy + worldOriginY; data[dataCount++] = packedColor; data[dataCount++] = textureCoordinates[i] + tex_trans_x; data[dataCount++] = textureCoordinates[i + 1] + tex_trans_y; data[dataCount++] = texture_pos_x; data[dataCount++] = texture_pos_y; data[dataCount++] = region_width; data[dataCount++] = region_height; } for (; i < regionVerticesLength; i += 2) { fx = (regionVertices[i] * sX) * scaleX; fy = (regionVertices[i + 1] * sY) * scaleY; data[dataCount++] = cos * fx - sin * fy + worldOriginX; data[dataCount++] = sin * fx + cos * fy + worldOriginY; data[dataCount++] = packedColor; data[dataCount++] = textureCoordinates[i] + tex_trans_x; data[dataCount++] = textureCoordinates[i + 1] + tex_trans_y; data[dataCount++] = texture_pos_x; data[dataCount++] = texture_pos_y; data[dataCount++] = region_width; data[dataCount++] = region_height; } { i -= 2; fx = (regionVertices[i] * sX) * scaleX; fy = (regionVertices[i + 1] * sY) * scaleY; data[dataCount++] = cos * fx - sin * fy + worldOriginX; data[dataCount++] = sin * fx + cos * fy + worldOriginY; data[dataCount++] = packedColor; data[dataCount++] = textureCoordinates[i] + tex_trans_x; data[dataCount++] = textureCoordinates[i + 1] + tex_trans_y; data[dataCount++] = texture_pos_x; data[dataCount++] = texture_pos_y; data[dataCount++] = region_width; data[dataCount++] = region_height; } }