本文整理汇总了C++中Campaign::findObjects方法的典型用法代码示例。如果您正苦于以下问题:C++ Campaign::findObjects方法的具体用法?C++ Campaign::findObjects怎么用?C++ Campaign::findObjects使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Campaign
的用法示例。
在下文中一共展示了Campaign::findObjects方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getNearestObject
void Functions::getNearestObject(Aurora::NWScript::FunctionContext &ctx) {
Campaign *campaign = _game->getCampaigns().getCurrentCampaign();
if (!campaign)
return;
DragonAge::Object *target = DragonAge::ObjectContainer::toObject(getParamObject(ctx, 0));
if (!target)
return;
// Bitfield of type(s) to check for
const uint32 type = ctx.getParams()[1].getInt();
// We want the nth nearest object
size_t count = MAX<int32>(ctx.getParams()[2].getInt(), 0);
if (count == 0)
return;
Aurora::NWScript::Variable::Array &result = ctx.getReturn().getArray();
// TODO: nCheckLiving
// TODO: nCheckPerceived
const bool includeSelf = ctx.getParams()[5].getInt() != 0;
if (includeSelf) {
result.push_back(boost::make_shared<Aurora::NWScript::Variable>(target));
count--;
}
if (count == 0)
return;
Aurora::NWScript::ObjectSearch *search = campaign->findObjects();
Aurora::NWScript::Object *object = 0;
std::list<Object *> objects;
while ((object = search->next())) {
// Needs to be a valid object and not the target
DragonAge::Object *daObject = DragonAge::ObjectContainer::toObject(object);
if (!daObject || (daObject == target))
continue;
// Ignore invalid object types
const uint32 objectType = (uint32) daObject->getType();
if (objectType >= kObjectTypeMAX)
continue;
if (type & objectType)
objects.push_back(daObject);
}
delete search;
objects.sort(ObjectDistanceSort(*target));
for (std::list<Object *>::iterator it = objects.begin(); it != objects.end() && count > 0; ++it, count--)
result.push_back(boost::make_shared<Aurora::NWScript::Variable>(*it));
}