List of usage examples for com.badlogic.gdx.graphics.glutils ShapeRenderer rotate
public void rotate(float axisX, float axisY, float axisZ, float degrees)
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();// www. j a va2 s. 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 ww 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 ww w . j av a2 s .co 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();//w w w . j a va 2 s . com 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(); }