Xonotic QuakeC
The free, fast arena FPS with crisp movement and a wide array of weapons
anim.qc
Go to the documentation of this file.
1#include "anim.qh"
2
6void anim_set(entity e, vector anim, bool looping, bool override, bool restart)
7{
8 if (!anim) return; // no animation was given to us! We can't use this.
9
10 if (anim.x == e.animstate_startframe)
11 {
12 if (anim.y == e.animstate_numframes)
13 {
14 if (anim.z == e.animstate_framerate)
15 {
16 if (!restart) return;
17 if (anim.y == 1) // ZYM animation
19 }
20 }
21 }
22 e.animstate_startframe = anim.x;
23 e.animstate_numframes = anim.y;
24 e.animstate_framerate = anim.z;
25 e.animstate_starttime = time - 0.1 * frametime; // shift it a little bit into the past to prevent float inaccuracy hiccups
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;
30 e.frame1time = time;
31}
32
37{
38 if (time >= e.animstate_endtime)
39 {
40 if (e.animstate_looping)
41 {
42 e.animstate_starttime = e.animstate_endtime;
43 e.animstate_endtime = e.animstate_starttime + e.animstate_numframes / e.animstate_framerate;
44 }
45 e.animstate_override = false;
46 }
47 float frameofs = bound(0, (time - e.animstate_starttime) * e.animstate_framerate, e.animstate_numframes - 1);
48 e.frame = e.animstate_startframe + frameofs;
49}
void anim_update(entity e)
Update e.frame based on its animstate relative to time.
Definition anim.qc:36
void anim_set(entity e, vector anim, bool looping, bool override, bool restart)
Definition anim.qc:6
var entity(vector mins, vector maxs,.entity tofield) findbox_tofield_OrFallback
float frametime
float time
const int EF_RESTARTANIM_BIT
#define BITXOR_ASSIGN(a, b)
Definition common.qh:107
entity anim
Definition menu.qh:25
float bound(float min, float value, float max)
vector
Definition self.qh:92