Position checkpoint parts correctly in reverse gravity

This commit is contained in:
Lach 2025-09-06 15:43:00 +10:00
parent f40138b41d
commit 12b9775290
2 changed files with 20 additions and 0 deletions

View file

@ -323,6 +323,11 @@ private:
arm()->angle = angle - ANGLE_90;
arm()->rollangle = -(ANGLE_90) + pivot();
if (arm()->eflags & MFE_VERTICALFLIP)
{
arm()->rollangle = InvAngle(arm()->rollangle);
}
}
void pull()
@ -337,8 +342,18 @@ private:
P_GetMobjHead(this) + (FixedMul(r, FSIN(pivot())) * P_MobjFlip(this))
);
if (orb()->eflags & MFE_VERTICALFLIP)
{
orb()->z -= orb()->height;
}
P_MoveOrigin(arm(), orb()->x, orb()->y, orb()->z);
if (arm()->eflags & MFE_VERTICALFLIP)
{
arm()->z += orb()->height - arm()->height;
}
if (speed())
{
orb()->afterimages();

View file

@ -14582,6 +14582,11 @@ static boolean P_SetupSpawnedMapThing(mapthing_t *mthing, mobj_t *mobj)
}
case MT_CHECKPOINT_END:
{
if (mthing->options & MTF_OBJECTFLIP)
{
mobj->eflags |= MFE_VERTICALFLIP;
mobj->flags2 |= MF2_OBJECTFLIP;
}
Obj_LinkCheckpoint(mobj);
break;
}