diff options
| author | Treeston <treeston.mmoc@gmail.com> | 2016-03-02 23:54:37 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2016-04-08 22:58:28 +0200 |
| commit | 9476726edc074cc35ab715f0e8d15f9c368916f7 (patch) | |
| tree | 97468fd53bfad2efca836fffc1d38f78c07ce07d | |
| parent | cf7436b64407ba64a1ca9c6d68163799b8260af3 (diff) | |
Merge pull request #16676 from ccrs/summonsinit
Core/TempSummons: avoid use MoveInLineOfSight before InitSummon
(cherry picked from commit 472e78d682cb5d5abf4d60111f238744c07096ac)
| -rw-r--r-- | src/server/game/Entities/Creature/TemporarySummon.cpp | 5 | ||||
| -rw-r--r-- | src/server/game/Entities/Creature/TemporarySummon.h | 1 | ||||
| -rw-r--r-- | src/server/game/Entities/Object/Object.cpp | 4 | ||||
| -rw-r--r-- | src/server/game/Entities/Object/Object.h | 5 | ||||
| -rw-r--r-- | src/server/game/Maps/Map.cpp | 2 |
5 files changed, 15 insertions, 2 deletions
diff --git a/src/server/game/Entities/Creature/TemporarySummon.cpp b/src/server/game/Entities/Creature/TemporarySummon.cpp index 6b6d960a329..4337d2860ec 100644 --- a/src/server/game/Entities/Creature/TemporarySummon.cpp +++ b/src/server/game/Entities/Creature/TemporarySummon.cpp @@ -229,6 +229,11 @@ void TempSummon::InitSummon() } } +void TempSummon::UpdateObjectVisibilityOnCreate() +{ + WorldObject::UpdateObjectVisibility(true); +} + void TempSummon::SetTempSummonType(TempSummonType type) { m_type = type; diff --git a/src/server/game/Entities/Creature/TemporarySummon.h b/src/server/game/Entities/Creature/TemporarySummon.h index d43e7fcf626..5188ca5d0f5 100644 --- a/src/server/game/Entities/Creature/TemporarySummon.h +++ b/src/server/game/Entities/Creature/TemporarySummon.h @@ -45,6 +45,7 @@ class TC_GAME_API TempSummon : public Creature void Update(uint32 time) override; virtual void InitStats(uint32 lifetime); virtual void InitSummon(); + void UpdateObjectVisibilityOnCreate() override; virtual void UnSummon(uint32 msTime = 0); void RemoveFromWorld() override; void SetTempSummonType(TempSummonType type); diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 1b9cc69e81a..1fe1b3b73c4 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -2303,7 +2303,9 @@ TempSummon* Map::SummonCreature(uint32 entry, Position const& pos, SummonPropert AddToMap(summon->ToCreature()); summon->InitSummon(); - //ObjectAccessor::UpdateObjectVisibility(summon); + // call MoveInLineOfSight for nearby creatures + Trinity::AIRelocationNotifier notifier(*summon); + summon->VisitNearbyObject(GetVisibilityRange(), notifier); return summon; } diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index e3f22a41275..dfb2647d760 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -566,6 +566,11 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation void DestroyForNearbyPlayers(); virtual void UpdateObjectVisibility(bool forced = true); + virtual void UpdateObjectVisibilityOnCreate() + { + UpdateObjectVisibility(true); + } + void BuildUpdate(UpdateDataMapType&) override; void AddToObjectUpdate() override; void RemoveFromObjectUpdate() override; diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index a2614fc0766..da12d8e871a 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -605,7 +605,7 @@ bool Map::AddToMap(T* obj) //something, such as vehicle, needs to be update immediately //also, trigger needs to cast spell, if not update, cannot see visual - obj->UpdateObjectVisibility(true); + obj->UpdateObjectVisibilityOnCreate(); return true; } |
