According to this thread How to do an operation on a variable and assign it that new value for easing calculations? - #27 by absoluterookie with the help of you wonderul people i’ll give some back
Im a rookie. So this functions aren’t ment for pros, because they do way better.
But for those who still interested, here you go
fun backEaseInOut(e: Float, t: Float=0f, n: Float=100f, r: Float=100f):Float {
if (e < r / 2) return backEaseIn(e * 2f, 0f, n, r) * 0.5f + t;
else return backEaseOut(e * 2f - r, 0f, n, r) * 0.5f + n * 0.5f + t
}
fun backEaseOut(e: Float, t: Float=0f, n: Float=100f, r: Float=100f):Float {
return 100-backEaseIn(100-e)
}
fun backEaseIn(e: Float, t: Float=0f, n: Float=100f, r: Float=100f):Float {
var i = 1.70158f
var de=e/r
return (n * de * de * ((i + 1) * de - i) + t)
}
fun EaseInOut(e: Float, t: Float=0f, n: Float=100f, r: Float=100f):Float {
if (e < r / 2) return EaseIn(e * 2f, 0f, n, r) * 0.5f + t;
else return EaseOut(e * 2f - r, 0f, n, r) * 0.5f + n * 0.5f + t
}
fun EaseOut(e: Float, t: Float=0f, n: Float=100f, r: Float=100f):Float {
return 100-EaseIn(100-e)
}
fun EaseIn(e: Float, t: Float=0f, n: Float=100f, r: Float=100f):Float {
return n * e / r + t
}
fun strongEaseInOut(de: Float, t: Float=0f, n: Float=100f, r: Float=100f):Float {
var e=de
if (e < r / 2) return strongEaseIn(e * 2f, 0f, n, r) * 0.5f + t;
else return strongEaseOut(e * 2f - r, 0f, n, r) * 0.5f + n * 0.5f + t
}
fun strongEaseOut(e: Float, t: Float=0f, n: Float=100f, r: Float=100f):Float {
if(e>99){return 100f}
var de=e/r
return 100-strongEaseIn(100-e)
}
fun strongEaseIn(e: Float, t: Float=0f, n: Float=100f, r: Float=100f):Float {
var de=e
de /= r
return (n * de * e * e * e * e + t)/100000000
}
fun regularEaseInOut(de: Float, t: Float=0f, n: Float=100f, r: Float=100f):Float {
var e=de
if (e < r / 2) return regularEaseIn(e * 2f, 0f, n, r) * 0.5f + t;
else return regularEaseOut(e * 2f - r, 0f, n, r) * 0.5f + n * 0.5f + t
}
fun regularEaseOut(de: Float, t: Float=0f, n: Float=100f, r: Float=100f):Float {
var e=de
e /= r
return (- n * de * (e - 2) + t)/100
}
fun regularEaseIn(de: Float, t: Float=0f, n: Float=100f, r: Float=100f):Float {
var e=de
e /= r
return (n * e * de + t)/100
}
fun elasticIn(dt: Float): Float {
if(dt>99){return 100f}
var t=dt
t /= 100
if (t == 0f || t == 1f) return t
val pi2 = Math.PI * 2
val s = .3 / pi2 * Math.asin(1.0)
val o = t - 1f
return -(1 * Math.pow(2.0, 10.0 * o) * Math.sin((o - s) * pi2 / .3)).toFloat()*100
}
fun elasticOut(dt: Float): Float {
if(dt>99){return 100f}
var t=dt
t /= 100
if (t == 0f || t == 1f) return t
val pi2 = Math.PI * 2
val s = .3 / pi2 * Math.asin(1.0)
return (Math.pow(2.0, (-10 * t).toDouble()) * Math.sin((t - s) * pi2 / .3) + 1).toFloat()*100
}
fun elasticEaseInOut(dt:Float, e:Float=0f, n:Float=100f, r:Float=100f):Float {
if(dt>99){return 100f}
var t=dt
t /= r
val pi2 = Math.PI * 2
val s = .45 / pi2 * Math.asin(1.0)
var o = t * 2f
return if (o < 1) {
o -= 1f
(-0.5f * (Math.pow(2.0, (10 * o).toDouble()) * Math.sin((o - s) * pi2 / .45))).toFloat()*100
} else {
o -= 1f
(Math.pow(2.0, (-10 * o).toDouble()) * Math.sin((o - s) * pi2 / .45) * 0.5 + 1).toFloat()*100
}
}
fun bounceEaseInOut(e:Float, t:Float=0f, n:Float=100f, r:Float=100f):Float {
if (e < r / 2) return bounceEaseIn(e * 2f, 0f, n, r) * 0.5f + t;
else return bounceEaseOut(e * 2f - r, 0f, n, r) * 0.5f + n * 0.5f + t
}
fun bounceEaseIn(e:Float, t:Float=0f, n:Float=100f, r:Float=100f):Float {
return n - bounceEaseOut(r - e, 0f, n, r) + t
}
fun bounceEaseOut(dt:Float, b:Float=0f, c:Float=100f, d:Float=100f):Float {
var t=dt
t /= d
if (t < (1/2.75f)) {
return c*(7.5625f*t*t) + b
} else if (t < (2/2.75f)) {
var dt=t-(1.5f/2.75f)
return c*(7.5625f*(dt)*dt + .75f) + b
} else if (t < (2.5/2.75)) {
var dt=t-(2.25f/2.75f)
return c*(7.5625f*(dt)*dt + .9375f) + b
} else {
var dt=t-(2.625f/2.75f)
return c*(7.5625f*(dt)*dt + .984375f) + b
}
}
feel free to change it on your needs.##all functions are called by
function(Float 0..100)
Don’t have to pass the other arguments