diff options
author | megamage <none@none.none> | 2011-10-10 13:12:15 -0700 |
---|---|---|
committer | megamage <none@none.none> | 2011-10-10 13:12:15 -0700 |
commit | 76c9c30c2b3ad32f61a0a588c7d8625e0c5f2d09 (patch) | |
tree | 452c8da6deac8d0233fb77fe0b933627038ad49b /src/server/game/Grids/ObjectGridLoader.cpp | |
parent | 85957c33686f34923dbbdcb287b6f88709acb811 (diff) | |
parent | eb8cbae0d5d2e43585300271db86c4bd0bacd58a (diff) |
Merge pull request #3399 from megamage/master
Fix the relocation of creatures across cells. Try to fix #3054.
Diffstat (limited to 'src/server/game/Grids/ObjectGridLoader.cpp')
-rwxr-xr-x | src/server/game/Grids/ObjectGridLoader.cpp | 22 |
1 files changed, 5 insertions, 17 deletions
diff --git a/src/server/game/Grids/ObjectGridLoader.cpp b/src/server/game/Grids/ObjectGridLoader.cpp index 58521b76bff..b0e7de88491 100755 --- a/src/server/game/Grids/ObjectGridLoader.cpp +++ b/src/server/game/Grids/ObjectGridLoader.cpp @@ -57,20 +57,8 @@ ObjectGridRespawnMover::Visit(CreatureMapType &m) Creature* c = iter->getSource(); ++iter; - ASSERT(!c->isPet() && "ObjectGridRespawnMover don't must be called for pets"); - - Cell const& cur_cell = c->GetCurrentCell(); - - float resp_x, resp_y, resp_z; - c->GetRespawnCoord(resp_x, resp_y, resp_z); - CellPair resp_val = Trinity::ComputeCellPair(resp_x, resp_y); - Cell resp_cell(resp_val); - - if (cur_cell.DiffGrid(resp_cell)) - { - c->GetMap()->CreatureRespawnRelocation(c); - // false result ignored: will be unload with other creatures at grid - } + ASSERT(!c->isPet() && "ObjectGridRespawnMover must not be called for pets"); + c->GetMap()->CreatureRespawnRelocation(c, true); } } @@ -94,11 +82,11 @@ class ObjectWorldLoader uint32 i_corpses; }; -template<class T> void AddUnitState(T* /*obj*/, CellPair const& /*cell_pair*/) +template<class T> static void ObjectGridLoader::SetObjectCell(T* /*obj*/, CellPair const& /*cell_pair*/) { } -template<> void AddUnitState(Creature* obj, CellPair const& cell_pair) +template<> static void ObjectGridLoader::SetObjectCell(Creature* obj, CellPair const& cell_pair) { Cell cell(cell_pair); @@ -109,7 +97,7 @@ template <class T> void AddObjectHelper(CellPair &cell, GridRefManager<T> &m, uint32 &count, Map* map, T *obj) { obj->GetGridRef().link(&m, obj); - AddUnitState(obj, cell); + ObjectGridLoader::SetObjectCell(obj, cell); obj->AddToWorld(); if (obj->isActiveObject()) map->AddToActive(obj); |