package gl.animations;
import gl.Color;
import gl.HasColor;
import gl.Renderable;
import javax.microedition.khronos.opengles.GL10;
import util.Log;
import util.Vec;
import worldData.Updateable;
import worldData.Visitor;
public class AnimationColorMorph extends GLAnimation {
private static final float MIN_DISTANCE = 0.001f;
private float myDurationInMS;
private Color myTargetColor;
public AnimationColorMorph(float durationInMS, Color targetColor) {
myDurationInMS = durationInMS;
myTargetColor = targetColor;
}
@Override
public void render(GL10 gl, Renderable parent) {
// TODO Auto-generated method stub
}
@Override
public boolean update(float timeDelta, Updateable parent) {
if (parent instanceof HasColor) {
Vec colorDistance = Color.morphToNewColor(
((HasColor) parent).getColor(), myTargetColor, timeDelta
/ myDurationInMS);
if (!(colorDistance.getLength() > MIN_DISTANCE)) {
Log.d("NodeListener", "color morph finnished for " + parent);
}
return (colorDistance.getLength() > MIN_DISTANCE);
}
return false;
}
@Override
public boolean accept(Visitor visitor) {
return visitor.default_visit(this);
}
}