本文整理汇总了C++中Agent::GetEntityID方法的典型用法代码示例。如果您正苦于以下问题:C++ Agent::GetEntityID方法的具体用法?C++ Agent::GetEntityID怎么用?C++ Agent::GetEntityID使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Agent
的用法示例。
在下文中一共展示了Agent::GetEntityID方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CheckObjectViewDist
bool CVisibleObjectsHelper::CheckObjectViewDist(const Agent& agent, const SVisibleObject &visibleObject) const
{
FUNCTION_PROFILER(GetISystem(), PROFILE_GAME);
assert(agent.IsValid());
bool bInViewDist = true;
IEntitySystem *pEntitySystem = gEnv->pEntitySystem;
assert(pEntitySystem);
IEntity *pAIEntity = pEntitySystem->GetEntity(agent.GetEntityID());
IEntity *pObjectEntity = pEntitySystem->GetEntity(visibleObject.entityId);
IComponentRender *pObjectRenderProxy = (pAIEntity != NULL && pObjectEntity ? static_cast<IComponentRender *>(pObjectEntity->GetComponent<IComponentRender>().get()) : NULL);
if (pObjectRenderProxy != NULL)
{
IRenderNode *pObjectRenderNode = pObjectRenderProxy->GetRenderNode();
if (pObjectRenderNode != NULL)
{
const float fDistanceSq = pAIEntity->GetWorldPos().GetSquaredDistance(pObjectEntity->GetWorldPos());
const float fMaxViewDistSq = sqr(pObjectRenderNode->GetMaxViewDist());
bInViewDist = (fDistanceSq <= fMaxViewDistSq);
}
}
return bInViewDist;
}
示例2: CheckBeingAttacked
void AIPlayer::CheckBeingAttacked()
{
for (int i = 0; i < m_SimMailbox.size(); ++i)
{
const Message* message = m_SimMailbox[i];
switch (message->Type)
{
case MessageTypes::AI_MSG:
{
const AIMessage* openMsg = static_cast<const AIMessage*>(message);
if (openMsg->TeamID == m_Team)
{
if (static_cast<AIStateMessages>(openMsg->AIMsg) == AIStateMessages::UNDER_ATTACK)
{
if (openMsg->SquadID >= m_Squads.size())
continue;
Squad* squadUnderAttack = m_Squads[openMsg->SquadID];
Agent* agentUnderAttack = GetAgentPointer(openMsg->EntityID);
if (squadUnderAttack->GetSize() == 0)
continue;
m_Brain.SquadIDUnderAttack = openMsg->SquadID;
if (agentUnderAttack != nullptr)
{
m_Perceptions[PERCEPTION_UNDER_ATTACK] = 1;
m_Brain.TimeSinceAttacked = 0;
m_Brain.AgentUnderAttack = agentUnderAttack->GetEntityID();
}
}
}
}
break;
default:
Logger::Log("Received unrecognized message", "SSAI", LogSeverity::WARNING_MSG);
break;
}
}
}
示例3: CheckVisibilityToAI
void CVisibleObjectsHelper::CheckVisibilityToAI(const TActiveVisibleObjects &activeVisibleObjects, const Agent& agent) const
{
assert(agent.IsValid());
IScriptSystem *pSS = gEnv->pScriptSystem;
assert(pSS);
IEntity *pAIEntity = gEnv->pEntitySystem->GetEntity(agent.GetEntityID());
TActiveVisibleObjects::const_iterator itObject = activeVisibleObjects.begin();
TActiveVisibleObjects::const_iterator itObjectEnd = activeVisibleObjects.end();
for (; itObject != itObjectEnd; ++itObject)
{
const SVisibleObject *visibleObject = (*itObject);
assert(visibleObject);
const bool bVisible = IsObjectVisible(agent, *visibleObject);
if (bVisible)
{
// Callback function
if (visibleObject->pFunc)
{
visibleObject->pFunc(agent, visibleObject->entityId, visibleObject->pFuncArg);
}
// Notify on seen
if (pAIEntity != NULL && eVOR_FlagNotifyOnSeen == (visibleObject->rule & eVOR_FlagNotifyOnSeen))
{
IVisionMap& visionMap = *gEnv->pAISystem->GetVisionMap();
const ObservableParams* pObservableParams = visionMap.GetObservableParams(visibleObject->visionId);
if (pObservableParams != NULL)
{
IEntity* pTargetEntity = gEnv->pEntitySystem->GetEntity(pObservableParams->entityId);
ITargetTrackManager *pTargetTrackManager = gEnv->pAISystem->GetTargetTrackManager();
if (pTargetEntity != NULL && pTargetTrackManager != NULL)
{
const tAIObjectID aiOwnerId = pAIEntity->GetAIObjectID();
const tAIObjectID aiTargetId = pTargetEntity->GetAIObjectID();
TargetTrackHelpers::SStimulusEvent eventInfo;
eventInfo.vPos = pTargetEntity->GetWorldPos();
eventInfo.eStimulusType = TargetTrackHelpers::eEST_Visual;
eventInfo.eTargetThreat = AITHREAT_INTERESTING;
pTargetTrackManager->HandleStimulusEventForAgent(aiOwnerId, aiTargetId, "SeeThrownObject", eventInfo);
IAIObject* pAIObjectSender = pAIEntity->GetAI();
if (pAIObjectSender)
{
IAISignalExtraData *pSignalData = gEnv->pAISystem->CreateSignalExtraData();
if (pSignalData)
{
pSignalData->nID = visibleObject->entityId;
}
gEnv->pAISystem->SendSignal(SIGNALFILTER_SENDER, 1, "OnSawObjectMove", pAIObjectSender, pSignalData);
}
}
}
}
}
}
}