Example usage for com.badlogic.gdx.graphics.glutils ShapeRenderer rotate

List of usage examples for com.badlogic.gdx.graphics.glutils ShapeRenderer rotate

Introduction

In this page you can find the example usage for com.badlogic.gdx.graphics.glutils ShapeRenderer rotate.

Prototype

public void rotate(float axisX, float axisY, float axisZ, float degrees) 

Source Link

Document

Multiplies the current transformation matrix by a rotation matrix.

Usage

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();
}