From ab31ae024200cd03c52146d6466462281e8fbfe1 Mon Sep 17 00:00:00 2001 From: Marco Cawthorne Date: Tue, 8 Nov 2022 20:29:10 -0800 Subject: [PATCH] Fix player animations and attachment from not showing up since player drawing is handled much differently. --- src/client/player.qc | 4 +--- src/shared/player.qc | 31 +++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/src/client/player.qc b/src/client/player.qc index ae55aa6..c8f890f 100644 --- a/src/client/player.qc +++ b/src/client/player.qc @@ -156,9 +156,7 @@ Player_PreDraw(NSClientPlayer pp, int thirdperson) Weapons_PreDraw(pl, thirdperson); - pl.Physics_SetViewParms(); - Animation_PlayerUpdate((player)pl); - Animation_TimerUpdate((player)pl, clframetime); + //pl.Physics_SetViewParms(); if (thirdperson) Player_HandleWeaponModel(pl, thirdperson); diff --git a/src/shared/player.qc b/src/shared/player.qc index a7ab6a1..fabf75a 100644 --- a/src/shared/player.qc +++ b/src/shared/player.qc @@ -67,11 +67,13 @@ class player:NSClientPlayer PREDICTED_INT(mode_tempstate); virtual void(void) Physics_Jump; + virtual void UpdatePlayerAnimation(void); #ifdef CLIENT ////virtual void(void) draw; //virtual float() predraw; //virtual void(void) postdraw; + virtual void UpdatePlayerAttachments(bool); virtual void(float,float) ReceiveEntity; virtual void(void) PredictPreFrame; virtual void(void) PredictPostFrame; @@ -84,6 +86,35 @@ class player:NSClientPlayer }; #ifdef CLIENT +void Animation_PlayerUpdate(player); +void Animation_TimerUpdate(player, float); +#endif + +void +player::UpdatePlayerAnimation(void) +{ +#ifdef CLIENT + /* calculate our skeletal progression */ + Animation_PlayerUpdate(this); + /* advance animation timers */ + Animation_TimerUpdate(this, clframetime); +#endif +} + +#ifdef CLIENT +void Player_HandleWeaponModel(NSClientPlayer pp, float thirdperson); +void Player_Flashlight(NSClientPlayer); + +void +player::UpdatePlayerAttachments(bool visible) +{ + Player_Flashlight(this); + + /* FIXME: this needs to be incorporated and simplified, now that we can handle it all in-class */ + if (visible) + Player_HandleWeaponModel(this, visible ? 1:0); +} + void Weapons_AmmoUpdate(entity); void HUD_AmmoNotify_Check(player pl); void HUD_ItemNotify_Check(player pl);