48 typename MapType::iterator itr =
GetContainer().find(guid);
49 return (itr !=
GetContainer().end()) ? itr->second : NULL;
85 if (!obj || obj->GetMapId() != mapid)
91 SF_LOG_ERROR(
"misc",
"ObjectAccessor::GetObjectInWorld: invalid coordinates supplied X:%f Y:%f grid cell [%u:%u]", x, y, p.
x_coord, p.
y_coord);
98 SF_LOG_ERROR(
"misc",
"ObjectAccessor::GetObjecInWorld: object (GUID: %u TypeId: %u) has invalid coordinates X:%f Y:%f grid cell [%u:%u]", obj->GetGUIDLow(),
uint8(obj->GetTypeId()), obj->GetPositionX(), obj->GetPositionY(), q.
x_coord, q.
y_coord);
105 if (dx > -2 && dx < 2 && dy > -2 && dy < 2)
114 return player && player->
IsInWorld() ? player : NULL;
131 default:
return NULL;
141 return ((
Player const&)p).GetItemByGuid(guid);
258 std::string nameStr = name;
259 std::transform(nameStr.begin(), nameStr.end(), nameStr.begin(), ::tolower);
263 if (!iter->second->IsInWorld())
265 std::string currentName = iter->second->GetName();
266 std::transform(currentName.begin(), currentName.end(), currentName.begin(), ::tolower);
267 if (nameStr.compare(currentName) == 0)
279 itr->second->SaveToDB();
293 std::set<Object*>::iterator itr =
i_objects.find(obj);
322 map->RemoveFromMap(corpse,
false);
341 SF_LOG_ERROR(
"misc",
"ObjectAccessor::RemoveCorpse: missing owner mapping for corpse %u owner %u after world removal.",
380 if (iter->second->IsInGrid())
383 if (iter->second->GetGridCoord() == gridpair)
407 SF_LOG_DEBUG(
"misc",
"Deleting Corpse and spawned bones.");
424 if (map && (insignia ||
462 time_t now = time(NULL);
463 Player2CorpsesMapType::iterator next;
469 if (!itr->second->IsExpired(now))
499 for (UpdateDataMapType::iterator iter = update_players.begin(); iter != update_players.end(); ++iter)
501 iter->second.BuildPacket(&packet);
502 iter->first->GetSession()->SendPacket(&packet);
517 itr->second->RemoveFromWorld();
CoordPair< MAX_NUMBER_OF_GRIDS > GridCoord
CoordPair< TOTAL_NUMBER_OF_CELLS_PER_MAP > CellCoord
Grid< Player, AllWorldObjectTypes, AllGridObjectTypes > GridType
#define SF_LOG_DEBUG(filterType__,...)
#define SF_LOG_ERROR(filterType__,...)
UNORDERED_MAP< Player *, UpdateData > UpdateDataMapType
uint32 GUID_LOPART(uint64 x)
bool IS_PET_GUID(uint64 guid)
bool IS_CRE_OR_VEH_GUID(uint64 guid)
uint32 GUID_HIPART(uint64 guid)
Skyfire::AutoPtr< Transaction, Skyfire::Mutex > SQLTransaction
void DeleteFromDB(SQLTransaction &trans)
void SetGridCoord(GridCoord const &gridCoord)
bool Create(uint32 guidlow, Map *map)
uint64 GetOwnerGUID() const
CorpseType GetType() const
GridCoord const & GetGridCoord() const
void AddWorldObject(SPECIFIC_OBJECT *obj)
static SF_SHARED_MUTEX * GetLock()
static T * Find(uint64 guid)
static MapType m_objectMap
static MapType & GetContainer()
UNORDERED_MAP< uint64, T * > MapType
static SF_SHARED_MUTEX i_lock
bool IsBattlegroundOrArena() const
Transport * GetTransport(uint64 guid)
bool IsRemovalGrid(float x, float y) const
bool Instanceable() const
uint32 GetInstanceId() const
static Creature * GetCreature(WorldObject const &u, uint64 guid)
static AreaTrigger * GetAreaTrigger(WorldObject const &u, uint64 guid)
static void SaveAllPlayers()
SF_SHARED_MUTEX i_objectLock
static Pet * FindPet(uint64)
static Creature * GetCreatureOrPetOrVehicle(WorldObject const &, uint64)
static Player * FindPlayerByName(std::string const &name)
void AddCorpse(Corpse *corpse)
static T * GetObjectInMap(uint64 guid, Map *map, T *)
static Object * GetObjectByTypeMask(WorldObject const &, uint64, uint32 typemask)
static Transport * GetTransport(WorldObject const &u, uint64 guid)
static Player * FindPlayerInOrOutOfWorld(uint64)
void RemoveCorpse(Corpse *corpse)
static Player * GetPlayer(WorldObject const &, uint64 guid)
void AddUpdateObject(Object *obj)
SF_SHARED_MUTEX i_corpseLock
void RemoveUpdateObject(Object *obj)
static WorldObject * GetWorldObject(WorldObject const &, uint64)
static GameObject * GetGameObject(WorldObject const &u, uint64 guid)
static Unit * GetUnit(WorldObject const &, uint64 guid)
static HashMapHolder< Player >::MapType const & GetPlayers()
std::set< Object * > i_objects
static Corpse * GetCorpse(WorldObject const &u, uint64 guid)
static T * GetObjectInWorld(uint64 guid, T *)
Corpse * ConvertCorpseForPlayer(uint64 player_guid, bool insignia=false)
Player2CorpsesMapType i_player2corpse
void AddCorpsesToGrid(GridCoord const &gridpair, GridType &grid, Map *map)
static Player * FindPlayer(uint64)
static DynamicObject * GetDynamicObject(WorldObject const &u, uint64 guid)
static Unit * FindUnit(uint64)
Corpse * GetCorpseForPlayerGUID(uint64 guid)
static Pet * GetPet(WorldObject const &, uint64 guid)
static T * GetObjectInOrOutOfWorld(uint64 guid, T *)
uint32 GetUInt32Value(uint16 index) const
uint32 GetGUIDLow() const
virtual void BuildUpdate(UpdateDataMapType &)
void SetUInt32Value(uint16 index, uint32 value)
void SetUInt64Value(uint16 index, uint64 value)
virtual void SetPhaseMask(uint32 newPhaseMask, bool update)
uint32 GetPhaseMask() const
uint32 GetInstanceId() const
void DestroyForNearbyPlayers()
CharacterDatabaseWorkerPool CharacterDatabase
Accessor to the character database.
@ CONFIG_DEATH_BONES_WORLD
@ CONFIG_DEATH_BONES_BG_OR_ARENA
ObjectUpdateQueueDrainAction GetUpdateObjectQueueDrainAction(bool empty)
ObjectCorpseOwnerRemoveAction
@ OBJECT_CORPSE_OWNER_REMOVE_MISSING
ObjectUpdateQueueDrainAction
@ OBJECT_UPDATE_QUEUE_DRAIN_EMPTY
ObjectCorpseStorageUnloadAction GetCorpseStorageUnloadAction(bool empty)
bool CanBuildUpdateForQueuedObject(bool hasObject, bool isInWorld)
ObjectCorpseOwnerRemoveAction GetCorpseOwnerMappingRemoveAction(bool mapped)
ObjectCorpseOwnerAddAction GetCorpseOwnerMappingAddAction(bool alreadyMapped)
ObjectUpdateQueueRemoveAction GetUpdateObjectQueueRemoveAction(bool queued)
ObjectCorpseOwnerAddAction
@ OBJECT_CORPSE_OWNER_ADD_INSERT
ObjectCorpseStorageUnloadAction
@ OBJECT_CORPSE_STORAGE_UNLOAD_EMPTY
ObjectUpdateQueueAddAction GetUpdateObjectQueueAddAction(bool alreadyQueued)
ObjectUpdateQueueRemoveAction
@ OBJECT_UPDATE_QUEUE_REMOVE_ERASE
ObjectUpdateQueueAddAction
@ OBJECT_UPDATE_QUEUE_ADD_INSERT
CellCoord ComputeCellCoord(float x, float y)
bool IsCoordValid() const
float GetPositionZ() const
float GetOrientation() const
float GetPositionX() const
float GetPositionY() const
void Relocate(float x, float y)