diff --git a/src/client/defs.h b/src/client/defs.h index 94d71bfd..2ff5e195 100644 --- a/src/client/defs.h +++ b/src/client/defs.h @@ -190,5 +190,5 @@ struct float m_flShakeTime; float m_flShakeAmp; - entity m_pWeaponFX; + vector m_vecLag; } g_seats[4], *pSeat; diff --git a/src/client/view.qc b/src/client/view.qc index 475ecc6b..f2de875f 100644 --- a/src/client/view.qc +++ b/src/client/view.qc @@ -14,6 +14,8 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +var int autocvar_v_modellag = 0; + void View_Init(void) { @@ -124,7 +126,20 @@ View_DrawViewModel(void) m_eViewModel.frame1time, ClientGame_ModelEvent); makevectors(view_angles); - m_eViewModel.angles = view_angles; + + if (autocvar_v_modellag == 0) + m_eViewModel.angles = view_angles; + else { + makevectors(pSeat->m_vecLag); + pSeat->m_vecLag = v_forward; + makevectors(view_angles); + pSeat->m_vecLag[0] = Math_Lerp(pSeat->m_vecLag[0], v_forward[0], clframetime * 20); + pSeat->m_vecLag[1] = Math_Lerp(pSeat->m_vecLag[1], v_forward[1], clframetime * 20); + pSeat->m_vecLag[2] = Math_Lerp(pSeat->m_vecLag[2], v_forward[2], clframetime * 20); + pSeat->m_vecLag = vectoangles(pSeat->m_vecLag); + m_eViewModel.angles = pSeat->m_vecLag; + } + m_eViewModel.colormap = pSeat->m_ePlayer.colormap; /* now apply the scale hack */ diff --git a/src/shared/player.qc b/src/shared/player.qc index 2600cbb0..0f199553 100644 --- a/src/shared/player.qc +++ b/src/shared/player.qc @@ -72,6 +72,12 @@ base_player::ReceiveEntity(float new, float fl) flags = readfloat(); gflags = readfloat(); pmove_flags = readfloat(); + + /* mainly used for other players receiving us */ + if (flags & FL_CROUCHING) + setsize(self, PHY_HULL_CROUCHED_MIN, PHY_HULL_CROUCHED_MAX); + else + setsize(self, PHY_HULL_MIN, PHY_HULL_MAX); } if (fl & PLAYER_WEAPON) activeweapon = readbyte();