AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
WorldObjectChangeAccumulator Struct Reference

Public Member Functions

 WorldObjectChangeAccumulator (WorldObject &obj, UpdateDataMapType &d, UpdatePlayerSet &p)
 
void Visit (PlayerMapType &m)
 
void Visit (CreatureMapType &m)
 
void Visit (DynamicObjectMapType &m)
 
void BuildPacket (Player *player)
 
template<class SKIP >
void Visit (GridRefMgr< SKIP > &)
 

Public Attributes

UpdateDataMapTypei_updateDatas
 
UpdatePlayerSeti_playerSet
 
WorldObjecti_object
 

Detailed Description

Constructor & Destructor Documentation

◆ WorldObjectChangeAccumulator()

WorldObjectChangeAccumulator::WorldObjectChangeAccumulator ( WorldObject obj,
UpdateDataMapType d,
UpdatePlayerSet p 
)
inline
2963 : i_updateDatas(d), i_playerSet(p), i_object(obj)
2964 {
2965 i_playerSet.clear();
2966 }
UpdatePlayerSet & i_playerSet
Definition: Object.cpp:2961
UpdateDataMapType & i_updateDatas
Definition: Object.cpp:2960
WorldObject & i_object
Definition: Object.cpp:2962

References i_playerSet.

Member Function Documentation

◆ BuildPacket()

void WorldObjectChangeAccumulator::BuildPacket ( Player player)
inline
3019 {
3020 // Only send update once to a player
3021 if (i_playerSet.find(player->GetGUID()) == i_playerSet.end() && player->HaveAtClient(&i_object))
3022 {
3024 i_playerSet.insert(player->GetGUID());
3025 }
3026 }
void BuildFieldsUpdate(Player *, UpdateDataMapType &) const
Definition: Object.cpp:545
static ObjectGuid GetGUID(Object const *o)
Definition: Object.h:106
bool HaveAtClient(WorldObject const *u) const
Definition: Player.cpp:11316

References Object::BuildFieldsUpdate(), Object::GetGUID(), Player::HaveAtClient(), i_object, i_playerSet, and i_updateDatas.

Referenced by Visit().

◆ Visit() [1/4]

void WorldObjectChangeAccumulator::Visit ( CreatureMapType m)
inline
2986 {
2987 Creature* source = nullptr;
2988 for (CreatureMapType::iterator iter = m.begin(); iter != m.end(); ++iter)
2989 {
2990 source = iter->GetSource();
2991 if (source->HasSharedVision())
2992 {
2993 SharedVisionList::const_iterator it = source->GetSharedVisionList().begin();
2994 for (; it != source->GetSharedVisionList().end(); ++it)
2995 BuildPacket(*it);
2996 }
2997 }
2998 }
Definition: LinkedList.h:139
Definition: Creature.h:46
void BuildPacket(Player *player)
Definition: Object.cpp:3018
SharedVisionList const & GetSharedVisionList()
Definition: Unit.h:1901
bool HasSharedVision() const
Definition: Unit.h:1904
iterator begin()
Definition: GridRefMgr.h:35
iterator end()
Definition: GridRefMgr.h:36

References GridRefMgr< OBJECT >::begin(), BuildPacket(), GridRefMgr< OBJECT >::end(), Unit::GetSharedVisionList(), and Unit::HasSharedVision().

◆ Visit() [2/4]

void WorldObjectChangeAccumulator::Visit ( DynamicObjectMapType m)
inline
3001 {
3002 DynamicObject* source = nullptr;
3003 for (DynamicObjectMapType::iterator iter = m.begin(); iter != m.end(); ++iter)
3004 {
3005 source = iter->GetSource();
3006 ObjectGuid guid = source->GetCasterGUID();
3007
3008 if (guid)
3009 {
3010 //Caster may be nullptr if DynObj is in removelist
3011 if (Player* caster = ObjectAccessor::FindPlayer(guid))
3012 if (caster->GetGuidValue(PLAYER_FARSIGHT) == source->GetGUID())
3013 BuildPacket(caster);
3014 }
3015 }
3016 }
@ PLAYER_FARSIGHT
Definition: UpdateFields.h:334
Player * FindPlayer(ObjectGuid const guid)
Definition: ObjectAccessor.cpp:250
Definition: DynamicObject.h:35
ObjectGuid GetCasterGUID() const
Definition: DynamicObject.h:59
Definition: ObjectGuid.h:120
Definition: Player.h:1056

References GridRefMgr< OBJECT >::begin(), BuildPacket(), GridRefMgr< OBJECT >::end(), ObjectAccessor::FindPlayer(), DynamicObject::GetCasterGUID(), Object::GetGUID(), and PLAYER_FARSIGHT.

◆ Visit() [3/4]

template<class SKIP >
void WorldObjectChangeAccumulator::Visit ( GridRefMgr< SKIP > &  )
inline
3028{}

◆ Visit() [4/4]

void WorldObjectChangeAccumulator::Visit ( PlayerMapType m)
inline
2968 {
2969 Player* source = nullptr;
2970 for (PlayerMapType::iterator iter = m.begin(); iter != m.end(); ++iter)
2971 {
2972 source = iter->GetSource();
2973
2974 BuildPacket(source);
2975
2976 if (source->HasSharedVision())
2977 {
2978 SharedVisionList::const_iterator it = source->GetSharedVisionList().begin();
2979 for (; it != source->GetSharedVisionList().end(); ++it)
2980 BuildPacket(*it);
2981 }
2982 }
2983 }

References GridRefMgr< OBJECT >::begin(), BuildPacket(), GridRefMgr< OBJECT >::end(), Unit::GetSharedVisionList(), and Unit::HasSharedVision().

Member Data Documentation

◆ i_object

WorldObject& WorldObjectChangeAccumulator::i_object

Referenced by BuildPacket().

◆ i_playerSet

UpdatePlayerSet& WorldObjectChangeAccumulator::i_playerSet

◆ i_updateDatas

UpdateDataMapType& WorldObjectChangeAccumulator::i_updateDatas

Referenced by BuildPacket().