mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-11-24 13:11:33 +00:00
- Changed P_XYMovement() to not call P_SlideMove() if the act of being
blocked changed the actor's velocity. I'm not entirely happy with this, but it gets push-activated force fields to work. SVN r1875 (trunk)
This commit is contained in:
parent
6a5ab0edc0
commit
2ad438d696
3 changed files with 40 additions and 24 deletions
|
@ -1,4 +1,7 @@
|
|||
September 24, 2009
|
||||
- Changed P_XYMovement() to not call P_SlideMove() if the act of being
|
||||
blocked changed the actor's velocity. I'm not entirely happy with this,
|
||||
but it gets push-activated force fields to work.
|
||||
- Fixed: FMultiPatchTexture::CopyTrueColorPixels() should clear the buffer
|
||||
first before drawing into it if the copy op passed to it is OP_OVERWRITE.
|
||||
FTexture::FillBuffer() sets this to erase whatever texture might have been
|
||||
|
|
|
@ -2796,7 +2796,9 @@ FUNC(LS_ForceField)
|
|||
if (it != NULL)
|
||||
{
|
||||
P_DamageMobj (it, NULL, NULL, 16, NAME_None);
|
||||
P_ThrustMobj (it, it->angle + ANGLE_180, 0x7D000);
|
||||
angle_t an = (it->angle + ANGLE_180) >> ANGLETOFINESHIFT;
|
||||
it->velx = FixedMul(0x7D000, finecosine[an]);
|
||||
it->vely = FixedMul(0x7D000, finesine[an]);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -1736,6 +1736,8 @@ fixed_t P_XYMovement (AActor *mo, fixed_t scrollx, fixed_t scrolly)
|
|||
*/
|
||||
// [RH] If walking on a slope, stay on the slope
|
||||
// killough 3/15/98: Allow objects to drop off
|
||||
fixed_t startvelx = mo->velx, startvely = mo->vely;
|
||||
|
||||
if (!P_TryMove (mo, ptryx, ptryy, true, walkplane, tm))
|
||||
{
|
||||
// blocked move
|
||||
|
@ -1759,6 +1761,10 @@ fixed_t P_XYMovement (AActor *mo, fixed_t scrollx, fixed_t scrolly)
|
|||
{
|
||||
mo->velz = WATER_JUMP_SPEED;
|
||||
}
|
||||
// If the blocked move executed any push specials that changed the
|
||||
// actor's velocity, do not attempt to slide.
|
||||
if (mo->velx == startvelx && mo->vely == startvely)
|
||||
{
|
||||
if (player && (i_compatflags & COMPATF_WALLRUN))
|
||||
{
|
||||
// [RH] Here is the key to wall running: The move is clipped using its full speed.
|
||||
|
@ -1790,6 +1796,11 @@ fixed_t P_XYMovement (AActor *mo, fixed_t scrollx, fixed_t scrolly)
|
|||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
steps = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // slide against another actor
|
||||
fixed_t tx, ty;
|
||||
tx = 0, ty = onestepy;
|
||||
|
|
Loading…
Reference in a new issue