X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fmenu%2Fanim%2Feasing.qc;h=3014fa80873a8aa479dcb8cb986c19bf54d9ea35;hp=94ea9cf0872da839e836be94e28cda460f029bab;hb=f72821fdcebe3ca01181a99727a06198de65ea08;hpb=ea48961feb50159e05ef56f38b7fd0ebc15cc64e diff --git a/qcsrc/menu/anim/easing.qc b/qcsrc/menu/anim/easing.qc index 94ea9cf08..3014fa808 100644 --- a/qcsrc/menu/anim/easing.qc +++ b/qcsrc/menu/anim/easing.qc @@ -1,72 +1,52 @@ -#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)); + }