diff --git a/src/r_patchrotation.c b/src/r_patchrotation.c index ab6c0de97..e2506baa5 100644 --- a/src/r_patchrotation.c +++ b/src/r_patchrotation.c @@ -141,11 +141,16 @@ patch_t *Patch_GetRotatedSprite( patch = W_CachePatchNum(lump, PU_SPRITE); - if (sprinfo->available) + if (in_bit_array(sprinfo->available, frame)) { xpivot = sprinfo->pivot[frame].x; ypivot = sprinfo->pivot[frame].y; } + else if (in_bit_array(sprinfo->available, SPRINFO_DEFAULT_PIVOT)) + { + xpivot = sprinfo->pivot[SPRINFO_DEFAULT_PIVOT].x; + ypivot = sprinfo->pivot[SPRINFO_DEFAULT_PIVOT].y; + } else { xpivot = patch->leftoffset; diff --git a/src/r_picformats.h b/src/r_picformats.h index 0a822cc48..700424814 100644 --- a/src/r_picformats.h +++ b/src/r_picformats.h @@ -100,8 +100,9 @@ typedef struct typedef struct { - spriteframepivot_t pivot[64]; - boolean available; + spriteframepivot_t pivot[64 + 1]; +#define SPRINFO_DEFAULT_PIVOT (64) + UINT8 available[BIT_ARRAY_SIZE(64 + 1)]; // 1 extra for default_pivot } spriteinfo_t; // Portable Network Graphics