//"This can replace most of your basic linear interpolations - it's not extreme, but adds some nice smoothness to otherwise plain animation."
//>>> "This is your go-to interpolation function"
//From here: http://s...content-available-to-author-only...e.net/interpolation/
inline float SmoothStep(float position)
{
return (position * position * (3.0f - (2.0f * position)));
}
//"One rather handy algorithm, especially when you don't necessarily know how the target will behave in the future
//(such as a camera tracking the player's character), is to apply weighted average to the value."
//From here: http://s...content-available-to-author-only...e.net/interpolation/
//
//The movement starts off fast, and rapidly decelerates as you approach the goal.
//Technically, you never actually reach 1.0f. The higher 'slowdown' is, the slower you approach the goal.
inline float WeightedAverage(float position, float slowdown = 15.0f)
{
return ((position * (slowdown - 1.0f)) + 1.0f) / slowdown;
}
//This doesn't actually effect the value at all.
inline float LinearEase(float position)
{
return position;
}
Ly8iVGhpcyBjYW4gcmVwbGFjZSBtb3N0IG9mIHlvdXIgYmFzaWMgbGluZWFyIGludGVycG9sYXRpb25zIC0gaXQncyBub3QgZXh0cmVtZSwgYnV0IGFkZHMgc29tZSBuaWNlIHNtb290aG5lc3MgdG8gb3RoZXJ3aXNlIHBsYWluIGFuaW1hdGlvbi4iCi8vPj4+ICJUaGlzIGlzIHlvdXIgZ28tdG8gaW50ZXJwb2xhdGlvbiBmdW5jdGlvbiIKLy9Gcm9tIGhlcmU6IGh0dHA6Ly9zLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5lLm5ldC9pbnRlcnBvbGF0aW9uLwppbmxpbmUgZmxvYXQgU21vb3RoU3RlcChmbG9hdCBwb3NpdGlvbikKewogICAgcmV0dXJuIChwb3NpdGlvbiAqIHBvc2l0aW9uICogKDMuMGYgLSAoMi4wZiAqIHBvc2l0aW9uKSkpOwp9CgoKLy8iT25lIHJhdGhlciBoYW5keSBhbGdvcml0aG0sIGVzcGVjaWFsbHkgd2hlbiB5b3UgZG9uJ3QgbmVjZXNzYXJpbHkga25vdyBob3cgdGhlIHRhcmdldCB3aWxsIGJlaGF2ZSBpbiB0aGUgZnV0dXJlCi8vKHN1Y2ggYXMgYSBjYW1lcmEgdHJhY2tpbmcgdGhlIHBsYXllcidzIGNoYXJhY3RlciksIGlzIHRvIGFwcGx5IHdlaWdodGVkIGF2ZXJhZ2UgdG8gdGhlIHZhbHVlLiIKLy9Gcm9tIGhlcmU6IGh0dHA6Ly9zLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5lLm5ldC9pbnRlcnBvbGF0aW9uLwovLwovL1RoZSBtb3ZlbWVudCBzdGFydHMgb2ZmIGZhc3QsIGFuZCByYXBpZGx5IGRlY2VsZXJhdGVzIGFzIHlvdSBhcHByb2FjaCB0aGUgZ29hbC4KLy9UZWNobmljYWxseSwgeW91IG5ldmVyIGFjdHVhbGx5IHJlYWNoIDEuMGYuIFRoZSBoaWdoZXIgJ3Nsb3dkb3duJyBpcywgdGhlIHNsb3dlciB5b3UgYXBwcm9hY2ggdGhlIGdvYWwuCmlubGluZSBmbG9hdCBXZWlnaHRlZEF2ZXJhZ2UoZmxvYXQgcG9zaXRpb24sIGZsb2F0IHNsb3dkb3duID0gMTUuMGYpCnsKICAgIHJldHVybiAoKHBvc2l0aW9uICogKHNsb3dkb3duIC0gMS4wZikpICsgMS4wZikgLyBzbG93ZG93bjsgCn0KCi8vVGhpcyBkb2Vzbid0IGFjdHVhbGx5IGVmZmVjdCB0aGUgdmFsdWUgYXQgYWxsLgppbmxpbmUgZmxvYXQgTGluZWFyRWFzZShmbG9hdCBwb3NpdGlvbikKewogICAgcmV0dXJuIHBvc2l0aW9uOwp9