本文整理汇总了C++中Aircraft::GetWorldPosition方法的典型用法代码示例。如果您正苦于以下问题:C++ Aircraft::GetWorldPosition方法的具体用法?C++ Aircraft::GetWorldPosition怎么用?C++ Aircraft::GetWorldPosition使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Aircraft
的用法示例。
在下文中一共展示了Aircraft::GetWorldPosition方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: distance
void World::Impl::GuideMissiles()
{
// Setup command that stores all enemies in mActiveEnemies
Command enemyCollector;
enemyCollector.category = Category::EnemyAircraft;
enemyCollector.action = derivedAction<Aircraft>( [this] ( Aircraft& enemy, sf::Time )
{
if ( !enemy.IsDestroyed() )
mActiveEnemies.push_back( &enemy );
} );
// Setup command that guides all missiles to the enemy which is currently closest to the player
Command missileGuider;
missileGuider.category = Category::AlliedProjectile;
missileGuider.action = derivedAction<Projectile>( [this] ( Projectile& missile, sf::Time )
{
// Ignore unguided bullets
if ( !missile.IsGuided() )
return;
float minDistance = std::numeric_limits<float>::max();
Aircraft* closestEnemy = nullptr;
// Find closest enemy
for( Aircraft* enemy : mActiveEnemies )
{
float enemyDistance = distance( missile, *enemy );
if ( enemyDistance < minDistance )
{
closestEnemy = enemy;
minDistance = enemyDistance;
}
}
if ( closestEnemy )
missile.GuideTowards( closestEnemy->GetWorldPosition() );
} );
// Push commands, reset active enemies
mCommandQueue.Push( enemyCollector );
mCommandQueue.Push( missileGuider );
mActiveEnemies.clear();
}
示例2: Distance
void
World::guideMissiles() {
Command enemyCollector;
enemyCollector.category = Category::EnemyAircraft;
enemyCollector.action = derivedAction<Aircraft>(
[this] ( Aircraft& enemy, sf::Time ) {
if ( !enemy.IsDestroyed() ) {
mActiveEnemies.push_back( &enemy );
}
}
);
Command missileGuider;
missileGuider.category = Category::AlliedProjectile;
missileGuider.action = derivedAction<Projectile>(
// TODO: outsource this function into separate method
[this] ( Projectile& missile, sf::Time ) {
// Ignore unguided bullets
if ( !missile.IsGuided() ) {
return;
}
float minDistance = std::numeric_limits<float>::max();
Aircraft* closestEnemy = nullptr;
for( Aircraft* enemy : mActiveEnemies ) {
float enemyDistance = Distance( missile, *enemy );
if ( enemyDistance < minDistance ) {
closestEnemy = enemy;
minDistance = enemyDistance;
}
}
if ( closestEnemy ) {
missile.GuideTowards( closestEnemy->GetWorldPosition() );
}
}
);
mCommandQueue.push( enemyCollector );
mCommandQueue.push( missileGuider );
mActiveEnemies.clear();
}