本文整理汇总了C++中IPredictionSystem类的典型用法代码示例。如果您正苦于以下问题:C++ IPredictionSystem类的具体用法?C++ IPredictionSystem怎么用?C++ IPredictionSystem使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了IPredictionSystem类的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: AddRecipient
void CRecipientFilter::AddRecipient( const CBasePlayer *player )
{
Assert( player );
if ( !player )
return;
int index = player->entindex();
// If we're predicting and this is not the first time we've predicted this sound
// then don't send it to the local player again.
if ( m_bUsingPredictionRules )
{
// Only add local player if this is the first time doing prediction
if ( g_RecipientFilterPredictionSystem.GetSuppressHost() == player )
{
return;
}
}
// Already in list
if ( m_Recipients.Find( index ) != m_Recipients.InvalidIndex() )
return;
m_Recipients.AddToTail( index );
}
示例2: UsePredictionRules
void CRecipientFilter::UsePredictionRules( void )
{
if ( m_bUsingPredictionRules )
return;
m_bUsingPredictionRules = true;
// Cull list now, if needed
if ( GetRecipientCount() == 0 )
return;
CBasePlayer *pPlayer = ToBasePlayer( (CBaseEntity*)g_RecipientFilterPredictionSystem.GetSuppressHost() );
if ( pPlayer)
{
RemoveRecipient( pPlayer );
if ( pPlayer->IsSplitScreenPlayer() )
{
RemoveRecipient( pPlayer->GetSplitScreenPlayerOwner() );
}
else
{
CUtlVector< CHandle< CBasePlayer > > &players = pPlayer->GetSplitScreenPlayers();
for ( int i = 0; i < players.Count(); ++i )
{
RemoveRecipient( players[ i ].Get() );
}
}
}
}
示例3: AddRecipient
void C_RecipientFilter::AddRecipient( C_BasePlayer *player )
{
Assert( player );
if ( !player )
return;
int index = player->index;
// If we're predicting and this is not the first time we've predicted this sound
// then don't send it to the local player again.
if ( m_bUsingPredictionRules )
{
Assert( player == C_BasePlayer::GetLocalPlayer() );
Assert( prediction->InPrediction() );
// Only add local player if this is the first time doing prediction
if ( !g_RecipientFilterPredictionSystem.CanPredict() )
{
return;
}
}
// Already in list
if ( m_Recipients.Find( index ) != m_Recipients.InvalidIndex() )
return;
// this is a client side filter, only add the local player
if ( !player->IsLocalPlayer() )
return;
m_Recipients.AddToTail( index );
}
示例4: UsePredictionRules
void C_RecipientFilter::UsePredictionRules( void )
{
if ( m_bUsingPredictionRules )
return;
if ( !prediction->InPrediction() )
{
Assert( 0 );
return;
}
C_BasePlayer *local = C_BasePlayer::GetLocalPlayer();
if ( !local )
{
Assert( 0 );
return;
}
m_bUsingPredictionRules = true;
// Cull list now, if needed
int c = GetRecipientCount();
if ( c == 0 )
return;
if ( !g_RecipientFilterPredictionSystem.CanPredict() )
{
RemoveRecipient( local );
}
}
示例5: UsePredictionRules
void CRecipientFilter::UsePredictionRules( void )
{
if ( m_bUsingPredictionRules )
return;
m_bUsingPredictionRules = true;
// Cull list now, if needed
if ( GetRecipientCount() == 0 )
return;
CBasePlayer *pPlayer = ToBasePlayer( (CBaseEntity*)g_RecipientFilterPredictionSystem.GetSuppressHost() );
if ( pPlayer)
{
RemoveRecipient( pPlayer );
}
}