aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Phasing/PhasingHandler.cpp
diff options
context:
space:
mode:
authorSeyden <saiifii@live.de>2022-01-29 19:44:55 +0100
committerShauren <shauren.trinity@gmail.com>2022-01-29 20:35:25 +0100
commita5c713eaf21ce086074cf5934d1ee105c2c86922 (patch)
tree13d75f04967e9b3f5a64423ca1bd408a6528d98c /src/server/game/Phasing/PhasingHandler.cpp
parent5a82a0381d704e4b4b9976daf04d541d1130e541 (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.cpp14
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())