diff --git a/src/corelib/render.c b/src/corelib/render.c index 2e231c8..eed33aa 100644 --- a/src/corelib/render.c +++ b/src/corelib/render.c @@ -84,7 +84,7 @@ void _exec_sprite_cmd(const drawcmd_t* cmd) { SDL_FPoint origin = {destrect.w * sprite->origin.x, destrect.h * sprite->origin.y}; SDL_RenderCopyExF(g_context.renderer, sprite->texture, &sprite->uv, &destrect, sprite->rot, - &origin, SDL_FLIP_NONE); + &origin, sprite->flip); } static @@ -278,6 +278,7 @@ sprite_t render_text(const char* str, SDL_FRect area, text_style_t style) { .x=area.x, .y=area.y, .texture=t, .uv=srcr, + .flip=SDL_FLIP_NONE, }; } return (sprite_t) { @@ -286,7 +287,8 @@ sprite_t render_text(const char* str, SDL_FRect area, text_style_t style) { .sx=0, .sy=0, .texture=NULL, .uv={0,0,0,0}, - .x=0,.y=0 + .x=0,.y=0, + .flip=SDL_FLIP_NONE, }; } @@ -443,7 +445,8 @@ sprite_t make_sprite(const char* file, float x, float y) { .sx=1.0,.sy=1.0, .rot=0, .depth=RLAYER_SPRITES, - .uv=(SDL_Rect){0,0,0,0} + .uv=(SDL_Rect){0,0,0,0}, + .flip=SDL_FLIP_NONE, }; SDL_QueryTexture(sprite.texture, NULL, NULL, &sprite.uv.w, &sprite.uv.h); sprite.origin.x = -(float)sprite.uv.h/2.f; sprite.origin.y = -(float)sprite.uv.h/2.f; @@ -460,6 +463,7 @@ sprite_t sprite_from_spritesheet(spritesheet_t *sheet, int index) { .rot=0, .depth=RLAYER_SPRITES, .uv=rect, + .flip=SDL_FLIP_NONE, }; } diff --git a/src/corelib/render.h b/src/corelib/render.h index 2d92c5d..8fba629 100644 --- a/src/corelib/render.h +++ b/src/corelib/render.h @@ -55,6 +55,7 @@ typedef struct sprite_t { float rot; // rotation around origin of the sprite depth_t depth; // depth to render at, lower is on top, higher is on bottom SDL_Rect uv; // the source rect to render from the texture + SDL_RendererFlip flip; // the flipped state of the sprite } sprite_t; // a drawable and transformable texture sprite typedef struct rectshape_t {