67 lines
1.6 KiB
C++
67 lines
1.6 KiB
C++
/***
|
|
*
|
|
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
|
|
*
|
|
* See the file LICENSE attached with the sources for usage details.
|
|
*
|
|
****/
|
|
|
|
.float framerate;
|
|
|
|
void Sprite_AnimateThink(void)
|
|
{
|
|
if( self.frame >= self.maxframe ) {
|
|
if (self.health == 1) {
|
|
remove(self);
|
|
} else {
|
|
self.frame = 0;
|
|
}
|
|
} else {
|
|
self.frame += 1;
|
|
}
|
|
|
|
self.nextthink = time + ( 1 / self.framerate );
|
|
}
|
|
|
|
void Sprite_Animated(void)
|
|
{
|
|
self.origin_x = readcoord();
|
|
self.origin_y = readcoord();
|
|
self.origin_z = readcoord();
|
|
self.modelindex = readfloat();
|
|
self.framerate = readfloat();
|
|
self.scale = readfloat();
|
|
self.alpha = readfloat();
|
|
self.effects = readfloat();
|
|
self.colormod[0] = readfloat();
|
|
self.colormod[1] = readfloat();
|
|
self.colormod[2] = readfloat();
|
|
self.think = Sprite_AnimateThink;
|
|
self.drawmask = MASK_ENGINE;
|
|
self.nextthink = time + ( 1 / self.framerate );
|
|
self.maxframe = modelframecount( self.modelindex );
|
|
self.health = 0; /* repeats */
|
|
setorigin(self, self.origin);
|
|
}
|
|
|
|
void Sprite_ParseEvent(void)
|
|
{
|
|
entity sprite = spawn();
|
|
sprite.origin[0] = readcoord();
|
|
sprite.origin[1] = readcoord();
|
|
sprite.origin[2] = readcoord();
|
|
sprite.modelindex = readfloat();
|
|
sprite.framerate = readfloat();
|
|
sprite.scale = readfloat();
|
|
sprite.alpha = readfloat();
|
|
sprite.effects = readfloat();
|
|
sprite.colormod[0] = readfloat();
|
|
sprite.colormod[1] = readfloat();
|
|
sprite.colormod[2] = readfloat();
|
|
sprite.think = Sprite_AnimateThink;
|
|
sprite.drawmask = MASK_ENGINE;
|
|
sprite.nextthink = time + ( 1 / self.framerate );
|
|
sprite.maxframe = modelframecount( self.modelindex );
|
|
sprite.health = 1; /* does not repeat */
|
|
setorigin(sprite, self.origin);
|
|
}
|