// Description: // // Arguments: // // Return: // void CPersonalRangeSignaling::CheckActorAngles( IActor* pActor ) { CRY_ASSERT( pActor != NULL ); MapAngleSignals::iterator it = m_mapAngleSignalsSent.find( pActor->GetEntityId() ); CAngleAlert const* pAngle = GetAngleTo( pActor->GetEntity()->GetPos() ); CAngleAlert const* pOldAngle = ( (it != m_mapAngleSignalsSent.end()) ? it->second : NULL ); if( pAngle != pOldAngle ) { if( pAngle != NULL ) { // Check boundary if( GetAngleTo(pActor->GetEntity()->GetPos(), true) != pOldAngle ) { if( pOldAngle == NULL ) { m_mapAngleSignalsSent.insert( std::pair < EntityId, CAngleAlert const * > (pActor->GetEntityId(), pAngle) ); } else { it->second = pAngle; } SendSignal( pActor, pAngle->GetSignal(), pAngle->GetSignalData() ); } } else { m_mapAngleSignalsSent.erase( it ); } } }
// Description: // // Arguments: // // Return: // bool CAngleAlert::CheckPlusBoundary( const Vec3& vPos ) const { return( GetAngleTo(vPos) < m_fBoundary ); }
// Description: // // Arguments: // // Return: // bool CAngleAlert::Check( const Vec3& vPos ) const { return( GetAngleTo(vPos) < m_fAngle ); }