added frame index selection
This commit is contained in:
parent
52b0038d42
commit
27b8ca961a
2 changed files with 18 additions and 0 deletions
|
|
@ -62,6 +62,14 @@ void ARC_Sprite_Render(ARC_Sprite *sprite, ARC_Renderer *renderer, ARC_Rect *ren
|
|||
*/
|
||||
void ARC_Sprite_RenderRotated(ARC_Sprite *sprite, ARC_Renderer *renderer, ARC_Rect *renderBounds, ARC_Point *center, double angle);
|
||||
|
||||
/**
|
||||
* @brief switches ARC_Sprite's frame to specified index
|
||||
*
|
||||
* @param sprite ARC_Sprite that is having its frame set
|
||||
* @param index uint32_t to set ARC_Sprite's frame index to
|
||||
*/
|
||||
void ARC_Sprite_SetFrameIndex(ARC_Sprite *sprite, uint32_t index);
|
||||
|
||||
/**
|
||||
* @brief switches ARC_Sprite's frames to next for animation
|
||||
*
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
#include "arc/graphics/sdl/renderer.h"
|
||||
#include "arc/math/point.h"
|
||||
#include "arc/math/rectangle.h"
|
||||
#include "arc/std/errno.h"
|
||||
#include <stdlib.h>
|
||||
|
||||
void ARC_Sprite_Create(ARC_Sprite **sprite, ARC_Spritesheet *spritesheet, ARC_Array *frames){
|
||||
|
|
@ -35,6 +36,15 @@ void ARC_Sprite_RenderRotated(ARC_Sprite *sprite, ARC_Renderer *renderer, ARC_Re
|
|||
SDL_RenderCopyEx((SDL_Renderer *)renderer, sprite->spritesheet->texture, (SDL_Rect *)sprite->frames->data + *sprite->frameIndex, (SDL_Rect *)renderBounds, angle, (SDL_Point *)center, SDL_FLIP_NONE);
|
||||
}
|
||||
|
||||
void ARC_Sprite_SetFrameIndex(ARC_Sprite *sprite, uint32_t index){
|
||||
if(sprite->frames->size <= index){
|
||||
arc_errno = ARC_ERRNO_DATA;
|
||||
ARC_DEBUG_LOG(arc_errno, "in ARC_Sprite_SetFrameIndex(sprite, %d); index out of bounds", index);
|
||||
return;
|
||||
}
|
||||
*sprite->frameIndex = index;
|
||||
}
|
||||
|
||||
void ARC_Sprite_IterateFrame(ARC_Sprite *sprite){
|
||||
++*sprite->frameIndex;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue