diff options
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()) |