2019-01-04 20:39:07 +00:00
|
|
|
/***
|
|
|
|
*
|
2019-01-16 16:43:50 +00:00
|
|
|
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
|
|
|
|
*
|
|
|
|
* See the file LICENSE attached with the sources for usage details.
|
2019-01-04 20:39:07 +00:00
|
|
|
*
|
|
|
|
****/
|
|
|
|
|
2019-01-21 02:00:14 +00:00
|
|
|
class sprite
|
|
|
|
{
|
|
|
|
float framerate;
|
|
|
|
int loops;
|
|
|
|
int maxframe;
|
|
|
|
|
|
|
|
virtual void() think;
|
|
|
|
};
|
2019-01-04 20:39:07 +00:00
|
|
|
|
2019-01-21 02:00:14 +00:00
|
|
|
void sprite::think(void)
|
2019-01-10 10:14:50 +00:00
|
|
|
{
|
2019-03-14 19:13:02 +00:00
|
|
|
if (frame >= (maxframe-1)) {
|
2019-02-20 13:30:16 +00:00
|
|
|
if (loops == 0) {
|
2019-01-21 02:00:14 +00:00
|
|
|
remove(this);
|
2019-01-04 20:39:07 +00:00
|
|
|
} else {
|
2019-01-21 02:00:14 +00:00
|
|
|
frame = 0;
|
2019-01-04 20:39:07 +00:00
|
|
|
}
|
|
|
|
} else {
|
2019-01-21 02:00:14 +00:00
|
|
|
frame += 1;
|
2019-01-04 20:39:07 +00:00
|
|
|
}
|
2019-01-04 20:58:19 +00:00
|
|
|
|
2019-01-21 02:00:14 +00:00
|
|
|
nextthink = time + (1 / framerate);
|
2019-01-04 20:39:07 +00:00
|
|
|
}
|
|
|
|
|
2019-01-10 10:14:50 +00:00
|
|
|
void Sprite_Animated(void)
|
|
|
|
{
|
2019-01-21 02:00:14 +00:00
|
|
|
spawnfunc_sprite();
|
|
|
|
sprite me = (sprite)self;
|
2019-03-13 21:03:57 +00:00
|
|
|
me.origin[0] = readcoord();
|
|
|
|
me.origin[1] = readcoord();
|
|
|
|
me.origin[2] = readcoord();
|
2019-01-21 02:00:14 +00:00
|
|
|
me.modelindex = readfloat();
|
|
|
|
me.framerate = readfloat();
|
|
|
|
me.scale = readfloat();
|
|
|
|
me.alpha = readfloat();
|
|
|
|
me.effects = readfloat();
|
|
|
|
me.colormod[0] = readfloat();
|
|
|
|
me.colormod[1] = readfloat();
|
|
|
|
me.colormod[2] = readfloat();
|
|
|
|
me.drawmask = MASK_ENGINE;
|
|
|
|
me.nextthink = time + ( 1 / me.framerate );
|
|
|
|
me.maxframe = modelframecount( me.modelindex );
|
2019-02-20 13:30:16 +00:00
|
|
|
me.loops = 1; /* repeats */
|
2019-01-21 02:00:14 +00:00
|
|
|
setorigin(me, me.origin);
|
2019-01-04 20:39:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void Sprite_ParseEvent(void)
|
|
|
|
{
|
2019-01-21 02:00:14 +00:00
|
|
|
sprite spr = spawn(sprite);
|
|
|
|
spr.origin[0] = readcoord();
|
|
|
|
spr.origin[1] = readcoord();
|
|
|
|
spr.origin[2] = readcoord();
|
|
|
|
spr.modelindex = readfloat();
|
|
|
|
spr.framerate = readfloat();
|
|
|
|
spr.scale = readfloat();
|
|
|
|
spr.alpha = readfloat();
|
|
|
|
spr.effects = readfloat();
|
|
|
|
spr.colormod[0] = readfloat();
|
|
|
|
spr.colormod[1] = readfloat();
|
|
|
|
spr.colormod[2] = readfloat();
|
|
|
|
spr.drawmask = MASK_ENGINE;
|
|
|
|
spr.nextthink = time + ( 1 / spr.framerate );
|
|
|
|
spr.maxframe = modelframecount( spr.modelindex );
|
2019-02-20 13:30:16 +00:00
|
|
|
spr.loops = 0; /* does not repeat */
|
2019-01-21 02:00:14 +00:00
|
|
|
setorigin(spr, spr.origin);
|
2019-01-04 20:39:07 +00:00
|
|
|
}
|