本文整理汇总了C++中SimObject::GetRegion方法的典型用法代码示例。如果您正苦于以下问题:C++ SimObject::GetRegion方法的具体用法?C++ SimObject::GetRegion怎么用?C++ SimObject::GetRegion使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SimObject
的用法示例。
在下文中一共展示了SimObject::GetRegion方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
void
TacticalAI::CheckTarget()
{
SimObject* tgt = ship_ai->GetTarget();
if (!tgt) return;
if (tgt->GetRegion() != ship->GetRegion()) {
ship_ai->DropTarget();
return;
}
if (tgt->Type() == SimObject::SIM_SHIP) {
Ship* target = (Ship*) tgt;
// has the target joined our side?
if (target->GetIFF() == ship->GetIFF() && !target->IsRogue()) {
ship_ai->DropTarget();
return;
}
// is the target already jumping/breaking/dying?
if (target->InTransition()) {
ship_ai->DropTarget();
return;
}
// have we been ordered to pursue the target?
if (directed_tgtid) {
if (directed_tgtid != target->Identity()) {
ship_ai->DropTarget();
}
return;
}
// can we catch the target?
if (target->Design()->vlimit <= ship->Design()->vlimit ||
ship->Velocity().length() <= ship->Design()->vlimit)
return;
// is the target now out of range?
WeaponDesign* wep_dsn = ship->GetPrimaryDesign();
if (!wep_dsn)
return;
// compute the "give up" range:
double drop_range = 3 * wep_dsn->max_range;
if (drop_range > 0.75 * ship->Design()->commit_range)
drop_range = 0.75 * ship->Design()->commit_range;
double range = Point(target->Location() - ship->Location()).length();
if (range < drop_range)
return;
// is the target closing or separating?
Point delta = (target->Location() + target->Velocity()) -
(ship->Location() + ship->Velocity());
if (delta.length() < range)
return;
ship_ai->DropTarget();
}
else if (tgt->Type() == SimObject::SIM_DRONE) {
Drone* drone = (Drone*) tgt;
// is the target still a threat?
if (drone->GetEta() < 1 || drone->GetTarget() == 0)
ship_ai->DropTarget();
}
}