List of usage examples for com.badlogic.gdx.graphics.g3d.utils MeshPartBuilder rect
public void rect(VertexInfo corner00, VertexInfo corner10, VertexInfo corner11, VertexInfo corner01);
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(); }