mirror of
https://github.com/mangosfour/server.git
synced 2025-12-14 16:37:01 +00:00
[9575] Use ObjectGuid in Map object stores/world access/search.
This commit is contained in:
parent
b01de55396
commit
a12fecab0d
18 changed files with 131 additions and 126 deletions
|
|
@ -21674,4 +21674,45 @@ void Player::SetHomebindToLocation(WorldLocation const& loc, uint32 area_id)
|
|||
m_homebindMapId, m_homebindAreaId, m_homebindX, m_homebindY, m_homebindZ, GetGUIDLow());
|
||||
}
|
||||
|
||||
Object* Player::GetObjectByTypeMask(ObjectGuid guid, TypeMask typemask)
|
||||
{
|
||||
switch(guid.GetHigh())
|
||||
{
|
||||
case HIGHGUID_ITEM:
|
||||
if (typemask & TYPEMASK_ITEM)
|
||||
return GetItemByGuid(guid.GetRawValue());
|
||||
break;
|
||||
case HIGHGUID_PLAYER:
|
||||
if (GetGUID()==guid.GetRawValue())
|
||||
return this;
|
||||
if ((typemask & TYPEMASK_PLAYER) && IsInWorld())
|
||||
return ObjectAccessor::FindPlayer(guid.GetRawValue());
|
||||
break;
|
||||
case HIGHGUID_GAMEOBJECT:
|
||||
if ((typemask & TYPEMASK_GAMEOBJECT) && IsInWorld())
|
||||
return GetMap()->GetGameObject(guid);
|
||||
break;
|
||||
case HIGHGUID_UNIT:
|
||||
if ((typemask & TYPEMASK_UNIT) && IsInWorld())
|
||||
return GetMap()->GetCreature(guid);
|
||||
break;
|
||||
case HIGHGUID_PET:
|
||||
if ((typemask & TYPEMASK_UNIT) && IsInWorld())
|
||||
return GetMap()->GetPet(guid);
|
||||
break;
|
||||
case HIGHGUID_VEHICLE:
|
||||
if ((typemask & TYPEMASK_UNIT) && IsInWorld())
|
||||
return GetMap()->GetVehicle(guid);
|
||||
break;
|
||||
case HIGHGUID_DYNAMICOBJECT:
|
||||
if ((typemask & TYPEMASK_DYNAMICOBJECT) && IsInWorld())
|
||||
return GetMap()->GetDynamicObject(guid);
|
||||
break;
|
||||
case HIGHGUID_TRANSPORT:
|
||||
case HIGHGUID_CORPSE:
|
||||
case HIGHGUID_MO_TRANSPORT:
|
||||
break;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue