List of usage examples for com.badlogic.gdx.graphics.glutils ShapeRenderer translate
public void translate(float x, float y, float z)
From source file:net.noviden.towerdefense.UnitFactory.HexagonUnit.java
License:Open Source License
public void draw(ShapeRenderer shapeRenderer) { // draw each unit's health as a percent of its shape float percentHealthMissing = 1.0f - (this.health / this.maxHealth); float percentToDraw; float s = centerToVertex / 2, c = (float) Math.sqrt(3) * centerToVertex / 2; // draw a hexagon centered at the current location shapeRenderer.set(ShapeRenderer.ShapeType.Filled); shapeRenderer.setColor(BASE_UNIT_COLOR); shapeRenderer.identity();//from w w w. j a va 2s . com shapeRenderer.translate(location.x, location.y, 0.f); shapeRenderer.rotate(0f, 0f, 1f, rotation); // E * * * F // * * * * * * * // D * * * M * * * A // * * * * * * * // C * * * B // draw triangle MAB shapeRenderer.triangle(0, 0, centerToVertex, 0, s, -c); // draw triangle MBC shapeRenderer.triangle(0, 0, s, -c, -s, -c); // draw triangle MCD shapeRenderer.triangle(0, 0, -s, -c, -centerToVertex, 0); // draw triangle MDE shapeRenderer.triangle(0, 0, -centerToVertex, 0, -s, c); // draw triangle MEF shapeRenderer.triangle(0, 0, -s, c, s, c); // draw triangle MFA shapeRenderer.triangle(0, 0, s, c, centerToVertex, 0); if (percentHealthMissing > 0.0f) { // draw in missing health shapeRenderer.setColor(BASE_UNIT_DAMAGED_COLOR); // draw triangle MAB percentToDraw = MathUtils.clamp(percentHealthMissing / 0.166f, 0, 1.0f); shapeRenderer.triangle(0, 0, centerToVertex, 0, centerToVertex - (Math.abs(centerToVertex - s) * percentToDraw), -c * percentToDraw); // draw triangle MBC percentToDraw = MathUtils.clamp((percentHealthMissing - 0.166f) / 0.166f, 0, 1.0f); shapeRenderer.triangle(0, 0, s, -c, s - (s * 2 * percentToDraw), -c); // draw triangle MCD percentToDraw = MathUtils.clamp((percentHealthMissing - 0.33f) / 0.166f, 0, 1.0f); shapeRenderer.triangle(0, 0, -s, -c, -s - (Math.abs(centerToVertex - s) * percentToDraw), -c + (c * percentToDraw)); // draw triangle MDE percentToDraw = MathUtils.clamp((percentHealthMissing - 0.5f) / 0.166f, 0, 1.0f); shapeRenderer.triangle(0, 0, -centerToVertex, 0, -centerToVertex + (Math.abs(centerToVertex - s) * percentToDraw), c * percentToDraw); // draw triangle MEF percentToDraw = MathUtils.clamp((percentHealthMissing - 0.66f) / 0.166f, 0, 1.0f); shapeRenderer.triangle(0, 0, -s, c, -s + (s * 2 * percentToDraw), c); // draw triangle MFA percentToDraw = MathUtils.clamp((percentHealthMissing - 0.83f) / 0.166f, 0, 1.0f); shapeRenderer.triangle(0, 0, s, c, s + (Math.abs(centerToVertex - s) * percentToDraw), c - (c * percentToDraw)); } shapeRenderer.identity(); }
From source file:net.noviden.towerdefense.UnitFactory.PentagonUnit.java
License:Open Source License
@Override public void draw(ShapeRenderer shapeRenderer) { // draw each unit's health as a percent of its shape float percentHealthMissing = 1.0f - (this.health / this.maxHealth); float percentToDraw; // thank you based wolframalpha // http://mathworld.wolfram.com/Pentagon.html float c1 = MathUtils.cos(MathUtils.PI * 2.0f / 5.0f) * centerToVertex, c2 = MathUtils.cos(MathUtils.PI / 5.0f) * centerToVertex, s1 = MathUtils.sin(MathUtils.PI * 2.0f / 5.0f) * centerToVertex, s2 = MathUtils.sin(MathUtils.PI * 4.0f / 5.0f) * centerToVertex; // draw a pentagon centered at the current location shapeRenderer.set(ShapeRenderer.ShapeType.Filled); shapeRenderer.setColor(BASE_UNIT_COLOR); shapeRenderer.identity();//from w w w . j a va 2 s. c om shapeRenderer.translate(location.x, location.y, 0.f); shapeRenderer.rotate(0f, 0f, 1f, rotation); // draw the pentagon // A // * * // E M B // * * // D * C // draw triangle MAB shapeRenderer.triangle(0, 0, 0, centerToVertex, s1, c1); // draw triangle MBC shapeRenderer.triangle(0, 0, s1, c1, s2, -c2); // draw triangle MCD shapeRenderer.triangle(0, 0, s2, -c2, -s2, -c2); // draw triangle MDE shapeRenderer.triangle(0, 0, -s2, -c2, -s1, c1); // draw triangle MEA shapeRenderer.triangle(0, 0, -s1, c1, 0, centerToVertex); if (percentHealthMissing > 0.0f) { // draw missing health shapeRenderer.setColor(BASE_UNIT_DAMAGED_COLOR); // triangle MAB percentToDraw = MathUtils.clamp(percentHealthMissing / 0.2f, 0, 1.0f); shapeRenderer.triangle(0, 0, 0, centerToVertex, s1 * percentToDraw, centerToVertex - (Math.abs(centerToVertex - c1) * percentToDraw)); // triangle MBC percentToDraw = MathUtils.clamp((percentHealthMissing - 0.2f) / 0.2f, 0, 1.0f); shapeRenderer.triangle(0, 0, s1, c1, s1 - (Math.abs(s1 - s2) * percentToDraw), c1 - ((c1 + c2) * percentToDraw)); // triangle MCD percentToDraw = MathUtils.clamp((percentHealthMissing - 0.4f) / 0.2f, 0, 1.0f); shapeRenderer.triangle(0, 0, s2, -c2, s2 - (s2 * 2 * percentToDraw), -c2); // triangle MDE percentToDraw = MathUtils.clamp((percentHealthMissing - 0.6f) / 0.2f, 0, 1.0f); shapeRenderer.triangle(0, 0, -s2, -c2, -s2 - (Math.abs(s1 - s2) * percentToDraw), -c2 + ((c1 + c2) * percentToDraw)); // triangle MEA percentToDraw = MathUtils.clamp((percentHealthMissing - 0.8f) / 0.2f, 0, 1.0f); shapeRenderer.triangle(0, 0, -s1, c1, -s1 + (s1 * percentToDraw), c1 + (Math.abs(centerToVertex - c1) * percentToDraw)); } shapeRenderer.identity(); }
From source file:net.noviden.towerdefense.UnitFactory.SquareUnit.java
License:Open Source License
@Override public void draw(ShapeRenderer shapeRenderer) { // draw each unit's health as a percent of its shape float percentHealthMissing = 1.0f - (this.health / this.maxHealth); // draw a square centered at the current location shapeRenderer.set(ShapeRenderer.ShapeType.Filled); shapeRenderer.setColor(BASE_UNIT_COLOR); shapeRenderer.identity();//from w ww .ja va 2 s . c o m shapeRenderer.translate(location.x, location.y, 0.f); shapeRenderer.rotate(0f, 0f, 1f, rotation); shapeRenderer.rect(-sideLength / 2, -sideLength / 2, sideLength, sideLength); // draw missing health: break up square into 4 distinct triangles if (percentHealthMissing > 0.0f) { shapeRenderer.setColor(BASE_UNIT_DAMAGED_COLOR); float percentToDraw; // draw 1 / 4 percentToDraw = MathUtils.clamp(percentHealthMissing / 0.25f, 0, 1.0f); shapeRenderer.triangle(0, 0, sideLength / 2, -sideLength / 2, sideLength / 2, -sideLength / 2 + percentToDraw * sideLength); // draw 2 / 4 percentToDraw = MathUtils.clamp((percentHealthMissing - 0.25f) / 0.25f, 0, 1.0f); shapeRenderer.triangle(0, 0, sideLength / 2, sideLength / 2, sideLength / 2 - percentToDraw * sideLength, sideLength / 2); // draw 3 / 4 percentToDraw = MathUtils.clamp((percentHealthMissing - 0.5f) / 0.25f, 0, 1.0f); shapeRenderer.triangle(0, 0, -sideLength / 2, sideLength / 2, -sideLength / 2, sideLength / 2 - percentToDraw * sideLength); // draw 4 / 4 percentToDraw = MathUtils.clamp((percentHealthMissing - 0.75f) / 0.25f, 0, 1.0f); shapeRenderer.triangle(0, 0, -sideLength / 2, -sideLength / 2, -sideLength / 2 + percentToDraw * sideLength, -sideLength / 2); } // reset the shapeRenderer transformation matrix shapeRenderer.identity(); }
From source file:net.noviden.towerdefense.UnitFactory.TriangleUnit.java
License:Open Source License
@Override public void draw(ShapeRenderer shapeRenderer) { // draw each unit's health as a percent of its shape float percentHealthMissing = 1.0f - (this.health / this.maxHealth); float percentToDraw; // draw a square centered at the current location shapeRenderer.set(ShapeRenderer.ShapeType.Filled); shapeRenderer.setColor(BASE_UNIT_COLOR); shapeRenderer.identity();/*from w w w . ja va 2 s .c o m*/ shapeRenderer.translate(location.x, location.y, 0.f); shapeRenderer.rotate(0f, 0f, 1f, rotation); shapeRenderer.triangle(points[0].x, points[0].y, points[1].x, points[1].y, points[2].x, points[2].y); // draw in health missing, break down large triangle into three smaller ones shapeRenderer.setColor(BASE_UNIT_DAMAGED_COLOR); if (percentHealthMissing > 0.0f) { // draw 1 / 3, MAB percentToDraw = MathUtils.clamp(percentHealthMissing / 0.33f, 0, 1.0f); shapeRenderer.triangle(0, 0, points[0].x, points[0].y, points[0].x + (Math.abs(points[0].x - points[1].x) * percentToDraw), points[0].y - (Math.abs(points[0].y - points[1].y) * percentToDraw)); // draw 2 / 3, MBC percentToDraw = MathUtils.clamp((percentHealthMissing - 0.33f) / 0.33f, 0, 1.0f); shapeRenderer.triangle(0, 0, points[1].x, points[1].y, points[1].x - (points[1].x * percentToDraw * 2), points[2].y); // draw 3 / 3, MCA percentToDraw = MathUtils.clamp((percentHealthMissing - 0.66f) / 0.33f, 0, 1.0f); shapeRenderer.triangle(0, 0, points[2].x, points[2].y, points[2].x + (Math.abs(points[2].x - points[0].x) * percentToDraw), points[2].y + (Math.abs(points[2].y - points[0].y) * percentToDraw)); } shapeRenderer.identity(); }
From source file:net.team2xh.environment.widgets.graphs.BarChart.java
@Override public void render(ShapeRenderer renderer, Batch batch) { Gdx.gl.glEnable(GL20.GL_BLEND);/*from w w w . j av a 2s . c o m*/ Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA); renderer.setAutoShapeType(true); renderer.begin(); { //Gdx.gl.glLineWidth(1.0f); renderer.translate(getX(), getY(), 0); renderer.set(ShapeType.Line); renderer.setColor(Color.GRAY); renderer.rect(0, 0, getWidth(), getHeight()); // TODO: Grid renderer.set(ShapeType.Line); renderer.setColor(Color.WHITE); if (showAxis) { // Vertical renderer.line(yAxisMargin, xAxisMargin, yAxisMargin, getHeight() - padding); // Horizontal renderer.line(yAxisMargin, xAxisMargin, getWidth() - padding, xAxisMargin); } // Bars renderer.translate(0, 0, -1); int i = 1; for (Map.Entry<String, Number> e : data) { float length = maxLength * (e.getValue().floatValue() / maxValue); Colors c = colors[color]; renderer.set(ShapeType.Filled); renderer.setColor(c.transparent()); if (horizontal) { renderer.rect(yAxisMargin, getHeight() - (i + 1) * padding - i * thickness, length, thickness); } else { renderer.rect(yAxisMargin + i * padding + (i - 1) * thickness, xAxisMargin, thickness, length); } renderer.set(ShapeType.Line); renderer.setColor(c.color()); if (horizontal) { renderer.rect(yAxisMargin, getHeight() - (i + 1) * padding - i * thickness, maxLength * (e.getValue().floatValue() / maxValue), thickness); } else { renderer.rect(yAxisMargin + i * padding + (i - 1) * thickness, xAxisMargin, thickness, length); } ++i; nextColor(); } renderer.translate(0, 0, +1); renderer.translate(-getX(), -getY(), 0); } renderer.end(); batch.begin(); { int i = 0; for (Map.Entry<String, Number> e : data) { if (horizontal) { font.draw(batch, e.getKey(), getX() + yAxisMargin - padding - font.getBounds(e.getKey()).width, getY() + getHeight() + font.getCapHeight() / 2 - (xAxisMargin + 2 * padding + i * (thickness + padding))); // TODO: Values axis } // TODO: Vertical ++i; } } batch.end(); Gdx.gl.glDisable(GL20.GL_BLEND); }