diff --git a/src/r_picformats.c b/src/r_picformats.c index 5e90353591a4fcf1a63573437697efe3b986eaed..94452e20e8a2e660cf228142e4afe945cb40ac77 100644 --- a/src/r_picformats.c +++ b/src/r_picformats.c @@ -1583,6 +1583,8 @@ static void R_ParseSpriteInfoFrame(struct ParseSpriteInfoState *parser, boolean UINT16 frameID = 0; UINT16 frameEndID = UINT16_MAX; + boolean usingDeprecatedPivot = false; + struct ParsedSpriteInfoFrame frame = { .pivotX = INT32_MAX, .pivotY = INT32_MAX @@ -1673,17 +1675,33 @@ static void R_ParseSpriteInfoFrame(struct ParseSpriteInfoState *parser, boolean } while (strcmp(sprinfoToken,"}")!=0) { - if (stricmp(sprinfoToken, "XPIVOT")==0) + if (stricmp(sprinfoToken, "ROTATIONXPIVOT")==0) + { + Z_Free(sprinfoToken); + sprinfoToken = M_GetToken(NULL); + frame.pivotX = atoi(sprinfoToken); + } + else if (stricmp(sprinfoToken, "ROTATIONYPIVOT")==0) + { + Z_Free(sprinfoToken); + sprinfoToken = M_GetToken(NULL); + frame.pivotY = atoi(sprinfoToken); + } + // TODO: 2.3: Delete + else if (stricmp(sprinfoToken, "XPIVOT")==0) { Z_Free(sprinfoToken); sprinfoToken = M_GetToken(NULL); frame.pivotX = atoi(sprinfoToken); + usingDeprecatedPivot = true; } + // TODO: 2.3: Delete else if (stricmp(sprinfoToken, "YPIVOT")==0) { Z_Free(sprinfoToken); sprinfoToken = M_GetToken(NULL); frame.pivotY = atoi(sprinfoToken); + usingDeprecatedPivot = true; } // TODO: 2.3: Delete else if (stricmp(sprinfoToken, "ROTAXIS")==0) @@ -1722,6 +1740,13 @@ static void R_ParseSpriteInfoFrame(struct ParseSpriteInfoState *parser, boolean } } + // TODO: 2.3: Delete + if (usingDeprecatedPivot) + { + parser->info->frames[SPRINFO_DEFAULT_FRAME].pivot.available = true; + set_bit_array(parser->info->available, SPRINFO_DEFAULT_FRAME); + } + if (parser->spr2) { INT32 i;