Files
sinbad/scripts/animsprite.h
T
2025-02-03 11:19:50 +01:00

42 lines
1.1 KiB
C

#ifndef ANIMSPRITE_H
#define ANIMSPRITE_H
#include <raylib.h>
#include "sprite.h"
typedef struct {
Sprite sprite;
int currentFrame;
int maxFrame;
int framesCounter;
int framesSpeed;
float animTimer;
bool isVertical;
} AnimSprite;
void UpdateAnimSprite(AnimSprite *animSprite) {
animSprite->animTimer += GetFrameTime();
float frameTime = 1.0f / animSprite->framesSpeed;
if (animSprite->animTimer < frameTime) {
return;
}
animSprite->animTimer -= frameTime;
animSprite->currentFrame++;
if (animSprite->currentFrame >= animSprite->maxFrame) {
animSprite->currentFrame = 0;
}
Vector2 newFramePos = {
.x = animSprite->isVertical ? animSprite->sprite.sourceRec.x
: animSprite->currentFrame * animSprite->sprite.frameSize.x,
.y = animSprite->isVertical ? animSprite->currentFrame * animSprite->sprite.frameSize.y
: animSprite->sprite.sourceRec.y
};
UpdateSpriteSourceRec(&animSprite->sprite, &newFramePos);
}
#endif // ANIMSPRITE_H