player class: Use parent method OptimiseChangedFlags() to cull some fields from being networked to players other than yourself
This commit is contained in:
parent
365276affe
commit
2d8bfa42df
1 changed files with 9 additions and 31 deletions
|
@ -510,61 +510,39 @@ player::SendEntity
|
||||||
=================
|
=================
|
||||||
*/
|
*/
|
||||||
float
|
float
|
||||||
player::SendEntity(entity ePEnt, float fChanged)
|
player::SendEntity(entity ePEnt, float flChanged)
|
||||||
{
|
{
|
||||||
bool is_spec = false;
|
|
||||||
bool spectarget = false;
|
|
||||||
|
|
||||||
/* don't broadcast invisible players */
|
/* don't broadcast invisible players */
|
||||||
if (IsFakeSpectator() && ePEnt != this)
|
if (IsFakeSpectator() && ePEnt != this)
|
||||||
return (0);
|
return (0);
|
||||||
if (!GetModelindex() && ePEnt != this)
|
if (!GetModelindex() && ePEnt != this)
|
||||||
return (0);
|
return (0);
|
||||||
|
|
||||||
/* figure out if we should optimise this player */
|
flChanged = OptimiseChangedFlags(ePEnt, flChanged);
|
||||||
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_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);
|
WriteByte(MSG_ENTITY, ENT_PLAYER);
|
||||||
WriteFloat(MSG_ENTITY, fChanged);
|
WriteFloat(MSG_ENTITY, flChanged);
|
||||||
|
|
||||||
/* the generic client attributes */
|
/* the generic client attributes */
|
||||||
NSClientPlayer::SendEntity(ePEnt, fChanged);
|
NSClientPlayer::SendEntity(ePEnt, flChanged);
|
||||||
|
|
||||||
if (fChanged & PLAYER_TOPFRAME) {
|
if (flChanged & PLAYER_TOPFRAME) {
|
||||||
WriteByte(MSG_ENTITY, anim_top);
|
WriteByte(MSG_ENTITY, anim_top);
|
||||||
WriteFloat(MSG_ENTITY, anim_top_time);
|
WriteFloat(MSG_ENTITY, anim_top_time);
|
||||||
WriteFloat(MSG_ENTITY, anim_top_delay);
|
WriteFloat(MSG_ENTITY, anim_top_delay);
|
||||||
}
|
}
|
||||||
if (fChanged & PLAYER_BOTTOMFRAME) {
|
if (flChanged & PLAYER_BOTTOMFRAME) {
|
||||||
WriteByte(MSG_ENTITY, anim_bottom);
|
WriteByte(MSG_ENTITY, anim_bottom);
|
||||||
WriteFloat(MSG_ENTITY, anim_bottom_time);
|
WriteFloat(MSG_ENTITY, anim_bottom_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fChanged & PLAYER_AMMO1) {
|
if (flChanged & PLAYER_AMMO1) {
|
||||||
WriteByte(MSG_ENTITY, mag_sbs);
|
WriteByte(MSG_ENTITY, mag_sbs);
|
||||||
WriteByte(MSG_ENTITY, mag_dbs);
|
WriteByte(MSG_ENTITY, mag_dbs);
|
||||||
WriteByte(MSG_ENTITY, mag_rpg);
|
WriteByte(MSG_ENTITY, mag_rpg);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fChanged & PLAYER_AMMO2) {
|
if (flChanged & PLAYER_AMMO2) {
|
||||||
WriteByte(MSG_ENTITY, m_iAmmoRockets);
|
WriteByte(MSG_ENTITY, m_iAmmoRockets);
|
||||||
WriteByte(MSG_ENTITY, m_iAmmoNails);
|
WriteByte(MSG_ENTITY, m_iAmmoNails);
|
||||||
WriteByte(MSG_ENTITY, m_iAmmoCells);
|
WriteByte(MSG_ENTITY, m_iAmmoCells);
|
||||||
|
@ -573,7 +551,7 @@ player::SendEntity(entity ePEnt, float fChanged)
|
||||||
WriteByte(MSG_ENTITY, m_iAmmoMedikit);
|
WriteByte(MSG_ENTITY, m_iAmmoMedikit);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fChanged & PLAYER_AMMO3) {
|
if (flChanged & PLAYER_AMMO3) {
|
||||||
WriteByte(MSG_ENTITY, mode_tempstate);
|
WriteByte(MSG_ENTITY, mode_tempstate);
|
||||||
WriteByte(MSG_ENTITY, classtype);
|
WriteByte(MSG_ENTITY, classtype);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue