diff --git a/include/arc/math/math.h b/include/arc/math/math.h new file mode 100644 index 0000000..e69de29 diff --git a/src/graphics/sdl/sprite.c b/src/graphics/sdl/sprite.c new file mode 100644 index 0000000..4aca163 --- /dev/null +++ b/src/graphics/sdl/sprite.c @@ -0,0 +1,27 @@ +#ifdef ARC_SDL +#include "arc/graphics/sdl/sprite.h" +#include "arc/graphics/sdl/spritesheet.h" +#include "arc/graphics/sdl/renderer.h" +#include + +void ARC_Sprite_Create(ARC_Sprite **sprite, ARC_Spritesheet *spritesheet, ARC_Rect *frames){ + *sprite = (ARC_Sprite *)malloc(sizeof(ARC_Sprite)); + (*sprite)->spritesheet = spritesheet; + (*sprite)->frames = frames; + (*sprite)->frameIndex = (uint32_t *)malloc(sizeof(uint32_t)); + *(*sprite)->frameIndex = 0; +} + +void ARC_Sprite_Destroy(ARC_Sprite *sprite){ + free(sprite); +} + +void ARC_Sprite_Render(ARC_Sprite *sprite, ARC_Renderer *renderer, ARC_Rect *renderBounds){ + SDL_RenderCopy(renderer->renderer, sprite->spritesheet->texture, (SDL_Rect *)sprite->frames, (SDL_Rect *)renderBounds); +} + +ARC_Rect *ARC_Sprite_GetBounds(ARC_Sprite *sprite){ + return sprite->frames + *sprite->frameIndex; +} + +#endif // ARC_SDL \ No newline at end of file