package gl.animations;
import gl.Renderable;
import javax.microedition.khronos.opengles.GL10;
import util.Vec;
import worldData.Updateable;
import worldData.Visitor;
public class AnimationMove extends GLAnimation {
private final float MIN_DISTANCE = 0.01f;
private float timeToMove;
private Vec relativeTargetPos;
private Vec pos;
private boolean done;
public AnimationMove(float timeToMove, Vec relativeTargetPos) {
this.timeToMove = timeToMove;
this.relativeTargetPos = relativeTargetPos;
pos = new Vec();
}
@Override
public void render(GL10 gl, Renderable parent) {
gl.glTranslatef(pos.x, pos.y, pos.z);
}
@Override
public boolean update(float timeDelta, Updateable parent) {
if (!done) {
Vec.morphToNewVec(pos, relativeTargetPos, timeDelta / timeToMove);
if (Vec.distance(pos, relativeTargetPos) < MIN_DISTANCE) {
done = true;
}
}
return true;
}
@Override
public boolean accept(Visitor visitor) {
return visitor.default_visit(this);
}
}