From c451f64742eceff803c84deeae7c1e31cc410692 Mon Sep 17 00:00:00 2001 From: Marco Cawthorne Date: Sun, 7 Aug 2022 14:14:26 -0700 Subject: [PATCH] Clean up our player enumflags. --- src/shared/player.qc | 43 +++++++++++++++++++++---------------------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/src/shared/player.qc b/src/shared/player.qc index 83fc96b..5faa84b 100644 --- a/src/shared/player.qc +++ b/src/shared/player.qc @@ -17,29 +17,14 @@ /* all potential SendFlags bits we can possibly send */ enumflags { - PLAYER_KEEPALIVE, - PLAYER_MODELINDEX, - PLAYER_ORIGIN, - PLAYER_ORIGIN_Z, - PLAYER_ANGLES_X, - PLAYER_ANGLES_Y, - PLAYER_COLORMAP, - PLAYER_VELOCITY, - PLAYER_VELOCITY_Z, - PLAYER_FLAGS, - PLAYER_WEAPON, - PLAYER_ITEMS, - PLAYER_HEALTH, - PLAYER_ARMOR, - PLAYER_MOVETYPE, - PLAYER_VIEWOFS, - PLAYER_TOPFRAME, + PLAYER_TOPFRAME = PLAYER_CUSTOMFIELDSTART, PLAYER_BOTTOMFRAME, PLAYER_AMMO1, PLAYER_AMMO2, PLAYER_AMMO3, - PLAYER_UNUSED1, - PLAYER_UNUSED2 + PLAYER_UNUSED5, + PLAYER_UNUSED6, + PLAYER_UNUSED7 }; class player:NSClientPlayer @@ -363,20 +348,34 @@ player::SendEntity float player::SendEntity(entity ePEnt, float fChanged) { + bool is_spec = false; + bool spectarget = false; + /* don't broadcast invisible players */ if (IsFakeSpectator() && ePEnt != this) return (0); if (!GetModelindex() && ePEnt != this) return (0); - if (ePEnt != self) { + /* figure out if we should optimise this player */ + if (ePEnt.flags & FL_CLIENT && ePEnt != this) { + NSClientSpectator sp = (NSClientSpectator)ePEnt; + is_spec = (sp.IsFakeSpectator() || sp.IsRealSpectator()); + spectarget = (is_spec == true && edict_num(sp.spec_ent) == this); + } + + /* if we're a spectator of any type and spectate this player */ + if (ePEnt != this && spectarget == false) { fChanged &= ~PLAYER_ITEMS; fChanged &= ~PLAYER_HEALTH; - fChanged &= ~PLAYER_ARMOR; - fChanged &= ~PLAYER_VIEWOFS; + fChanged &= ~PLAYER_TIMINGS; fChanged &= ~PLAYER_AMMO1; fChanged &= ~PLAYER_AMMO2; fChanged &= ~PLAYER_AMMO3; + fChanged &= ~PLAYER_FLAGS; + fChanged &= ~PLAYER_PUNCHANGLE; + fChanged &= ~PLAYER_VIEWZOOM; + fChanged &= ~PLAYER_SPECTATE; } WriteByte(MSG_ENTITY, ENT_PLAYER);