package rajawali.animation;
import rajawali.ATransformable3D;
import rajawali.math.Number3D;
public class ScaleAnimation3D extends Animation3D {
protected Number3D mToScale;
protected Number3D mFromScale;
protected Number3D mDiffScale;
protected Number3D mMultipliedScale = new Number3D();
protected Number3D mAddedScale = new Number3D();
public ScaleAnimation3D(Number3D toScale) {
super();
mToScale = toScale;
}
public ScaleAnimation3D(Number3D fromScale, Number3D toScale) {
super();
mToScale = toScale;
mFromScale = fromScale;
}
@Override
public void setTransformable3D(ATransformable3D transformable3D) {
super.setTransformable3D(transformable3D);
if(mFromScale == null)
mFromScale = new Number3D(transformable3D.getScale());
}
@Override
protected void applyTransformation(float interpolatedTime) {
super.applyTransformation(interpolatedTime);
if(mDiffScale == null)
mDiffScale = Number3D.subtract(mToScale, mFromScale);
mMultipliedScale.setAllFrom(mDiffScale);
mMultipliedScale.multiply(interpolatedTime);
mAddedScale.setAllFrom(mFromScale);
mAddedScale.add(mMultipliedScale);
mTransformable3D.getScale().setAllFrom(mAddedScale);
}
}