diff --git a/core/src/sprite.c b/core/src/sprite.c index 3524502..a0d5414 100644 --- a/core/src/sprite.c +++ b/core/src/sprite.c @@ -19,16 +19,23 @@ struct Sprite { SDL_RendererFlip flip_state; }; -Sprite* sprite_from_spritesheet(Spritesheet* sheet, size_t initial_frame) { +Sprite* sprite_new_empty() { Sprite* self = malloc(sizeof(Sprite)); - ASSERT_RETURN(self != NULL, NULL, "Failed to allocate memory for new sprite."); + *self = (Sprite){ + .spritesheet = NULL, + .tile_index = 0, + .origin = ZeroVector, + .flip_state = SDL_FLIP_NONE, + }; + return self; +} +Sprite* sprite_from_spritesheet(Spritesheet* sheet, size_t initial_frame) { + Sprite* self = sprite_new_empty(); self->spritesheet = sheet; - self->origin = (Vector){0.5f, 0.5f}; + self->origin = VectorFrom(0.5f); self->tile_index = initial_frame; - self->flip_state = SDL_FLIP_NONE; - return self; } diff --git a/core/src/sprite.h b/core/src/sprite.h index 8fdf0ac..b75279c 100644 --- a/core/src/sprite.h +++ b/core/src/sprite.h @@ -10,6 +10,7 @@ // Forward declaration of the private sprite struct typedef struct Sprite Sprite; +extern Sprite* sprite_new_empty(); extern Sprite* sprite_from_spritesheet(Spritesheet* sheet, size_t initial_frame); extern void sprite_destroy(Sprite* sprite);