CRecipientFilter

From Valve Developer Community
Revision as of 11:08, 16 May 2008 by TomEdwards (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

The CRecipientFilter class enables the server to pick and choose which clients it passes an item of data to. Most server-to-client communication supports it.

Alongside adding/removing clients individually or all at once, it can filter by:

Examples

CRecipientFilter MyFilter;
	MyFilter.AddRecipientsByPVS( GetAbsOrigin() );	// Origin of the host entity; clients within its PVS will be added.
	MyFilter.MakeReliable();			// All this does is make m_bReliable true! Best to use it anyway.
CRecipientFilter MyInverseFilter;
	MyInverseFilter.AddAllPlayers();
	MyInverseFilter.RemoveRecipientsByPVS( GetAbsOrigin() );	// Only players outside the PVS
	MyInverseFilter.MakeReliable();

Derived classes

Several derived classes exist to automate the creation of common filters, with constructors set up to directly return an appropriately-configured filter.

CBroadcastRecipientFilter()
All players.
CLocalPlayerFilter()
The local player. Client-side only, needless to say!
Todo: Useful how?
CPASFilter(origin)
All players in the origin's PAS.
CPVSFilter(origin)
All players in the origin's PVS.
CSingleUserRecipientFilter(CBasePlayer)
A specific player.

Example

To make an entity produce a sound from another location:

EmitSound( CPASFilter(pPuppet->GetAbsOrigin()),pPuppet->entindex(),"Ventriloquist.Hello" );

See also

Tip.pngTip:You don't need to use the filter entities as a programmer - you already have direct access to the relevant data.