std::shared_ptr<Awareness> AwarenessStore::requestAwareness(const LocatedEntity& domainEntity) { //Check if there's already an awareness for the domain entity. auto I = m_awarenesses.find(domainEntity.getIntId()); if (I != m_awarenesses.end()) { //check if it's still valid if (!I->second.expired()) { return I->second.lock(); } //else remove it m_awarenesses.erase(I); } auto bbox = domainEntity.m_location.bBox(); auto awareness = std::make_shared < Awareness > (domainEntity, mAgentRadius, mAgentHeight, mHeightProvider, bbox, mTileSize); m_awarenesses.insert(std::make_pair(domainEntity.getIntId(), std::weak_ptr < Awareness > (awareness))); return awareness; }
ExternalMind::ExternalMind(LocatedEntity & e) : Router(e.getId(), e.getIntId()), m_external(0), m_entity(e) { }
void EntityIdProvider::value(Atlas::Message::Element& value, const LocatedEntity& entity) const { value = Atlas::Message::Element(entity.getIntId()); }