2 CLASS(Animation) EXTENDS(Object)
3 METHOD(Animation, setTimeStartEnd, void(entity, float, float))
4 METHOD(Animation, setTimeStartDuration, void(entity, float, float))
5 METHOD(Animation, setValueStartEnd, void(entity, float, float))
6 METHOD(Animation, setValueStartDelta, void(entity, float, float))
7 METHOD(Animation, setObjectSetter, void(entity, entity, void(entity, float)))
8 METHOD(Animation, setMath, void(entity, float(float, float, float, float)))
9 METHOD(Animation, tick, void(entity, float))
10 METHOD(Animation, isStopped, float(entity))
11 METHOD(Animation, stopAnim, void(entity))
12 METHOD(Animation, resumeAnim, void(entity))
13 METHOD(Animation, isFinished, float(entity))
14 METHOD(Animation, finishAnim, void(entity))
15 ATTRIB(Animation, object, entity, NULL)
16 ATTRIB(Animation, setter, void(entity, float), setterDummy)
17 ATTRIB(Animation, math, float(float, float, float, float), animLinear)
18 ATTRIB(Animation, value, float, 0)
19 ATTRIB(Animation, startTime, float, 0)
20 ATTRIB(Animation, duration, float, 0)
21 ATTRIB(Animation, startValue, float, 0)
22 ATTRIB(Animation, delta, float, 0)
23 ATTRIB(Animation, stopped, float, FALSE)
24 ATTRIB(Animation, finished, float, FALSE)
26 entity makeHostedAnimation(entity, void(entity, float), float(float, float, float, float), float, float, float);
27 entity makeAnimation(entity, void(entity, float), float(float, float, float, float), float, float, float);
28 float animLinear(float, float, float, float);
29 float animQuadIn(float, float, float, float);
30 float animQuadOut(float, float, float, float);
31 float animQuadInOut(float, float, float, float);
32 void setterDummy(entity, float);
36 entity makeHostedAnimation(entity obj, void(entity, float) setter, float(float, float, float, float) func, float duration, float start, float end)
39 me = makeAnimation(obj, setter, func, duration, start, end);
40 anim.addAnim(anim, me);
44 entity makeAnimation(entity obj, void(entity, float) setter, float(float, float, float, float) func, float duration, float start, float end)
47 me = spawnAnimation();
48 me.setObjectSetter(me, obj, setter);
50 me.setTimeStartDuration(me, time, duration);
51 me.setValueStartEnd(me, start, end);
55 void setTimeStartEndAnimation(entity me, float s, float e)
61 void setTimeStartDurationAnimation(entity me, float s, float d)
67 void setValueStartEndAnimation(entity me, float s, float e)
73 void setValueStartDeltaAnimation(entity me, float s, float d)
79 void setObjectSetterAnimation(entity me, entity o, void(entity, float) s)
85 void setMathAnimation(entity me, float(float, float, float, float) func)
90 void tickAnimation(entity me, float time)
92 if (me.isStopped(me) || me.isFinished(me))
95 if (time >= (me.startTime + me.duration))
98 me.value = me.math((time - me.startTime), me.duration, me.startValue, me.delta);
100 me.setter(me.object, me.value);
103 float isStoppedAnimation(entity me)
108 void stopAnimAnimation(entity me)
113 void resumeAnimAnimation(entity me)
118 float isFinishedAnimation(entity me)
123 void finishAnimAnimation(entity me)
125 me.value = me.delta + me.startValue;
129 float animLinear(float time, float duration, float start, float delta)
131 return (delta * (time / duration)) + start;
134 float animQuadIn(float time, float duration, float start, float delta)
136 float frac = time / duration;
137 return (delta * frac * frac) + start;
140 float animQuadOut(float time, float duration, float start, float delta)
142 float frac = time / duration;
143 return (-delta * frac * (frac - 2)) + start;
146 float animQuadInOut(float time, float duration, float start, float delta)
148 if (time < (duration / 2))
150 return animQuadIn(time, (duration / 2), start, (delta / 2));
154 return animQuadOut((time - (duration / 2)), (duration / 2), (start + (delta / 2)), (delta / 2));
158 void setterDummy(entity object, float value)