// The references are not needed anymore // tell the source to remove them from the list and free the mem public void deleteReferences() { HostileReference refe = getFirst(); while (refe != null) { HostileReference nextRef = refe.next(); refe.removeReference(); refe = nextRef; } }
// Remove specific faction references public void deleteReferencesForFaction(uint faction) { HostileReference refe = getFirst(); while (refe != null) { HostileReference nextRef = refe.next(); if (refe.GetSource().GetOwner().GetFactionTemplateEntry().Faction == faction) { refe.removeReference(); } refe = nextRef; } }
public void UpdateVisibility() { HostileReference refe = getFirst(); while (refe != null) { HostileReference nextRef = refe.next(); if (!refe.GetSource().GetOwner().CanSeeOrDetect(getOwner())) { nextRef = refe.next(); refe.removeReference(); } refe = nextRef; } }
// delete one reference, defined by Unit public void deleteReference(Unit creature) { HostileReference refe = getFirst(); while (refe != null) { HostileReference nextRef = refe.next(); if (refe.GetSource().GetOwner() == creature) { refe.removeReference(); break; } refe = nextRef; } }
// delete all references out of specified range public void deleteReferencesOutOfRange(float range) { HostileReference refe = getFirst(); range = range * range; while (refe != null) { HostileReference nextRef = refe.next(); Unit owner = refe.GetSource().GetOwner(); if (!owner.isActiveObject() && owner.GetExactDist2dSq(getOwner()) > range) { refe.removeReference(); } refe = nextRef; } }