Exemplo n.º 1
0
  private void createMesh() {
    Mesh.TriangleMeshBuilder tmb = new Mesh.TriangleMeshBuilder(mRS, 2, 0);

    final int width = mWidth > mHeight ? mHeight : mWidth;
    final int height = mWidth > mHeight ? mWidth : mHeight;

    int wResolution = MESH_RESOLUTION;
    int hResolution = (int) (MESH_RESOLUTION * height / (float) width);

    mGlHeight = 2.0f * height / (float) width;

    wResolution += 2;
    hResolution += 2;

    for (int y = 0; y <= hResolution; y++) {
      final float yOffset = (((float) y / hResolution) * 2.f - 1.f) * height / width;
      for (int x = 0; x <= wResolution; x++) {
        tmb.addVertex(((float) x / wResolution) * 2.f - 1.f, yOffset);
      }
    }

    for (int y = 0; y < hResolution; y++) {
      final boolean shift = (y & 0x1) == 0;
      final int yOffset = y * (wResolution + 1);
      for (int x = 0; x < wResolution; x++) {
        final int index = yOffset + x;
        final int iWR1 = index + wResolution + 1;
        if (shift) {
          tmb.addTriangle(index, index + 1, iWR1);
          tmb.addTriangle(index + 1, iWR1 + 1, iWR1);
        } else {
          tmb.addTriangle(index, iWR1 + 1, iWR1);
          tmb.addTriangle(index, index + 1, iWR1 + 1);
        }
      }
    }

    mMesh = tmb.create(true);

    mMeshWidth = wResolution + 1;
    mMeshHeight = hResolution + 1;

    mScript.set_g_WaterMesh(mMesh);
  }