diff options
author | megamage <none@none> | 2009-08-11 16:14:45 -0500 |
---|---|---|
committer | megamage <none@none> | 2009-08-11 16:14:45 -0500 |
commit | 9403ff03e792154b5709a05d8dfdd7da123ce9b5 (patch) | |
tree | f6072a69420fcb17da553ef3bc5821daee895b3e /src/game/Map.cpp | |
parent | 4267816fca55b137bf4c7e4e530816dc5c4e7d43 (diff) |
*Only use m_isWorldObject to check if an object is in grid or world.
--HG--
branch : trunk
Diffstat (limited to 'src/game/Map.cpp')
-rw-r--r-- | src/game/Map.cpp | 98 |
1 files changed, 12 insertions, 86 deletions
diff --git a/src/game/Map.cpp b/src/game/Map.cpp index 5aeb043a92f..e10ee1a2b94 100644 --- a/src/game/Map.cpp +++ b/src/game/Map.cpp @@ -221,104 +221,30 @@ Map::Map(uint32 id, time_t expiry, uint32 InstanceId, uint8 SpawnMode, Map* _par template<class T> void Map::AddToGrid(T* obj, NGridType *grid, Cell const& cell) { - (*grid)(cell.CellX(), cell.CellY()).template AddGridObject<T>(obj, obj->GetGUID()); -} - -template<> -void Map::AddToGrid(Player* obj, NGridType *grid, Cell const& cell) -{ - (*grid)(cell.CellX(), cell.CellY()).AddWorldObject(obj, obj->GetGUID()); + if(obj->m_isWorldObject) + (*grid)(cell.CellX(), cell.CellY()).template AddWorldObject<T>(obj, obj->GetGUID()); + else + (*grid)(cell.CellX(), cell.CellY()).template AddGridObject<T>(obj, obj->GetGUID()); } template<> -void Map::AddToGrid(Corpse *obj, NGridType *grid, Cell const& cell) +void Map::AddToGrid(Creature* obj, NGridType *grid, Cell const& cell) { - // add to world object registry in grid - if(obj->GetType()!=CORPSE_BONES) - { + if(obj->m_isWorldObject) (*grid)(cell.CellX(), cell.CellY()).AddWorldObject(obj, obj->GetGUID()); - } - // add to grid object store else - { (*grid)(cell.CellX(), cell.CellY()).AddGridObject(obj, obj->GetGUID()); - } -} -template<> -void Map::AddToGrid(Creature* obj, NGridType *grid, Cell const& cell) -{ - // add to world object registry in grid - if(obj->isWorldCreature() || obj->IsTempWorldObject) - { - (*grid)(cell.CellX(), cell.CellY()).AddWorldObject<Creature>(obj, obj->GetGUID()); - } - // add to grid object store - else - { - (*grid)(cell.CellX(), cell.CellY()).AddGridObject<Creature>(obj, obj->GetGUID()); - } obj->SetCurrentCell(cell); } -template<> -void Map::AddToGrid(DynamicObject* obj, NGridType *grid, Cell const& cell) -{ - if(obj->isActiveObject()) // only farsight - (*grid)(cell.CellX(), cell.CellY()).AddWorldObject<DynamicObject>(obj, obj->GetGUID()); - else - (*grid)(cell.CellX(), cell.CellY()).AddGridObject<DynamicObject>(obj, obj->GetGUID()); -} - template<class T> void Map::RemoveFromGrid(T* obj, NGridType *grid, Cell const& cell) { - (*grid)(cell.CellX(), cell.CellY()).template RemoveGridObject<T>(obj, obj->GetGUID()); -} - -template<> -void Map::RemoveFromGrid(Player* obj, NGridType *grid, Cell const& cell) -{ - (*grid)(cell.CellX(), cell.CellY()).RemoveWorldObject(obj, obj->GetGUID()); -} - -template<> -void Map::RemoveFromGrid(Corpse *obj, NGridType *grid, Cell const& cell) -{ - // remove from world object registry in grid - if(obj->GetType()!=CORPSE_BONES) - { - (*grid)(cell.CellX(), cell.CellY()).RemoveWorldObject(obj, obj->GetGUID()); - } - // remove from grid object store - else - { - (*grid)(cell.CellX(), cell.CellY()).RemoveGridObject(obj, obj->GetGUID()); - } -} - -template<> -void Map::RemoveFromGrid(Creature* obj, NGridType *grid, Cell const& cell) -{ - // remove from world object registry in grid - if(obj->isWorldCreature() || obj->IsTempWorldObject) - { - (*grid)(cell.CellX(), cell.CellY()).RemoveWorldObject<Creature>(obj, obj->GetGUID()); - } - // remove from grid object store - else - { - (*grid)(cell.CellX(), cell.CellY()).RemoveGridObject<Creature>(obj, obj->GetGUID()); - } -} - -template<> -void Map::RemoveFromGrid(DynamicObject* obj, NGridType *grid, Cell const& cell) -{ - if(obj->isActiveObject()) // only farsight - (*grid)(cell.CellX(), cell.CellY()).RemoveWorldObject<DynamicObject>(obj, obj->GetGUID()); + if(obj->m_isWorldObject) + (*grid)(cell.CellX(), cell.CellY()).template RemoveWorldObject<T>(obj, obj->GetGUID()); else - (*grid)(cell.CellX(), cell.CellY()).RemoveGridObject<DynamicObject>(obj, obj->GetGUID()); + (*grid)(cell.CellX(), cell.CellY()).template RemoveGridObject<T>(obj, obj->GetGUID()); } template<class T> @@ -361,11 +287,11 @@ void Map::SwitchGridContainers(T* obj, bool on) assert(false); }*/ } - obj->IsTempWorldObject = on; + obj->m_isWorldObject = on; } template void Map::SwitchGridContainers(Creature *, bool); -template void Map::SwitchGridContainers(DynamicObject *, bool); +//template void Map::SwitchGridContainers(DynamicObject *, bool); template<class T> void Map::DeleteFromWorld(T* obj) @@ -2223,7 +2149,7 @@ void Map::RemoveAllObjectsInRemoveList() switch(obj->GetTypeId()) { case TYPEID_UNIT: - if(!((Creature*)obj)->isWorldCreature()) + if(!((Creature*)obj)->isPet()) SwitchGridContainers((Creature*)obj, on); break; } |