CRecipientFilter: Difference between revisions
Jump to navigation
Jump to search
Tip:You don't need to use the filter entities as a programmer - you already have direct access to the relevant data.
TomEdwards (talk | contribs) m (→Examples) |
TomEdwards (talk | contribs) (→Derived classes: how did I miss this?) |
||
| Line 30: | Line 30: | ||
;<code>CSingleUserRecipientFilter([[CBasePlayer]])</code> | ;<code>CSingleUserRecipientFilter([[CBasePlayer]])</code> | ||
:A specific player. | :A specific player. | ||
;<code>CTeamRecipientFilter([[int]] team, [[bool]] isReliable = false)</code> | |||
:A multiplayer [[team]]. | |||
;<code>CLocalPlayerFilter()</code> | ;<code>CLocalPlayerFilter()</code> | ||
:The local player. Used as a dummy filter when calling functions requiring one on the client. | :The local player. Used as a dummy filter when calling functions requiring one on the client. | ||
Revision as of 11:51, 16 May 2008
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() ); // Leaving 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 instance.
CBroadcastRecipientFilter()- All players.
CPASFilter(origin)- All players in the origin's PAS.
CPVSFilter(origin)- All players in the origin's PVS.
CSingleUserRecipientFilter(CBasePlayer)- A specific player.
CTeamRecipientFilter(int team, bool isReliable = false)- A multiplayer team.
CLocalPlayerFilter()- The local player. Used as a dummy filter when calling functions requiring one on the client.
Example
To make an entity produce a sound from another location:
EmitSound( CPASFilter(pPuppet->GetAbsOrigin()),pPuppet->entindex(),"Ventriloquist.Hello" );