-#ifdef INTERFACE
-CLASS(Easing) EXTENDS(Animation)
- METHOD(Easing, calcValue, float(entity, float, float, float, float))
- METHOD(Easing, setMath, void(entity, float(float, float, float, float)))
- ATTRIB(Easing, math, float(float, float, float, float), easingLinear)
-ENDCLASS(Easing)
-entity makeHostedEasing(entity, void(entity, float), float(float, float, float, float), float, float, float);
-entity makeEasing(entity, void(entity, float), float(float, float, float, float), float, float, float, float);
-float easingLinear(float, float, float, float);
-float easingQuadIn(float, float, float, float);
-float easingQuadOut(float, float, float, float);
-float easingQuadInOut(float, float, float, float);
-#endif
+#include "easing.qh"
-#ifdef IMPLEMENTATION
-entity makeHostedEasing(entity obj, void(entity, float) objSetter, float(float, float, float, float) func, float animDuration, float animStartValue, float animEnd)
-{
- entity me;
- me = makeEasing(obj, objSetter, func, time, animDuration, animStartValue, animEnd);
- anim.addAnim(anim, me);
- return me;
-}
+#include "../menu.qh"
+#include "keyframe.qh"
-entity makeEasing(entity obj, void(entity, float) objSetter, float(float, float, float, float) func, float animStartTime, float animDuration, float animStartValue, float animEnd)
-{
- entity me;
- me = spawnEasing();
- me.configureAnimation(me, obj, objSetter, animStartTime, animDuration, animStartValue, animEnd);
- me.setMath(me, func);
- return me;
-}
-
-float Easing_calcValue(entity me, float tickTime, float animDuration, float animStart, float animDelta)
-{
- return me.math(tickTime, animDuration, animStart, animDelta);
-}
+ entity makeHostedEasing(entity obj, void(entity, float) objSetter, float(float, float, float, float) func, float animDuration, float animStartValue, float animEnd)
+ {
+ entity this = makeEasing(obj, objSetter, func, time, animDuration, animStartValue, animEnd);
+ anim.addAnim(anim, this);
+ return this;
+ }
-void Easing_setMath(entity me, float(float, float, float, float) func)
-{
- me.math = func;
-}
+ entity makeEasing(entity obj, void(entity, float) objSetter, float(float, float, float, float) func, float animStartTime, float animDuration, float animStartValue, float animEnd)
+ {
+ entity this = NEW(Easing);
+ this.configureAnimation(this, obj, objSetter, animStartTime, animDuration, animStartValue, animEnd);
+ this.setMath(this, func);
+ return this;
+ }
-float easingLinear(float tickTime, float animDuration, float animStart, float animDelta)
-{
- return (animDelta * (tickTime / animDuration)) + animStart;
-}
+ METHOD(Easing, calcValue, float(entity this, float tickTime, float animDuration, float animStart, float animDelta))
+ {
+ return this.math(tickTime, animDuration, animStart, animDelta);
+ }
-float easingQuadIn(float tickTime, float animDuration, float animStart, float animDelta)
-{
- float frac = tickTime / animDuration;
- return (animDelta * frac * frac) + animStart;
-}
+ METHOD(Easing, setMath, void(entity this, float(float, float, float, float) func))
+ {
+ this.math = func;
+ }
-float easingQuadOut(float tickTime, float animDuration, float animStart, float animDelta)
-{
- float frac = tickTime / animDuration;
- return (-animDelta * frac * (frac - 2)) + animStart;
-}
+ float easingLinear(float tickTime, float animDuration, float animStart, float animDelta)
+ {
+ return (animDelta * (tickTime / animDuration)) + animStart;
+ }
-float easingQuadInOut(float tickTime, float animDuration, float animStart, float animDelta)
-{
- if (tickTime < (animDuration / 2))
+ float easingQuadIn(float tickTime, float animDuration, float animStart, float animDelta)
{
- return easingQuadIn(tickTime, (animDuration / 2), animStart, (animDelta / 2));
+ float frac = tickTime / animDuration;
+ return (animDelta * frac * frac) + animStart;
}
- else
+
+ float easingQuadOut(float tickTime, float animDuration, float animStart, float animDelta)
{
- return easingQuadOut((tickTime - (animDuration / 2)), (animDuration / 2), (animStart + (animDelta / 2)), (animDelta / 2));
+ float frac = tickTime / animDuration;
+ return (-animDelta * frac * (frac - 2)) + animStart;
}
-}
-#endif
+ float easingQuadInOut(float tickTime, float animDuration, float animStart, float animDelta)
+ {
+ if (tickTime < (animDuration / 2)) return easingQuadIn(tickTime, (animDuration / 2), animStart, (animDelta / 2));
+ else return easingQuadOut((tickTime - (animDuration / 2)), (animDuration / 2), (animStart + (animDelta / 2)), (animDelta / 2));
+ }