mirror of
https://github.com/mangosfour/server.git
synced 2025-12-14 16:37:01 +00:00
[8703] Remove templates and some used functions from ObjectAccessor.
This commit is contained in:
parent
69abc9ece4
commit
f762b57fea
4 changed files with 44 additions and 97 deletions
|
|
@ -775,7 +775,30 @@ bool Map::RemoveBones(uint64 guid, float x, float y)
|
||||||
{
|
{
|
||||||
if (IsRemovalGrid(x, 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)
|
if(corpse && corpse->GetTypeId() == TYPEID_CORPSE && corpse->GetType() == CORPSE_BONES)
|
||||||
corpse->DeleteBonesFromWorld();
|
corpse->DeleteBonesFromWorld();
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -182,18 +182,6 @@ ObjectAccessor::SaveAllPlayers()
|
||||||
itr->second->SaveToDB();
|
itr->second->SaveToDB();
|
||||||
}
|
}
|
||||||
|
|
||||||
Pet*
|
|
||||||
ObjectAccessor::GetPet(uint64 guid)
|
|
||||||
{
|
|
||||||
return GetObjectInWorld(guid, (Pet*)NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
Vehicle*
|
|
||||||
ObjectAccessor::GetVehicle(uint64 guid)
|
|
||||||
{
|
|
||||||
return GetObjectInWorld(guid, (Vehicle*)NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
Corpse*
|
Corpse*
|
||||||
ObjectAccessor::GetCorpseForPlayerGUID(uint64 guid)
|
ObjectAccessor::GetCorpseForPlayerGUID(uint64 guid)
|
||||||
{
|
{
|
||||||
|
|
@ -343,11 +331,3 @@ template class HashMapHolder<Corpse>;
|
||||||
|
|
||||||
/// Define the static member of ObjectAccessor
|
/// Define the static member of ObjectAccessor
|
||||||
std::list<Map*> ObjectAccessor::i_mapList;
|
std::list<Map*> ObjectAccessor::i_mapList;
|
||||||
|
|
||||||
template Player* ObjectAccessor::GetObjectInWorld<Player>(uint32 mapid, float x, float y, uint64 guid, Player* /*fake*/);
|
|
||||||
template Pet* ObjectAccessor::GetObjectInWorld<Pet>(uint32 mapid, float x, float y, uint64 guid, Pet* /*fake*/);
|
|
||||||
template Vehicle* ObjectAccessor::GetObjectInWorld<Vehicle>(uint32 mapid, float x, float y, uint64 guid, Vehicle* /*fake*/);
|
|
||||||
template Creature* ObjectAccessor::GetObjectInWorld<Creature>(uint32 mapid, float x, float y, uint64 guid, Creature* /*fake*/);
|
|
||||||
template Corpse* ObjectAccessor::GetObjectInWorld<Corpse>(uint32 mapid, float x, float y, uint64 guid, Corpse* /*fake*/);
|
|
||||||
template GameObject* ObjectAccessor::GetObjectInWorld<GameObject>(uint32 mapid, float x, float y, uint64 guid, GameObject* /*fake*/);
|
|
||||||
template DynamicObject* ObjectAccessor::GetObjectInWorld<DynamicObject>(uint32 mapid, float x, float y, uint64 guid, DynamicObject* /*fake*/);
|
|
||||||
|
|
|
||||||
|
|
@ -90,46 +90,25 @@ class MANGOS_DLL_DECL ObjectAccessor : public MaNGOS::Singleton<ObjectAccessor,
|
||||||
public:
|
public:
|
||||||
typedef UNORDERED_MAP<uint64, Corpse* > Player2CorpsesMapType;
|
typedef UNORDERED_MAP<uint64, Corpse* > Player2CorpsesMapType;
|
||||||
|
|
||||||
template<class T> static T* GetObjectInWorld(uint64 guid, T* /*fake*/)
|
// global
|
||||||
{
|
static Player* GetObjectInWorld(uint64 guid, Player* /*fake*/) { return HashMapHolder<Player>::Find(guid); }
|
||||||
return HashMapHolder<T>::Find(guid);
|
static Corpse* GetObjectInWorld(uint64 guid, Corpse* /*fake*/) { return HashMapHolder<Corpse>::Find(guid); }
|
||||||
}
|
static Unit* GetObjectInWorld(uint64 guid, Unit* /*fake*/);
|
||||||
|
|
||||||
template<class T> static T* GetObjectInWorld(uint32 mapid, float x, float y, uint64 guid, T* /*fake*/)
|
// map local object with global search
|
||||||
{
|
static Creature* GetObjectInWorld(uint64 guid, Creature* /*fake*/) { return FindHelper<Creature>(guid); }
|
||||||
T* obj = GetObjectInWorld(guid, (T*)NULL);
|
static GameObject* GetObjectInWorld(uint64 guid, GameObject* /*fake*/) { return FindHelper<GameObject>(guid); }
|
||||||
if(!obj || obj->GetMapId() != mapid) return NULL;
|
static Pet* GetObjectInWorld(uint64 guid, Pet* /*fake*/) { return FindHelper<Pet>(guid); }
|
||||||
|
static Vehicle* GetObjectInWorld(uint64 guid, Vehicle* /*fake*/) { return FindHelper<Vehicle>(guid); }
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
static WorldObject* GetWorldObject(WorldObject const &, uint64);
|
static WorldObject* GetWorldObject(WorldObject const &, uint64);
|
||||||
static Object* GetObjectByTypeMask(WorldObject const &, uint64, uint32 typemask);
|
static Object* GetObjectByTypeMask(WorldObject const &, uint64, uint32 typemask);
|
||||||
static Creature* GetCreatureOrPetOrVehicle(WorldObject const &, uint64);
|
static Creature* GetCreatureOrPetOrVehicle(WorldObject const &, uint64);
|
||||||
static Unit* GetUnit(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 Player* GetPlayer(Unit const &, uint64 guid) { return FindPlayer(guid); }
|
||||||
static Corpse* GetCorpse(WorldObject const &u, uint64 guid);
|
static Corpse* GetCorpse(WorldObject const &u, uint64 guid);
|
||||||
static Pet* GetPet(uint64 guid);
|
static Pet* GetPet(uint64 guid) { return GetObjectInWorld(guid, (Pet*)NULL); }
|
||||||
static Vehicle* GetVehicle(uint64 guid);
|
static Vehicle* GetVehicle(uint64 guid) { return GetObjectInWorld(guid, (Vehicle*)NULL); }
|
||||||
static Player* FindPlayer(uint64);
|
static Player* FindPlayer(uint64);
|
||||||
|
|
||||||
Player* FindPlayerByName(const char *name) ;
|
Player* FindPlayerByName(const char *name) ;
|
||||||
|
|
@ -139,20 +118,11 @@ class MANGOS_DLL_DECL ObjectAccessor : public MaNGOS::Singleton<ObjectAccessor,
|
||||||
return HashMapHolder<Player>::GetContainer();
|
return HashMapHolder<Player>::GetContainer();
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class T> void AddObject(T *object)
|
// For call from Player/Corpse AddToWorld/RemoveFromWorld only
|
||||||
{
|
void AddObject(Corpse *object) { HashMapHolder<Corpse>::Insert(object); }
|
||||||
HashMapHolder<T>::Insert(object);
|
void AddObject(Player *object) { HashMapHolder<Player>::Insert(object); }
|
||||||
}
|
void RemoveObject(Corpse *object) { HashMapHolder<Corpse>::Remove(object); }
|
||||||
|
void RemoveObject(Player *object) { HashMapHolder<Player>::Remove(object); }
|
||||||
template<class T> void RemoveObject(T *object)
|
|
||||||
{
|
|
||||||
HashMapHolder<T>::Remove(object);
|
|
||||||
}
|
|
||||||
|
|
||||||
void RemoveObject(Player *pl)
|
|
||||||
{
|
|
||||||
HashMapHolder<Player>::Remove(pl);
|
|
||||||
}
|
|
||||||
|
|
||||||
void SaveAllPlayers();
|
void SaveAllPlayers();
|
||||||
|
|
||||||
|
|
@ -193,33 +163,7 @@ class MANGOS_DLL_DECL ObjectAccessor : public MaNGOS::Singleton<ObjectAccessor,
|
||||||
LockType i_corpseGuard;
|
LockType i_corpseGuard;
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Out of class template specializations
|
inline Unit* ObjectAccessor::GetObjectInWorld(uint64 guid, Unit* /*fake*/)
|
||||||
template <> inline Creature* ObjectAccessor::GetObjectInWorld(uint64 guid, Creature* /*fake*/)
|
|
||||||
{
|
|
||||||
return FindHelper<Creature>(guid);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <> inline GameObject* ObjectAccessor::GetObjectInWorld(uint64 guid, GameObject* /*fake*/)
|
|
||||||
{
|
|
||||||
return FindHelper<GameObject>(guid);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <> inline DynamicObject* ObjectAccessor::GetObjectInWorld(uint64 guid, DynamicObject* /*fake*/)
|
|
||||||
{
|
|
||||||
return FindHelper<DynamicObject>(guid);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <> inline Pet* ObjectAccessor::GetObjectInWorld(uint64 guid, Pet* /*fake*/)
|
|
||||||
{
|
|
||||||
return FindHelper<Pet>(guid);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <> inline Vehicle* ObjectAccessor::GetObjectInWorld(uint64 guid, Vehicle* /*fake*/)
|
|
||||||
{
|
|
||||||
return FindHelper<Vehicle>(guid);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <> inline Unit* ObjectAccessor::GetObjectInWorld(uint64 guid, Unit* /*fake*/)
|
|
||||||
{
|
{
|
||||||
if(!guid)
|
if(!guid)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
@ -234,9 +178,9 @@ template <> inline Unit* ObjectAccessor::GetObjectInWorld(uint64 guid, Unit* /*f
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IS_PET_GUID(guid))
|
if (IS_PET_GUID(guid))
|
||||||
return (Unit*)GetObjectInWorld<Pet>(guid, (Pet*)NULL);
|
return GetObjectInWorld(guid, (Pet*)NULL);
|
||||||
|
|
||||||
return (Unit*)GetObjectInWorld<Creature>(guid, (Creature*)NULL);
|
return GetObjectInWorld(guid, (Creature*)NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "8702"
|
#define REVISION_NR "8703"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue