From 898eabe6dd5ce0b96a66562b90b733fb1f6ce369 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Mon, 25 Apr 2022 14:26:32 +0200 Subject: [PATCH] fix(Core): Restored code about shared visions removed in d504a62. (#11493) Fixes #11368 --- src/server/game/Entities/Player/Player.cpp | 2 -- src/server/game/Entities/Unit/Unit.cpp | 13 +++++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index eff235c4e..3544fb2d1 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -452,10 +452,8 @@ Player::~Player() if (!m_isInSharedVisionOf.empty()) { - LOG_INFO("misc", "Player::~Player (A1)"); do { - LOG_INFO("misc", "Player::~Player (A2)"); Unit* u = *(m_isInSharedVisionOf.begin()); u->RemovePlayerFromVision(this); } while (!m_isInSharedVisionOf.empty()); diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 86ae9e131..60b8a08e3 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -358,6 +358,17 @@ Unit::~Unit() ASSERT(!m_attacking); 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_appliedAuras.empty()); ASSERT(m_ownedAuras.empty()); @@ -10710,12 +10721,14 @@ void Unit::AddPlayerToVision(Player* player) SetWorldObject(true); } m_sharedVision.push_back(player); + player->m_isInSharedVisionOf.insert(this); } // only called in Player::SetSeer void Unit::RemovePlayerFromVision(Player* player) { m_sharedVision.remove(player); + player->m_isInSharedVisionOf.erase(this); if (m_sharedVision.empty()) { setActive(false);