From ba6281bf429384a506aad5125bcc537eef5bfe77 Mon Sep 17 00:00:00 2001 From: xinef1 Date: Sat, 21 Jan 2017 14:46:32 +0100 Subject: Core/Units: Drop hostile world references that are out of our sight (fixes combat bug) (#18591) --- src/server/game/Combat/HostileRefManager.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/server/game/Combat/HostileRefManager.cpp') 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 @@ -141,6 +141,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 -- cgit v1.2.3