aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Combat/HostileRefManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Combat/HostileRefManager.cpp')
-rw-r--r--src/server/game/Combat/HostileRefManager.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/server/game/Combat/HostileRefManager.cpp b/src/server/game/Combat/HostileRefManager.cpp
index 7b4723e4e16..54b02c6a97e 100644
--- a/src/server/game/Combat/HostileRefManager.cpp
+++ b/src/server/game/Combat/HostileRefManager.cpp
@@ -142,6 +142,26 @@ void HostileRefManager::deleteReferencesForFaction(uint32 faction)
}
//=================================================
+// delete all references out of specified range
+
+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;
+ }
+}
+
+//=================================================
// delete one reference, defined by Unit
void HostileRefManager::deleteReference(Unit* creature)