From c4f76a165d59dcf82e0f14b189c416bdb74e97cb Mon Sep 17 00:00:00 2001 From: Aranud Date: Mon, 3 May 2021 17:19:51 +0200 Subject: [PATCH] cgame: test another transition prone view, refs #1208 --- src/cgame/cg_local.h | 1 + src/cgame/cg_playerstate.c | 1 + src/cgame/cg_view.c | 14 +++++++------- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/cgame/cg_local.h b/src/cgame/cg_local.h index 99f180547..08fc49876 100644 --- a/src/cgame/cg_local.h +++ b/src/cgame/cg_local.h @@ -1158,6 +1158,7 @@ typedef struct float duckChange; ///< for duck viewheight smoothing int duckTime; qboolean wasProne; + vec3_t proneOrigin; int weaponSetTime; ///< mg/mortar set time diff --git a/src/cgame/cg_playerstate.c b/src/cgame/cg_playerstate.c index 7027be48d..b3efd4cd9 100644 --- a/src/cgame/cg_playerstate.c +++ b/src/cgame/cg_playerstate.c @@ -552,5 +552,6 @@ void CG_TransitionPlayerState(playerState_t *ps, playerState_t *ops) cg.duckChange = ps->viewheight - ops->viewheight; cg.duckTime = cg.time; cg.wasProne = ops->eFlags & EF_PRONE; + VectorCopy(ops->origin, cg.proneOrigin); } } diff --git a/src/cgame/cg_view.c b/src/cgame/cg_view.c index 09546832f..fddfcf074 100644 --- a/src/cgame/cg_view.c +++ b/src/cgame/cg_view.c @@ -718,8 +718,8 @@ static void CG_OffsetFirstPersonView(void) } if (timeDelta < PRONE_TIME) { - //cg.refdef_current->vieworg[0] -= (forward[0] * 18) * (PRONE_TIME - timeDelta) / PRONE_TIME; - //cg.refdef_current->vieworg[1] -= (forward[1] * 18) * (PRONE_TIME - timeDelta) / PRONE_TIME; + cg.refdef_current->vieworg[0] += (cg.proneOrigin[0] - origin[0]) * (PRONE_TIME - timeDelta) / PRONE_TIME; + cg.refdef_current->vieworg[1] += (cg.proneOrigin[1] - origin[1]) * (PRONE_TIME - timeDelta) / PRONE_TIME; cg.refdef_current->vieworg[2] -= cg.duckChange * (PRONE_TIME - timeDelta) / PRONE_TIME; } } @@ -731,11 +731,11 @@ static void CG_OffsetFirstPersonView(void) } if (timeDelta < DUCK_TIME) { - //if (cg.wasProne) - //{ - // cg.refdef_current->vieworg[0] += (forward[0] * 18) * (DUCK_TIME - timeDelta) / DUCK_TIME; - // cg.refdef_current->vieworg[1] += (forward[1] * 18) * (DUCK_TIME - timeDelta) / DUCK_TIME; - //} + if (cg.wasProne) + { + cg.refdef_current->vieworg[0] -= (cg.proneOrigin[0] - origin[0]) * (DUCK_TIME - timeDelta) / DUCK_TIME; + cg.refdef_current->vieworg[1] -= (cg.proneOrigin[1] - origin[1]) * (DUCK_TIME - timeDelta) / DUCK_TIME; + } cg.refdef_current->vieworg[2] -= cg.duckChange * (DUCK_TIME - timeDelta) / DUCK_TIME; } }