10 if (anim.x == e.animstate_startframe)
12 if (anim.y == e.animstate_numframes)
14 if (anim.z == e.animstate_framerate)
22 e.animstate_startframe = anim.x;
23 e.animstate_numframes = anim.y;
24 e.animstate_framerate = anim.z;
26 e.animstate_endtime = e.animstate_starttime + e.animstate_numframes / e.animstate_framerate;
27 e.animstate_looping = looping;
28 e.animstate_override =
override;
29 e.frame = e.animstate_startframe;
38 if (
time >= e.animstate_endtime)
40 if (e.animstate_looping)
42 e.animstate_starttime = e.animstate_endtime;
43 e.animstate_endtime = e.animstate_starttime + e.animstate_numframes / e.animstate_framerate;
45 e.animstate_override =
false;
47 float frameofs =
bound(0, (
time - e.animstate_starttime) * e.animstate_framerate, e.animstate_numframes - 1);
48 e.frame = e.animstate_startframe + frameofs;
void anim_set(entity e, vector anim, bool looping, bool override, bool restart)
const int EF_RESTARTANIM_BIT
void anim_update(entity e)
Update e.frame based on its animstate relative to time.
vector(float skel, float bonenum) _skel_get_boneabs_hidden
#define BITXOR_ASSIGN(a, b)