added animation stuff to sprite
This commit is contained in:
parent
2e97d908d8
commit
4c980d8690
2 changed files with 36 additions and 0 deletions
|
|
@ -21,6 +21,9 @@ void ARC_Sprite_Create(ARC_Sprite **sprite, ARC_Spritesheet *spritesheet, ARC_Ar
|
|||
ARC_Sprite_SetOpacity(*sprite, 1.0f);
|
||||
|
||||
(*sprite)->axis = ARC_SPRITE_AXIS_NONE;
|
||||
|
||||
(*sprite)->animationCurrentTime = 0.0f;
|
||||
(*sprite)->animationTime = 1.0f / 24.0f;
|
||||
}
|
||||
|
||||
void ARC_Sprite_Destroy(ARC_Sprite *sprite){
|
||||
|
|
@ -72,6 +75,15 @@ void ARC_Sprite_IterateFrame(ARC_Sprite *sprite){
|
|||
}
|
||||
}
|
||||
|
||||
void ARC_Sprite_AnimateFrame(ARC_Sprite *sprite, float deltatime){
|
||||
sprite->animationCurrentTime += deltatime;
|
||||
|
||||
if(sprite->animationCurrentTime >= sprite->animationTime){
|
||||
sprite->animationCurrentTime -= sprite->animationTime;
|
||||
ARC_Sprite_IterateFrame(sprite);
|
||||
}
|
||||
}
|
||||
|
||||
void ARC_Sprite_SetFrameIndex(ARC_Sprite *sprite, uint32_t index){
|
||||
if(sprite->frames.size <= index){
|
||||
arc_errno = ARC_ERRNO_DATA;
|
||||
|
|
@ -96,6 +108,11 @@ void ARC_Sprite_SetOpacity(ARC_Sprite *sprite, float opacity){
|
|||
}
|
||||
}
|
||||
|
||||
void ARC_Sprite_SetFrameRate(ARC_Sprite *sprite, float rate){
|
||||
sprite->animationCurrentTime = 0;
|
||||
sprite->animationTime = rate;
|
||||
}
|
||||
|
||||
uint32_t ARC_Sprite_GetFrameIndex(ARC_Sprite *sprite){
|
||||
return sprite->frameIndex;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue