From f762b57fea589cbda45598170a445d62f53d5cde Mon Sep 17 00:00:00 2001 From: VladimirMangos Date: Thu, 22 Oct 2009 02:32:02 +0400 Subject: [PATCH] [8703] Remove templates and some used functions from ObjectAccessor. --- src/game/Map.cpp | 25 +++++++++- src/game/ObjectAccessor.cpp | 20 -------- src/game/ObjectAccessor.h | 94 ++++++++----------------------------- src/shared/revision_nr.h | 2 +- 4 files changed, 44 insertions(+), 97 deletions(-) diff --git a/src/game/Map.cpp b/src/game/Map.cpp index 51d9cddb8..1959fb697 100644 --- a/src/game/Map.cpp +++ b/src/game/Map.cpp @@ -775,7 +775,30 @@ bool Map::RemoveBones(uint64 guid, float x, float y) { if (IsRemovalGrid(x, y)) { - Corpse * corpse = ObjectAccessor::Instance().GetObjectInWorld(GetId(), x, y, guid, (Corpse*)NULL); + Corpse* corpse = ObjectAccessor::GetObjectInWorld(guid, (Corpse*)NULL); + if(!corpse || corpse->GetMapId() != GetId()) + return false; + + CellPair p = MaNGOS::ComputeCellPair(x,y); + if(p.x_coord >= TOTAL_NUMBER_OF_CELLS_PER_MAP || p.y_coord >= TOTAL_NUMBER_OF_CELLS_PER_MAP ) + { + sLog.outError("Map::RemoveBones: invalid coordinates supplied X:%f Y:%f grid cell [%u:%u]", x, y, p.x_coord, p.y_coord); + return false; + } + + CellPair q = MaNGOS::ComputeCellPair(corpse->GetPositionX(),corpse->GetPositionY()); + if(q.x_coord >= TOTAL_NUMBER_OF_CELLS_PER_MAP || q.y_coord >= TOTAL_NUMBER_OF_CELLS_PER_MAP ) + { + sLog.outError("Map::RemoveBones: object (GUID: %u TypeId: %u) has invalid coordinates X:%f Y:%f grid cell [%u:%u]", corpse->GetGUIDLow(), corpse->GetTypeId(), corpse->GetPositionX(), corpse->GetPositionY(), q.x_coord, q.y_coord); + return false; + } + + int32 dx = int32(p.x_coord) - int32(q.x_coord); + int32 dy = int32(p.y_coord) - int32(q.y_coord); + + if (dx <= -2 || dx >= 2 || dy <= -2 || dy >= 2) + return false; + if(corpse && corpse->GetTypeId() == TYPEID_CORPSE && corpse->GetType() == CORPSE_BONES) corpse->DeleteBonesFromWorld(); else diff --git a/src/game/ObjectAccessor.cpp b/src/game/ObjectAccessor.cpp index 7cc289104..1001ae9d2 100644 --- a/src/game/ObjectAccessor.cpp +++ b/src/game/ObjectAccessor.cpp @@ -182,18 +182,6 @@ ObjectAccessor::SaveAllPlayers() itr->second->SaveToDB(); } -Pet* -ObjectAccessor::GetPet(uint64 guid) -{ - return GetObjectInWorld(guid, (Pet*)NULL); -} - -Vehicle* -ObjectAccessor::GetVehicle(uint64 guid) -{ - return GetObjectInWorld(guid, (Vehicle*)NULL); -} - Corpse* ObjectAccessor::GetCorpseForPlayerGUID(uint64 guid) { @@ -343,11 +331,3 @@ template class HashMapHolder; /// Define the static member of ObjectAccessor std::list ObjectAccessor::i_mapList; - -template Player* ObjectAccessor::GetObjectInWorld(uint32 mapid, float x, float y, uint64 guid, Player* /*fake*/); -template Pet* ObjectAccessor::GetObjectInWorld(uint32 mapid, float x, float y, uint64 guid, Pet* /*fake*/); -template Vehicle* ObjectAccessor::GetObjectInWorld(uint32 mapid, float x, float y, uint64 guid, Vehicle* /*fake*/); -template Creature* ObjectAccessor::GetObjectInWorld(uint32 mapid, float x, float y, uint64 guid, Creature* /*fake*/); -template Corpse* ObjectAccessor::GetObjectInWorld(uint32 mapid, float x, float y, uint64 guid, Corpse* /*fake*/); -template GameObject* ObjectAccessor::GetObjectInWorld(uint32 mapid, float x, float y, uint64 guid, GameObject* /*fake*/); -template DynamicObject* ObjectAccessor::GetObjectInWorld(uint32 mapid, float x, float y, uint64 guid, DynamicObject* /*fake*/); diff --git a/src/game/ObjectAccessor.h b/src/game/ObjectAccessor.h index c562f5e74..a51fdb773 100644 --- a/src/game/ObjectAccessor.h +++ b/src/game/ObjectAccessor.h @@ -90,46 +90,25 @@ class MANGOS_DLL_DECL ObjectAccessor : public MaNGOS::Singleton Player2CorpsesMapType; - template static T* GetObjectInWorld(uint64 guid, T* /*fake*/) - { - return HashMapHolder::Find(guid); - } + // global + static Player* GetObjectInWorld(uint64 guid, Player* /*fake*/) { return HashMapHolder::Find(guid); } + static Corpse* GetObjectInWorld(uint64 guid, Corpse* /*fake*/) { return HashMapHolder::Find(guid); } + static Unit* GetObjectInWorld(uint64 guid, Unit* /*fake*/); - template static T* GetObjectInWorld(uint32 mapid, float x, float y, uint64 guid, T* /*fake*/) - { - T* obj = GetObjectInWorld(guid, (T*)NULL); - if(!obj || obj->GetMapId() != mapid) return NULL; - - CellPair p = MaNGOS::ComputeCellPair(x,y); - if(p.x_coord >= TOTAL_NUMBER_OF_CELLS_PER_MAP || p.y_coord >= TOTAL_NUMBER_OF_CELLS_PER_MAP ) - { - sLog.outError("ObjectAccessor::GetObjectInWorld: invalid coordinates supplied X:%f Y:%f grid cell [%u:%u]", x, y, p.x_coord, p.y_coord); - return NULL; - } - - CellPair q = MaNGOS::ComputeCellPair(obj->GetPositionX(),obj->GetPositionY()); - if(q.x_coord >= TOTAL_NUMBER_OF_CELLS_PER_MAP || q.y_coord >= TOTAL_NUMBER_OF_CELLS_PER_MAP ) - { - sLog.outError("ObjectAccessor::GetObjecInWorld: object (GUID: %u TypeId: %u) has invalid coordinates X:%f Y:%f grid cell [%u:%u]", obj->GetGUIDLow(), obj->GetTypeId(), obj->GetPositionX(), obj->GetPositionY(), q.x_coord, q.y_coord); - return NULL; - } - - int32 dx = int32(p.x_coord) - int32(q.x_coord); - int32 dy = int32(p.y_coord) - int32(q.y_coord); - - if (dx > -2 && dx < 2 && dy > -2 && dy < 2) return obj; - else return NULL; - } + // map local object with global search + static Creature* GetObjectInWorld(uint64 guid, Creature* /*fake*/) { return FindHelper(guid); } + static GameObject* GetObjectInWorld(uint64 guid, GameObject* /*fake*/) { return FindHelper(guid); } + static Pet* GetObjectInWorld(uint64 guid, Pet* /*fake*/) { return FindHelper(guid); } + static Vehicle* GetObjectInWorld(uint64 guid, Vehicle* /*fake*/) { return FindHelper(guid); } static WorldObject* GetWorldObject(WorldObject const &, uint64); static Object* GetObjectByTypeMask(WorldObject const &, uint64, uint32 typemask); static Creature* GetCreatureOrPetOrVehicle(WorldObject const &, uint64); static Unit* GetUnit(WorldObject const &, uint64); - static Pet* GetPet(Unit const &, uint64 guid) { return GetPet(guid); } static Player* GetPlayer(Unit const &, uint64 guid) { return FindPlayer(guid); } static Corpse* GetCorpse(WorldObject const &u, uint64 guid); - static Pet* GetPet(uint64 guid); - static Vehicle* GetVehicle(uint64 guid); + static Pet* GetPet(uint64 guid) { return GetObjectInWorld(guid, (Pet*)NULL); } + static Vehicle* GetVehicle(uint64 guid) { return GetObjectInWorld(guid, (Vehicle*)NULL); } static Player* FindPlayer(uint64); Player* FindPlayerByName(const char *name) ; @@ -139,20 +118,11 @@ class MANGOS_DLL_DECL ObjectAccessor : public MaNGOS::Singleton::GetContainer(); } - template void AddObject(T *object) - { - HashMapHolder::Insert(object); - } - - template void RemoveObject(T *object) - { - HashMapHolder::Remove(object); - } - - void RemoveObject(Player *pl) - { - HashMapHolder::Remove(pl); - } + // For call from Player/Corpse AddToWorld/RemoveFromWorld only + void AddObject(Corpse *object) { HashMapHolder::Insert(object); } + void AddObject(Player *object) { HashMapHolder::Insert(object); } + void RemoveObject(Corpse *object) { HashMapHolder::Remove(object); } + void RemoveObject(Player *object) { HashMapHolder::Remove(object); } void SaveAllPlayers(); @@ -193,33 +163,7 @@ class MANGOS_DLL_DECL ObjectAccessor : public MaNGOS::Singleton inline Creature* ObjectAccessor::GetObjectInWorld(uint64 guid, Creature* /*fake*/) -{ - return FindHelper(guid); -} - -template <> inline GameObject* ObjectAccessor::GetObjectInWorld(uint64 guid, GameObject* /*fake*/) -{ - return FindHelper(guid); -} - -template <> inline DynamicObject* ObjectAccessor::GetObjectInWorld(uint64 guid, DynamicObject* /*fake*/) -{ - return FindHelper(guid); -} - -template <> inline Pet* ObjectAccessor::GetObjectInWorld(uint64 guid, Pet* /*fake*/) -{ - return FindHelper(guid); -} - -template <> inline Vehicle* ObjectAccessor::GetObjectInWorld(uint64 guid, Vehicle* /*fake*/) -{ - return FindHelper(guid); -} - -template <> inline Unit* ObjectAccessor::GetObjectInWorld(uint64 guid, Unit* /*fake*/) +inline Unit* ObjectAccessor::GetObjectInWorld(uint64 guid, Unit* /*fake*/) { if(!guid) return NULL; @@ -234,9 +178,9 @@ template <> inline Unit* ObjectAccessor::GetObjectInWorld(uint64 guid, Unit* /*f } if (IS_PET_GUID(guid)) - return (Unit*)GetObjectInWorld(guid, (Pet*)NULL); + return GetObjectInWorld(guid, (Pet*)NULL); - return (Unit*)GetObjectInWorld(guid, (Creature*)NULL); + return GetObjectInWorld(guid, (Creature*)NULL); } #endif diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 575cb392c..b36d78094 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "8702" + #define REVISION_NR "8703" #endif // __REVISION_NR_H__