void HostileRefManager::deleteReferences() { HostileReference* ref = getFirst(); while(ref) { HostileReference* nextRef = ref->next(); ref->removeReference(); delete ref; ref = nextRef; } }
void HostileRefManager::deleteReferencesForFaction(uint32 faction) { HostileReference* ref = getFirst(); while(ref) { HostileReference* nextRef = ref->next(); if(ref->getSource()->getOwner()->getFactionTemplateEntry()->faction == faction) { ref->removeReference(); delete ref; } ref = nextRef; } }
void HostileRefManager::deleteReference(Unit *pCreature) { HostileReference* ref = getFirst(); while(ref) { HostileReference* nextRef = ref->next(); if(ref->getSource()->getOwner() == pCreature) { ref->removeReference(); delete ref; break; } ref = nextRef; } }
void HostileRefManager::UpdateVisibility() { HostileReference* ref = getFirst(); while (ref) { HostileReference* nextRef = ref->next(); if (!ref->GetSource()->getOwner()->CanSeeOrDetect(GetOwner())) { nextRef = ref->next(); ref->removeReference(); delete ref; } ref = nextRef; } }
void HostileRefManager::UpdateVisibility(bool checkThreat) { HostileReference* ref = getFirst(); while (ref) { HostileReference* nextRef = ref->next(); if ((!checkThreat || ref->GetSource()->getThreatList().size() <= 1) && !ref->GetSource()->GetOwner()->CanSeeOrDetect(GetOwner())) { nextRef = ref->next(); ref->removeReference(); delete ref; } ref = nextRef; } }
void HostileRefManager::deleteReferencesOutOfRange(float range) { HostileReference* ref = getFirst(); range = range*range; while (ref) { HostileReference* nextRef = ref->next(); Unit* owner = ref->GetSource()->GetOwner(); if (!owner->isActiveObject() && owner->GetExactDist2dSq(GetOwner()) > range) { ref->removeReference(); delete ref; } ref = nextRef; } }