package speiger.src.coreengine.math.value; import speiger.src.coreengine.math.MathUtils; public class QuadraticValue extends Value { final float startValue; final float medianValue; final float endValue; boolean smooth; public QuadraticValue(float duration, float startValue, float medianValue, float endValue) { this(0F, duration, startValue, medianValue, endValue); } public QuadraticValue(float start, float duration, float startValue, float medianValue, float endValue) { super(start, duration); this.startValue = startValue; this.medianValue = medianValue; this.endValue = endValue; } public QuadraticValue setSmooth() { smooth = true; return this; } public QuadraticValue setSmooth(boolean smooth) { this.smooth = smooth; return this; } @Override protected float calculateProgress(float time) { return smooth ? MathUtils.smoothQuadraticCurve(startValue, medianValue, endValue, time) : MathUtils.quadraticCurve(startValue, medianValue, endValue, time); } @Override protected void onFinished() { finishProgress(); } }