package no.agens.depth;
import android.graphics.Bitmap;
import android.graphics.Path;
import android.graphics.PathMeasure;
import no.agens.depth.headers.PathBitmapMesh;
public class Foam extends PathBitmapMesh {
private float verticalOffset;
void update(float deltaTime) {
for (int i = 0; i < foamCoords.length; i++) {
easedFoamCoords[i] += ((foamCoords[i] - easedFoamCoords[i])) * deltaTime;
}
}
float[] foamCoords;
float[] easedFoamCoords;
float minHeight, maxHeight;
public Foam(int horizontalSlices, int verticalSlices, Bitmap bitmap, float minHeight, float maxHeight, int animDuration) {
super(horizontalSlices, verticalSlices, bitmap,animDuration);
setupFoam(horizontalSlices);
this.minHeight = minHeight;
this.maxHeight = maxHeight;
}
private void setupFoam(int verts) {
foamCoords = new float[verts];
easedFoamCoords = new float[verts];
for (int i = 0; i < verts; i++) {
foamCoords[i] = 0;
easedFoamCoords[i] = 0;
}
}
void calcWave() {
for (int i = 0; i < foamCoords.length; i++) {
foamCoords[i] = MathHelper.randomRange(minHeight, maxHeight);
}
}
public void matchVertsToPath(Path path, float extraOffset) {
PathMeasure pm = new PathMeasure(path, false);
int index = 0;
for (int i = 0; i < staticVerts.length / 2; i++) {
float yIndexValue = staticVerts[i * 2 + 1];
float xIndexValue = staticVerts[i * 2];
float percentOffsetX = (0.000001f + xIndexValue) / bitmap.getWidth();
float percentOffsetX2 = (0.000001f + xIndexValue) / (bitmap.getWidth() + extraOffset);
percentOffsetX2 += pathOffsetPercent;
pm.getPosTan(pm.getLength() * (1f - percentOffsetX), coords, null);
pm.getPosTan(pm.getLength() * (1f - percentOffsetX2), coords2, null);
if (yIndexValue == 0) {
setXY(drawingVerts, i, coords[0], coords2[1] + verticalOffset);
} else {
float desiredYCoord = Math.max(coords2[1], coords2[1] + easedFoamCoords[Math.min(easedFoamCoords.length - 1, index)]);
setXY(drawingVerts, i, coords[0], desiredYCoord + verticalOffset);
index += 1;
}
}
}
public void setVerticalOffset(float verticalOffset) {
this.verticalOffset = verticalOffset;
}
}