60 lines
1.5 KiB
Java
60 lines
1.5 KiB
Java
package speiger.src.coreengine.math.value;
|
|
|
|
import speiger.src.coreengine.math.MathUtils;
|
|
|
|
public class CubicValue extends Value
|
|
{
|
|
final float startValue;
|
|
final float startHelperValue;
|
|
final float endHelperValue;
|
|
final float endValue;
|
|
boolean smooth = false;
|
|
|
|
public CubicValue(float duration, float startValue, float startHelper, float endHelper, float endValue)
|
|
{
|
|
this(0F, duration, startValue, startHelper, endHelper, endValue);
|
|
}
|
|
|
|
public CubicValue(float start, float duration, float startValue, float startHelper, float endHelper, float endValue)
|
|
{
|
|
super(start, duration);
|
|
this.startValue = startValue;
|
|
startHelperValue = startHelper;
|
|
endHelperValue = endHelper;
|
|
this.endValue = endValue;
|
|
}
|
|
|
|
public CubicValue setSmooth()
|
|
{
|
|
smooth = true;
|
|
return this;
|
|
}
|
|
|
|
public CubicValue setSmooth(boolean smooth)
|
|
{
|
|
this.smooth = smooth;
|
|
return this;
|
|
}
|
|
|
|
@Override
|
|
protected float calculateProgress(float time)
|
|
{
|
|
if(smooth)
|
|
{
|
|
float first = MathUtils.smoothQuadraticCurve(startValue, startHelperValue, endHelperValue, time);
|
|
float second = MathUtils.smoothQuadraticCurve(startHelperValue, endHelperValue, endValue, time);
|
|
return MathUtils.smoothLerp(first, second, time);
|
|
}
|
|
float first = MathUtils.quadraticCurve(startValue, startHelperValue, endHelperValue, time);
|
|
float second = MathUtils.quadraticCurve(startHelperValue, endHelperValue, endValue, time);
|
|
return MathUtils.lerp(first, second, time);
|
|
}
|
|
|
|
@Override
|
|
protected void onFinished()
|
|
{
|
|
finishProgress();
|
|
}
|
|
|
|
}
|