diff options
author | Seyden <saiifii@live.de> | 2022-01-29 19:44:55 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-01-29 20:35:25 +0100 |
commit | a5c713eaf21ce086074cf5934d1ee105c2c86922 (patch) | |
tree | 13d75f04967e9b3f5a64423ca1bd408a6528d98c /src/server/game/Phasing/PhasingHandler.cpp | |
parent | 5a82a0381d704e4b4b9976daf04d541d1130e541 (diff) |
Core/Objects: Implement SmoothPhasing part of CreateObject and replacing visible objects
Diffstat (limited to 'src/server/game/Phasing/PhasingHandler.cpp')
-rw-r--r-- | src/server/game/Phasing/PhasingHandler.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/server/game/Phasing/PhasingHandler.cpp b/src/server/game/Phasing/PhasingHandler.cpp index 50e7afe586f..974461141a3 100644 --- a/src/server/game/Phasing/PhasingHandler.cpp +++ b/src/server/game/Phasing/PhasingHandler.cpp @@ -670,6 +670,20 @@ bool PhasingHandler::IsPersonalPhase(uint32 phaseId) return false; } +void PhasingHandler::ReplaceObject(WorldObject* object, WorldObject* newObject, ObjectGuid const& replacedObjectGuid, bool stopAnimKits /*= true*/) +{ + WorldObject* replacedObject = ObjectAccessor::GetWorldObject(*object, replacedObjectGuid); + if (!replacedObject) + return; + + replacedObject->ReplaceWith(object, newObject, stopAnimKits); + if (Player* player = object->ToPlayer()) + { + WorldObject* targets[] = { newObject, replacedObject }; + player->UpdateVisibilityOf({ std::begin(targets), std::end(targets) }); + } +} + void PhasingHandler::UpdateVisibilityIfNeeded(WorldObject* object, bool updateVisibility, bool changed) { if (changed && object->IsInWorld()) |