本文整理汇总了C++中AiAgent::activateInterrupt方法的典型用法代码示例。如果您正苦于以下问题:C++ AiAgent::activateInterrupt方法的具体用法?C++ AiAgent::activateInterrupt怎么用?C++ AiAgent::activateInterrupt使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AiAgent
的用法示例。
在下文中一共展示了AiAgent::activateInterrupt方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: notifyObserverEvent
int LairObserverImplementation::notifyObserverEvent(unsigned int eventType, Observable* observable, ManagedObject* arg1, int64 arg2) {
int ret = 1;
int i = 0;
Reference<LairAggroTask*> task = NULL;
SceneObject* sourceObject = cast<SceneObject*>(arg1);
AiAgent* agent = NULL;
ManagedReference<LairObserver*> lairObserver = _this.get();
ManagedReference<TangibleObject*> lair = cast<TangibleObject*>(observable);
ManagedReference<TangibleObject*> attacker = cast<TangibleObject*>(arg1);
switch (eventType) {
case ObserverEventType::OBJECTREMOVEDFROMZONE:
despawnSpawns();
return 1;
break;
case ObserverEventType::OBJECTDESTRUCTION:
notifyDestruction(lair, attacker, (int)arg2);
return 1;
break;
case ObserverEventType::DAMAGERECEIVED:
// if there are living creatures, make them aggro
if(getLivingCreatureCount() > 0 ){
task = new LairAggroTask(lair, attacker.get(), _this.get(), false);
task->execute();
}
EXECUTE_TASK_3(lairObserver, lair, attacker, {
Locker locker(lair_p);
lairObserver_p->checkForNewSpawns(lair_p, attacker_p);
});
checkForHeal(lair, attacker);
break;
case ObserverEventType::AIMESSAGE:
if (sourceObject == NULL) {
Logger::console.error("LairObserverImplemenation::notifyObserverEvent does not have a source object");
return 1;
}
for (i = 0; i < spawnedCreatures.size(); i++) {
agent = cast<AiAgent*>(spawnedCreatures.get(i).get());
if (agent == NULL)
continue;
agent->activateInterrupt(sourceObject, arg2);
}
break;
}
示例2: notifyObserverEvent
int LairObserverImplementation::notifyObserverEvent(unsigned int eventType, Observable* observable, ManagedObject* arg1, int64 arg2) {
int ret = 1;
int i = 0;
Reference<LairAggroTask*> task = NULL;
SceneObject* sourceObject = cast<SceneObject*>(arg1);
AiAgent* agent = NULL;
switch (eventType) {
case ObserverEventType::OBJECTDESTRUCTION:
notifyDestruction(cast<TangibleObject*>(observable), cast<TangibleObject*>(arg1), (int)arg2);
return 1;
break;
case ObserverEventType::DAMAGERECEIVED:
// if there are living creatures, make them aggro
if(getLivingCreatureCount() > 0 ){
task = new LairAggroTask(cast<TangibleObject*>(observable), cast<TangibleObject*>(arg1), _this.get(), false);
task->execute();
}
// if new creatures have spawned or there are live creatures near the lair
if( checkForNewSpawns(cast<TangibleObject*>(observable), cast<TangibleObject*>(arg1)) || getLivingCreatureCount() > 0 )
checkForHeal(cast<TangibleObject*>(observable), cast<TangibleObject*>(arg1));
break;
case ObserverEventType::AIMESSAGE:
if (sourceObject == NULL) {
Logger::console.error("LairObserverImplemenation::notifyObserverEvent does not have a source object");
return 1;
}
for (i = 0; i < spawnedCreatures.size(); i++) {
agent = cast<AiAgent*>(spawnedCreatures.get(i).get());
if (agent == NULL)
continue;
agent->activateInterrupt(sourceObject, arg2);
}
break;
}
return 0;
}