diff options
author | Ovahlord <dreadkiller@gmx.de> | 2023-09-12 12:52:15 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2023-09-26 23:18:02 +0200 |
commit | d11d992df9e15503c321ffcce566f13923f51508 (patch) | |
tree | 1b1eef0f9a55fa27e9a0fb6d1d18746c9779e0a8 | |
parent | a5217f59b2ed871c8a64f8965951917ac98b0a63 (diff) |
Core/Player: return player corpse locations by reference instead of creating copies
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 3 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.h | 2 | ||||
-rw-r--r-- | src/server/game/Handlers/NPCHandler.cpp | 2 |
3 files changed, 3 insertions, 4 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index e6a3b4fe127..5543652b36e 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -4512,8 +4512,7 @@ void Player::BuildPlayerRepop() // there must be SMSG.STOP_MIRROR_TIMER // the player cannot have a corpse already on current map, only bones which are not returned by GetCorpse - WorldLocation corpseLocation = GetCorpseLocation(); - if (corpseLocation.GetMapId() == GetMapId()) + if (GetCorpseLocation().GetMapId() == GetMapId()) { TC_LOG_ERROR("entities.player", "Player::BuildPlayerRepop: Player '{}' ({}) already has a corpse", GetName(), GetGUID().ToString()); return; diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index d67225835a1..2b5b12c6413 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1700,7 +1700,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> void KillPlayer(); static void OfflineResurrect(ObjectGuid const& guid, CharacterDatabaseTransaction trans); bool HasCorpse() const { return _corpseLocation.GetMapId() != MAPID_INVALID; } - WorldLocation GetCorpseLocation() const { return _corpseLocation; } + WorldLocation const& GetCorpseLocation() const { return _corpseLocation; } uint32 GetResurrectionSpellId(); void ResurrectPlayer(float restore_percent, bool applySickness = false); void BuildPlayerRepop(); diff --git a/src/server/game/Handlers/NPCHandler.cpp b/src/server/game/Handlers/NPCHandler.cpp index 9d9e90b1f69..98f1e1ab29d 100644 --- a/src/server/game/Handlers/NPCHandler.cpp +++ b/src/server/game/Handlers/NPCHandler.cpp @@ -218,9 +218,9 @@ void WorldSession::SendSpiritResurrect() // get corpse nearest graveyard WorldSafeLocsEntry const* corpseGrave = nullptr; - WorldLocation corpseLocation = _player->GetCorpseLocation(); if (_player->HasCorpse()) { + WorldLocation const& corpseLocation = _player->GetCorpseLocation(); corpseGrave = sObjectMgr->GetClosestGraveyard(corpseLocation.GetPositionX(), corpseLocation.GetPositionY(), corpseLocation.GetPositionZ(), corpseLocation.GetMapId(), _player->GetTeam()); } |