From 7062960a7cd369cd0b44d268fc7e17f29ec94494 Mon Sep 17 00:00:00 2001 From: "Anton E. Gavrilov" Date: Mon, 27 Mar 2000 12:55:50 +0000 Subject: [PATCH] Possibly fixed the jumping bug. --- common/pmove.c | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/common/pmove.c b/common/pmove.c index 864544a..5ca8a4d 100644 --- a/common/pmove.c +++ b/common/pmove.c @@ -59,6 +59,7 @@ vec3_t player_maxs = {16, 16, 32}; // #define PM_WATERFRICTION 1 void PM_InitBoxHull (void); +void PM_CategorizePosition (void); void Pmove_Init (void) { @@ -520,6 +521,7 @@ void PM_AirMove (void) float fmove, smove; vec3_t wishdir; float wishspeed; + vec3_t original; fmove = pmove.cmd.forwardmove; smove = pmove.cmd.sidemove; @@ -562,8 +564,20 @@ void PM_AirMove (void) // add gravity pmove.velocity[2] -= movevars.entgravity * movevars.gravity * frametime; - PM_FlyMove (); - + if ( ! PM_FlyMove() ) + { + // the move didn't block + PM_CategorizePosition (); + if (onground != -1) // but we're on ground now + { +// Con_Printf ("Jumping bug!\n"); + VectorCopy (pmove.origin, original); + // Calculate correct velocity + PM_FlyMove(); + // Restore position + VectorCopy (original, pmove.origin); + } + }; } //Con_Printf("airmove:vec: %4.2f %4.2f %4.2f\n", @@ -580,10 +594,10 @@ void PM_AirMove (void) /* ============= -PM_CatagorizePosition +PM_CategorizePosition ============= */ -void PM_CatagorizePosition (void) +void PM_CategorizePosition (void) { vec3_t point; int cont; @@ -887,7 +901,7 @@ void PlayerMove (void) VectorCopy (pmove.cmd.angles, pmove.angles); // set onground, watertype, and waterlevel - PM_CatagorizePosition (); + PM_CategorizePosition (); if (waterlevel == 2) CheckWaterJump (); @@ -908,6 +922,6 @@ void PlayerMove (void) PM_AirMove (); // set onground, watertype, and waterlevel for final spot - PM_CatagorizePosition (); + PM_CategorizePosition (); }