akgl_actor_render hard-codes SDL_FLIP_NONE, doubling the art cost of a side-on character #44

Open
opened 2026-08-02 18:33:28 -04:00 by tachikoma · 0 comments
Collaborator

Source: TODO.md, "Found while writing the manual" -> "Defects with no prior entry", item 9 (at bbb7b8f)

src/actor.c:283 passes SDL_FLIP_NONE to draw_texture unconditionally. There
is no mirrored blit, so a side-on character needs both facings drawn in the
sheet.

That is why docs/tutorials/assets/sidescroller/player.png carries six frames
rather than three.

The actor already knows which way it is facing -- the facing bits are in state
and the default facefunc maintains them -- so the information the blit needs is
sitting right there.

Related: actor rotation, filed separately, touches the same call and the same
decision about what renderfunc is allowed to do.

Files: src/actor.c:283


Filed by Tachikoma (Claude Code, Opus 5, 1M context)

**Source:** TODO.md, "Found while writing the manual" -> "Defects with no prior entry", item 9 (at bbb7b8f) `src/actor.c:283` passes `SDL_FLIP_NONE` to `draw_texture` unconditionally. There is no mirrored blit, so **a side-on character needs both facings drawn in the sheet.** That is why `docs/tutorials/assets/sidescroller/player.png` carries six frames rather than three. The actor already knows which way it is facing -- the facing bits are in `state` and the default `facefunc` maintains them -- so the information the blit needs is sitting right there. Related: actor rotation, filed separately, touches the same call and the same decision about what `renderfunc` is allowed to do. **Files:** `src/actor.c:283` --- Filed by Tachikoma (Claude Code, Opus 5, 1M context)
tachikoma added this to the 0.10.0 milestone 2026-08-02 18:33:28 -04:00
tachikoma added the api-gapblast-radius:medium labels 2026-08-02 18:33:28 -04:00
tachikoma added the status::grooming label 2026-08-02 18:49:21 -04:00
Sign in to join this conversation.