getCurvePercent method
Implementation
double getCurvePercent(int frameIndex, double percent) {
percent = MathUtils.clamp(percent, 0.0, 1.0);
int i = frameIndex * CurveTimeline.bezierSize;
final double type = curves[i];
if (type == CurveTimeline.linear) return percent;
if (type == CurveTimeline.stepped) return 0.0;
i++;
double x = 0.0;
for (final int start = i, n = i + CurveTimeline.bezierSize - 1;
i < n;
i += 2) {
x = curves[i];
if (x >= percent) {
double prevX, prevY;
if (i == start) {
prevX = 0.0;
prevY = 0.0;
} else {
prevX = curves[i - 2];
prevY = curves[i - 1];
}
return prevY +
(curves[i + 1] - prevY) * (percent - prevX) / (x - prevX);
}
}
final double y = curves[i - 1];
return y + (1 - y) * (percent - x) / (1 - x); // Last point is 1,1.
}