本文整理汇总了C++中WorldModel::ourPlayers方法的典型用法代码示例。如果您正苦于以下问题:C++ WorldModel::ourPlayers方法的具体用法?C++ WorldModel::ourPlayers怎么用?C++ WorldModel::ourPlayers使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WorldModel
的用法示例。
在下文中一共展示了WorldModel::ourPlayers方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: pos
/*!
*/
void
CrossGenerator::updateReceivers( const WorldModel & wm )
{
static const double shootable_dist2 = std::pow( 16.0, 2 ); // Magic Number
static const double min_cross_dist2
= std::pow( ServerParam::i().defaultKickableArea() * 2.2, 2 );
static const double max_cross_dist2
= std::pow( inertia_n_step_distance( ServerParam::i().ballSpeedMax(),
9,
ServerParam::i().ballDecay() ),
2 );
const Vector2D goal = ServerParam::i().theirTeamGoalPos();
const bool is_self_passer = ( M_passer->unum() == wm.self().unum() );
for ( AbstractPlayerCont::const_iterator
p = wm.ourPlayers().begin(),
end = wm.ourPlayers().end();
p != end;
++p )
{
if ( *p == M_passer ) continue;
if ( is_self_passer )
{
if ( (*p)->isGhost() ) continue;
if ( (*p)->posCount() >= 4 ) continue;
if ( (*p)->pos().x > wm.offsideLineX() ) continue;
}
else
{
// ignore other players
if ( (*p)->unum() != wm.self().unum() )
{
continue;
}
}
if ( (*p)->pos().dist2( goal ) > shootable_dist2 ) continue;
double d2 = (*p)->pos().dist2( M_first_point );
if ( d2 < min_cross_dist2 ) continue;
if ( max_cross_dist2 < d2 ) continue;
M_receiver_candidates.push_back( *p );
#ifdef DEBUG_UPDATE_OPPONENT
dlog.addText( Logger::CROSS,
"Cross receiver %d pos(%.1f %.1f)",
(*p)->unum(),
(*p)->pos().x, (*p)->pos().y );
#endif
}
}