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) |
TomEdwards (talk | contribs) m (→Examples) |
||
| Line 15: | Line 15: | ||
'''CRecipientFilter''' MyInverseFilter; | '''CRecipientFilter''' MyInverseFilter; | ||
MyInverseFilter.AddAllPlayers(); | MyInverseFilter.AddAllPlayers(); | ||
MyInverseFilter.RemoveRecipientsByPVS( GetAbsOrigin() ); ''// | MyInverseFilter.RemoveRecipientsByPVS( GetAbsOrigin() ); ''// Leaving only players '''outside''' the PVS'' | ||
MyInverseFilter.MakeReliable(); | MyInverseFilter.MakeReliable(); | ||
Revision as of 10:29, 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.
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" );