Merge branch 'wallscrollbylinedef-fix' into 'master'

Wallscrollbylinedef fix

See commit description.

See merge request !43
This commit is contained in:
Monster Iestyn 2016-10-22 09:52:07 -04:00
commit 326ad8a14f
1 changed files with 1 additions and 26 deletions

View File

@ -6717,31 +6717,6 @@ static void Add_Scroller(INT32 type, fixed_t dx, fixed_t dy, INT32 control, INT3
P_AddThinker(&s->thinker);
}
/** Adds a wall scroller.
* Scroll amount is rotated with respect to wall's linedef first, so that
* scrolling towards the wall in a perpendicular direction is translated into
* vertical motion, while scrolling along the wall in a parallel direction is
* translated into horizontal motion.
*
* \param dx x speed of scrolling or its acceleration.
* \param dy y speed of scrolling or its acceleration.
* \param l Line whose front side will scroll.
* \param control Sector whose heights control this scroller's effect
* remotely, or -1 if there is no control sector.
* \param accel Nonzero for an accelerative effect.
* \sa Add_Scroller, P_SpawnScrollers
*/
static void Add_WallScroller(fixed_t dx, fixed_t dy, const line_t *l, INT32 control, INT32 accel)
{
fixed_t x = abs(l->dx), y = abs(l->dy), d;
if (y > x)
d = x, x = y, y = d;
d = FixedDiv(x, FINESINE((tantoangle[FixedDiv(y, x) >> DBITS] + ANGLE_90) >> ANGLETOFINESHIFT));
x = -FixedDiv(FixedMul(dy, l->dy) + FixedMul(dx, l->dx), d);
y = -FixedDiv(FixedMul(dx, l->dy) - FixedMul(dy, l->dx), d);
Add_Scroller(sc_side, x, y, control, *l->sidenum, accel, 0);
}
/** Initializes the scrollers.
*
* \todo Get rid of all the magic numbers.
@ -6824,7 +6799,7 @@ static void P_SpawnScrollers(void)
case 502:
for (s = -1; (s = P_FindLineFromLineTag(l, s)) >= 0 ;)
if (s != (INT32)i)
Add_WallScroller(dx, dy, lines+s, control, accel);
Add_Scroller(sc_side, dx, dy, control, lines[s].sidenum[0], accel, 0);
break;
case 505: