Example usage for com.badlogic.gdx.graphics.g3d.utils MeshPartBuilder rect

List of usage examples for com.badlogic.gdx.graphics.g3d.utils MeshPartBuilder rect

Introduction

In this page you can find the example usage for com.badlogic.gdx.graphics.g3d.utils MeshPartBuilder rect.

Prototype

public void rect(VertexInfo corner00, VertexInfo corner10, VertexInfo corner11, VertexInfo corner01);

Source Link

Document

Add a rectangle.

Usage

From source file:com.github.fauu.helix.game.Game.java

License:Open Source License

@Override
public void create() {
    camera = new Camera(new Vector3(32, 32, 0));

    cameraInputController = new CameraInputController(camera);
    //    Gdx.input.setInputProcessor(cameraInputController);

    assets = new AssetManager();
    assets.setLoader(GeometrySet.class, new GeometrySetLoader(new InternalFileHandleResolver()));
    assets.setLoader(MapRegion.class, new MapRegionLoader(new InternalFileHandleResolver()));
    assets.load("assets/mapregions/0.hmr", MapRegion.class);
    assets.finishLoading();/*from   w  w w. ja  v  a2s.c  o m*/

    mapRegion = assets.get("assets/mapregions/0.hmr", MapRegion.class);

    spriteBatch = new SpriteBatch();

    renderer = new Renderer();

    player = new Player(new Vector2(8, 17), new Texture(Gdx.files.internal("assets/sprites/player.png")));
    camera.move(player.getRealPosition());

    final ModelBuilder modelBuilder = new ModelBuilder();

    waterTexture = new Texture("assets/textures/water.png");

    final MeshPartBuilder.VertexInfo corner00 = new MeshPartBuilder.VertexInfo();
    corner00.hasPosition = true;
    corner00.hasNormal = true;
    corner00.hasUV = true;
    corner00.setPos(0, 0, 0);
    corner00.setNor(0, 1, 0);
    corner00.setUV(0, 0);

    final MeshPartBuilder.VertexInfo corner10 = new MeshPartBuilder.VertexInfo();
    corner10.hasPosition = true;
    corner10.hasNormal = true;
    corner10.hasUV = true;
    corner10.setPos(4, 0, 0);
    corner10.setNor(0, 1, 0);
    corner10.setUV(0, 1);

    final MeshPartBuilder.VertexInfo corner11 = new MeshPartBuilder.VertexInfo();
    corner11.hasPosition = true;
    corner11.hasNormal = true;
    corner11.hasUV = true;
    corner11.setPos(4, 0, 14);
    corner11.setNor(0, 1, 0);
    corner11.setUV(1, 1);

    final MeshPartBuilder.VertexInfo corner01 = new MeshPartBuilder.VertexInfo();
    corner01.hasPosition = true;
    corner01.hasNormal = true;
    corner01.hasUV = true;
    corner01.setPos(0, 0, 14);
    corner01.setNor(0, 1, 0);
    corner01.setUV(1, 0);

    modelBuilder.begin();
    modelBuilder.node();
    MeshPartBuilder meshPartBuilder = modelBuilder.part("water1", GL20.GL_TRIANGLES,
            VertexAttributes.Usage.Position | VertexAttributes.Usage.TextureCoordinates,
            new Material(TextureAttribute.createDiffuse(waterTexture),
                    ColorAttribute.createDiffuse(Color.WHITE),
                    new BlendingAttribute(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA)));
    meshPartBuilder.rect(corner00, corner10, corner11, corner01);

    waterModel = modelBuilder.end();

    waterModelInstance = new ModelInstance(waterModel);
    WaterData waterData = new WaterData();
    waterData.waveAmplitude = 0.02f;
    waterData.waveAngle = 0;
    waterData.waveFrequency = 0.5f;
    waterModelInstance.userData = waterData;
    //    waterModelInstance.userData = new float[2];
    //    ((float[]) waterModelInstance.userData)[0] = 0; // waveAngle
    //    ((float[]) waterModelInstance.userData)[1] = 0.1f; // waveAmplitude

    waterModelInstance.transform.translate(8, -0.1f, 19).rotate(0, 1, 0, -90).scale(1, 1, -1);
    //    ((float[]) waterModelInstance.userData)[2] = 8; // startX
    //    ((float[]) waterModelInstance.userData)[3] = 7; // sizeX
    //    ((float[]) waterModelInstance.userData)[4] = 19; // startZ
    //    ((float[]) waterModelInstance.userData)[5] = 5; // sizeZ
}

From source file:com.mbrlabs.mundus.editor.utils.UsefulMeshs.java

License:Apache License

public static Model torus(Material mat, float width, float height, int divisionsU, int divisionsV) {

    ModelBuilder modelBuilder = new ModelBuilder();
    modelBuilder.begin();//from   ww  w  . j a  v a 2 s .c om
    MeshPartBuilder builder = modelBuilder.part("torus", GL20.GL_TRIANGLES, VertexAttributes.Usage.Position,
            mat);
    // builder.setColor(Color.LIGHT_GRAY);

    MeshPartBuilder.VertexInfo curr1 = v0.set(null, null, null, null);
    curr1.hasUV = curr1.hasNormal = false;
    curr1.hasPosition = true;

    MeshPartBuilder.VertexInfo curr2 = v1.set(null, null, null, null);
    curr2.hasUV = curr2.hasNormal = false;
    curr2.hasPosition = true;
    short i1, i2, i3 = 0, i4 = 0;

    int i, j, k;
    double s, t, twopi;
    twopi = 2 * Math.PI;

    for (i = 0; i < divisionsV; i++) {
        for (j = 0; j <= divisionsU; j++) {
            for (k = 1; k >= 0; k--) {
                s = (i + k) % divisionsV + 0.5;
                t = j % divisionsU;

                curr1.position.set(
                        (float) ((width + height * Math.cos(s * twopi / divisionsV))
                                * Math.cos(t * twopi / divisionsU)),
                        (float) ((width + height * Math.cos(s * twopi / divisionsV))
                                * Math.sin(t * twopi / divisionsU)),
                        (float) (height * Math.sin(s * twopi / divisionsV)));
                k--;
                s = (i + k) % divisionsV + 0.5;
                curr2.position.set(
                        (float) ((width + height * Math.cos(s * twopi / divisionsV))
                                * Math.cos(t * twopi / divisionsU)),
                        (float) ((width + height * Math.cos(s * twopi / divisionsV))
                                * Math.sin(t * twopi / divisionsU)),
                        (float) (height * Math.sin(s * twopi / divisionsV)));
                // curr2.uv.set((float) s, 0);
                i1 = builder.vertex(curr1);
                i2 = builder.vertex(curr2);
                builder.rect(i4, i2, i1, i3);
                i4 = i2;
                i3 = i1;
            }
        }
    }

    return modelBuilder.end();
}