fix(Core): Restored code about shared visions removed in d504a62. (#11493)

Fixes #11368
This commit is contained in:
UltraNix
2022-04-25 14:26:32 +02:00
committed by GitHub
parent 3a525b8345
commit 898eabe6dd
2 changed files with 13 additions and 2 deletions
@@ -452,10 +452,8 @@ Player::~Player()
if (!m_isInSharedVisionOf.empty()) if (!m_isInSharedVisionOf.empty())
{ {
LOG_INFO("misc", "Player::~Player (A1)");
do do
{ {
LOG_INFO("misc", "Player::~Player (A2)");
Unit* u = *(m_isInSharedVisionOf.begin()); Unit* u = *(m_isInSharedVisionOf.begin());
u->RemovePlayerFromVision(this); u->RemovePlayerFromVision(this);
} while (!m_isInSharedVisionOf.empty()); } while (!m_isInSharedVisionOf.empty());
+13
View File
@@ -358,6 +358,17 @@ Unit::~Unit()
ASSERT(!m_attacking); ASSERT(!m_attacking);
ASSERT(m_attackers.empty()); ASSERT(m_attackers.empty());
// pussywizard: clear m_sharedVision along with back references
if (!m_sharedVision.empty())
{
do
{
Player* p = *(m_sharedVision.begin());
p->m_isInSharedVisionOf.erase(this);
m_sharedVision.remove(p);
} while (!m_sharedVision.empty());
}
ASSERT(m_Controlled.empty()); ASSERT(m_Controlled.empty());
ASSERT(m_appliedAuras.empty()); ASSERT(m_appliedAuras.empty());
ASSERT(m_ownedAuras.empty()); ASSERT(m_ownedAuras.empty());
@@ -10710,12 +10721,14 @@ void Unit::AddPlayerToVision(Player* player)
SetWorldObject(true); SetWorldObject(true);
} }
m_sharedVision.push_back(player); m_sharedVision.push_back(player);
player->m_isInSharedVisionOf.insert(this);
} }
// only called in Player::SetSeer // only called in Player::SetSeer
void Unit::RemovePlayerFromVision(Player* player) void Unit::RemovePlayerFromVision(Player* player)
{ {
m_sharedVision.remove(player); m_sharedVision.remove(player);
player->m_isInSharedVisionOf.erase(this);
if (m_sharedVision.empty()) if (m_sharedVision.empty())
{ {
setActive(false); setActive(false);