/**
* Copyright © 2013 CVTE. All Rights Reserved.
*/
package external.mesh;
public abstract class Mesh {
private static final int HORIZONTAL_SPLIT = 40;
private static final int VERTICAL_SPLIT = 40;
/**
* splitting partitions in horizontal and vertical
*/
protected int mHorizontalSplit;
protected int mVerticalSplit;
protected int mBmpWidth = -1;
protected int mBmpHeight = -1;
protected final float[] mVertices;
public Mesh() {
mHorizontalSplit = HORIZONTAL_SPLIT;
mVerticalSplit = VERTICAL_SPLIT;
mVertices = new float[(mHorizontalSplit + 1) * (mVerticalSplit + 1) * 2];
}
public Mesh(int width, int height) {
mHorizontalSplit = width;
mVerticalSplit = height;
mVertices = new float[(mHorizontalSplit + 1) * (mVerticalSplit + 1) * 2];
}
public float[] getVertices() {
return mVertices;
}
public int getWidth() {
return mHorizontalSplit;
}
public int getHeight() {
return mVerticalSplit;
}
public static void setXY(float[] array, int index, float x, float y) {
array[index * 2 + 0] = x;
array[index * 2 + 1] = y;
}
public void setBitmapSize(int w, int h) {
mBmpWidth = w;
mBmpHeight = h;
}
public abstract void buildPaths(float endX, float endY);
public abstract void buildMeshes(int index);
public void buildMeshes(float w, float h) {
int index = 0;
for (int y = 0; y <= mVerticalSplit; y++) {
float fy = y * h / mVerticalSplit;
for (int x = 0; x <= mHorizontalSplit; x++) {
float fx = x * w / mHorizontalSplit;
setXY(mVertices, index, fx, fy);
index++;
}
}
}
}