1 #ifndef ANIM_ANIMATION_H
2 #define ANIM_ANIMATION_H
3 #include "../oo/base.qh"
4 void setterDummy(entity, float);
5 CLASS(Animation, Object)
6 METHOD(Animation, configureAnimation, void(entity, entity, void(entity, float), float, float, float, float));
7 METHOD(Animation, update, void(entity, float, float, float));
8 METHOD(Animation, setTimeStartEnd, void(entity, float, float));
9 METHOD(Animation, setTimeStartDuration, void(entity, float, float));
10 METHOD(Animation, setValueStartEnd, void(entity, float, float));
11 METHOD(Animation, setValueStartDelta, void(entity, float, float));
12 METHOD(Animation, setObjectSetter, void(entity, entity, void(entity, float)));
13 METHOD(Animation, tick, void(entity, float));
14 METHOD(Animation, calcValue, float(entity, float, float, float, float));
15 METHOD(Animation, isStopped, float(entity));
16 METHOD(Animation, stopAnim, void(entity));
17 METHOD(Animation, resumeAnim, void(entity));
18 METHOD(Animation, isFinished, float(entity));
19 METHOD(Animation, finishAnim, void(entity));
20 ATTRIB(Animation, object, entity, NULL)
21 ATTRIB(Animation, setter, void(entity, float), setterDummy)
22 ATTRIB(Animation, value, float, 0)
23 ATTRIB(Animation, startTime, float, 0)
24 ATTRIB(Animation, duration, float, 0)
25 ATTRIB(Animation, startValue, float, 0)
26 ATTRIB(Animation, delta, float, 0)
27 ATTRIB(Animation, stopped, float, false)
28 ATTRIB(Animation, finished, float, false)
33 void Animation_configureAnimation(entity me, entity obj, void(entity, float) objSetter, float animStartTime, float animDuration, float animStartValue, float animEndValue)
35 me.setObjectSetter(me, obj, objSetter);
36 me.setTimeStartDuration(me, animStartTime, animDuration);
37 me.setValueStartEnd(me, animStartValue, animEndValue);
40 void Animation_update(entity me, float animDuration, float animStartValue, float animEndValue)
42 me.setTimeStartDuration(me, time, animDuration);
43 me.setValueStartEnd(me, animStartValue, animEndValue);
46 void Animation_setTimeStartEnd(entity me, float s, float e)
52 void Animation_setTimeStartDuration(entity me, float s, float d)
58 void Animation_setValueStartEnd(entity me, float s, float e)
64 void Animation_setValueStartDelta(entity me, float s, float d)
70 void Animation_setObjectSetter(entity me, entity o, void(entity, float) s)
76 void Animation_tick(entity me, float tickTime)
78 if (me.isStopped(me) || me.isFinished(me) || (tickTime < me.startTime))
81 if (tickTime >= (me.startTime + me.duration))
84 me.value = me.calcValue(me, (tickTime - me.startTime), me.duration, me.startValue, me.delta);
86 me.setter(me.object, me.value);
89 float Animation_calcValue(entity me, float tickTime, float animDuration, float animStartValue, float animDelta)
91 return animStartValue;
94 float Animation_isStopped(entity me)
99 void Animation_stopAnim(entity me)
104 void Animation_resumeAnim(entity me)
109 float Animation_isFinished(entity me)
114 void Animation_finishAnim(entity me)
116 me.value = me.delta + me.startValue;
118 me.setter(me.object, me.value);
121 void setterDummy(entity obj, float objValue)