]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/menu/anim/easing.qc
Nades code: don't use booleans as array indexes for m_projectile, optimize spawn_held...
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / anim / easing.qc
index f1962719f8b9a7dfe2f07076eb70165828d67000..3014fa80873a8aa479dcb8cb986c19bf54d9ea35 100644 (file)
@@ -1,74 +1,52 @@
-#ifndef ANIM_EASING_H
-#define ANIM_EASING_H
-#include "animation.qc"
-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);
-CLASS(Easing, 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)
-#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 = NEW(Easing);
-       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));
+       }