//Convience functions that scale the result for you, scaling both the duration and the value.
float ScaledEase(const EaseFunction &easeFunction, float currentTime, FloatRange valueRange, FloatRange timeRange)
{
//Calculate the current position in the easing function, after adjusting 'currentTime' to the range (0.0 - 1.0).
float easePos = easeFunction(timeRange.GetFrom(currentTime));
//Calculate the result.
float result = valueRange.begin;
result += (valueRange.GetSize() * easePos);
return result;
}
Ly9Db252aWVuY2UgZnVuY3Rpb25zIHRoYXQgc2NhbGUgdGhlIHJlc3VsdCBmb3IgeW91LCBzY2FsaW5nIGJvdGggdGhlIGR1cmF0aW9uIGFuZCB0aGUgdmFsdWUuCmZsb2F0IFNjYWxlZEVhc2UoY29uc3QgRWFzZUZ1bmN0aW9uICZlYXNlRnVuY3Rpb24sIGZsb2F0IGN1cnJlbnRUaW1lLCBGbG9hdFJhbmdlIHZhbHVlUmFuZ2UsIEZsb2F0UmFuZ2UgdGltZVJhbmdlKQp7CiAgICAvL0NhbGN1bGF0ZSB0aGUgY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgZWFzaW5nIGZ1bmN0aW9uLCBhZnRlciBhZGp1c3RpbmcgJ2N1cnJlbnRUaW1lJyB0byB0aGUgcmFuZ2UgKDAuMCAtIDEuMCkuCiAgICBmbG9hdCBlYXNlUG9zID0gZWFzZUZ1bmN0aW9uKHRpbWVSYW5nZS5HZXRGcm9tKGN1cnJlbnRUaW1lKSk7CiAgICAKICAgIC8vQ2FsY3VsYXRlIHRoZSByZXN1bHQuCiAgICBmbG9hdCByZXN1bHQgPSB2YWx1ZVJhbmdlLmJlZ2luOwogICAgcmVzdWx0ICs9ICh2YWx1ZVJhbmdlLkdldFNpemUoKSAqIGVhc2VQb3MpOwogICAgCiAgICByZXR1cm4gcmVzdWx0OyAKfQ==