From 54dc82452ca12dfbef13731a9aeb1872642457a5 Mon Sep 17 00:00:00 2001 From: AJ Martinez Date: Thu, 14 Sep 2023 15:52:42 -0700 Subject: [PATCH 1/2] Wind/current uses drawangle --- src/p_spec.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/p_spec.c b/src/p_spec.c index 8563d19c5..f9138f210 100644 --- a/src/p_spec.c +++ b/src/p_spec.c @@ -9271,11 +9271,11 @@ void T_Pusher(pusher_t *p) if (!demo.playback) { - angle_t angle = thing->player->boostangle; + angle_t angle = thing->player->drawangle; if (thing->angle - angle > ANGLE_180) - thing->player->boostangle = angle - (angle - thing->angle) / 8; + thing->player->drawangle = angle - (angle - thing->angle) / 8; else - thing->player->boostangle = angle + (thing->angle - angle) / 8; + thing->player->drawangle = angle + (thing->angle - angle) / 8; //P_SetPlayerAngle(thing->player, thing->angle); } From 882deda563b3e89ed099a7385d96ab90be137f36 Mon Sep 17 00:00:00 2001 From: AJ Martinez Date: Thu, 14 Sep 2023 16:03:41 -0700 Subject: [PATCH 2/2] Do pusher drawangle changes in demos --- src/p_spec.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/p_spec.c b/src/p_spec.c index f9138f210..d6fcd3f82 100644 --- a/src/p_spec.c +++ b/src/p_spec.c @@ -9268,16 +9268,15 @@ void T_Pusher(pusher_t *p) thing->player->carry = CR_SLIDING; thing->angle = R_PointToAngle2(0, 0, xspeed, yspeed); - - if (!demo.playback) - { - angle_t angle = thing->player->drawangle; - if (thing->angle - angle > ANGLE_180) - thing->player->drawangle = angle - (angle - thing->angle) / 8; - else - thing->player->drawangle = angle + (thing->angle - angle) / 8; - //P_SetPlayerAngle(thing->player, thing->angle); - } + // Previously modified boostangle, and didn't run in demo playback. + // (Probably because SRB2's demo format was already storing and applying the camera changes made here?) + // Whatever the case, this is drawangle now so that players don't fly out of pusher setpieces. + angle_t angle = thing->player->drawangle; + if (thing->angle - angle > ANGLE_180) + thing->player->drawangle = angle - (angle - thing->angle) / 8; + else + thing->player->drawangle = angle + (thing->angle - angle) / 8; + //P_SetPlayerAngle(thing->player, thing->angle); }