AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
Acore::VisibleNotifier Struct Reference

#include "GridNotifiers.h"

Inheritance diagram for Acore::VisibleNotifier:
Acore::PlayerRelocationNotifier

Public Member Functions

 VisibleNotifier (Player &player, bool gobjOnly)
 
void Visit (GameObjectMapType &)
 
template<class T >
void Visit (std::vector< T > &m)
 
template<class T >
void Visit (GridRefMgr< T > &m)
 
void SendToSelf (void)
 

Public Attributes

Playeri_player
 
std::vector< Unit * > & i_visibleNow
 
bool i_gobjOnly
 
UpdateData i_data
 

Detailed Description

Constructor & Destructor Documentation

◆ VisibleNotifier()

Acore::VisibleNotifier::VisibleNotifier ( Player player,
bool  gobjOnly 
)
inline
50 :
51 i_player(player), i_visibleNow(player.m_newVisible), i_gobjOnly(gobjOnly)
52 {
53 i_visibleNow.clear();
54 }
std::vector< Unit * > m_newVisible
Definition Player.h:2392
bool i_gobjOnly
Definition GridNotifiers.h:47
std::vector< Unit * > & i_visibleNow
Definition GridNotifiers.h:46
Player & i_player
Definition GridNotifiers.h:45

References i_visibleNow.

Member Function Documentation

◆ SendToSelf()

void VisibleNotifier::SendToSelf ( void  )
37{
38 // Update far visible objects
40 if (zoneWideVisibleObjects)
41 {
42 for (WorldObject* obj : *zoneWideVisibleObjects)
43 {
44 switch (obj->GetTypeId())
45 {
47 i_player.UpdateVisibilityOf(obj->ToGameObject(), i_data, i_visibleNow);
48 break;
49 case TYPEID_UNIT:
51 break;
53 i_player.UpdateVisibilityOf(obj->ToDynObject(), i_data, i_visibleNow);
54 break;
55 default:
56 break;
57 }
58 }
59 }
60
62 for (VisibleWorldObjectsMap::iterator itr = visibleWorldObjects->begin(); itr != visibleWorldObjects->end();)
63 {
64 WorldObject* obj = itr->second;
66 || i_player.CanSeeOrDetect(obj, false, true))
67 {
68 ++itr;
69 continue;
70 }
71
73
74 if (Player* objPlayer = obj->ToPlayer())
75 objPlayer->UpdateVisibilityOf(&i_player);
76
77 // Clean up references
79 }
80
81 if (!i_data.HasData())
82 return;
83
84 WorldPacket packet;
85 i_data.BuildPacket(packet);
86 i_player.GetSession()->SendPacket(&packet);
87
88 for (std::vector<Unit*>::const_iterator it = i_visibleNow.begin(); it != i_visibleNow.end(); ++it)
90}
std::unordered_set< WorldObject * > ZoneWideVisibleWorldObjectsSet
Definition Map.h:150
@ TYPEID_DYNAMICOBJECT
Definition ObjectGuid.h:38
@ TYPEID_GAMEOBJECT
Definition ObjectGuid.h:37
@ TYPEID_UNIT
Definition ObjectGuid.h:35
std::unordered_map< ObjectGuid, WorldObject * > VisibleWorldObjectsMap
Definition ObjectVisibilityContainer.h:29
ZoneWideVisibleWorldObjectsSet const * GetZoneWideVisibleWorldObjectsForZone(uint32 zoneId) const
Definition Map.cpp:665
VisibleWorldObjectsMap * GetVisibleWorldObjectsMap()
Definition ObjectVisibilityContainer.h:59
VisibleWorldObjectsMap::iterator UnlinkVisibilityFromPlayer(WorldObject *worldObject, VisibleWorldObjectsMap::iterator itr)
Definition ObjectVisibilityContainer.cpp:91
Player * ToPlayer()
Definition Object.h:202
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:113
Definition Player.h:1072
bool IsWorldObjectOutOfSightRange(WorldObject const *target) const
Definition Player.cpp:16319
void UpdateVisibilityOf(WorldObject *target)
Definition PlayerUpdates.cpp:1707
WorldSession * GetSession() const
Definition Player.h:2005
void GetInitialVisiblePackets(Unit *target)
Definition PlayerUpdates.cpp:1696
bool HasData() const
Definition UpdateData.h:60
bool BuildPacket(WorldPacket &packet)
Definition UpdateData.cpp:48
void AddOutOfRangeGUID(ObjectGuid guid)
Definition UpdateData.cpp:31
Definition Object.h:472
Map * GetMap() const
Definition Object.h:621
ObjectVisibilityContainer & GetObjectVisibilityContainer()
Definition Object.h:726
uint32 GetZoneId() const
Definition Object.cpp:3038
bool CanSeeOrDetect(WorldObject const *obj, bool ignoreStealth=false, bool distanceCheck=false, bool checkAlert=false) const
Definition Object.cpp:1705
Definition WorldPacket.h:26
void SendPacket(WorldPacket const *packet)
Send a packet to the client.
Definition WorldSession.cpp:251
UpdateData i_data
Definition GridNotifiers.h:48

References UpdateData::AddOutOfRangeGUID(), UpdateData::BuildPacket(), WorldObject::CanSeeOrDetect(), Object::GetGUID(), Player::GetInitialVisiblePackets(), WorldObject::GetMap(), WorldObject::GetObjectVisibilityContainer(), Player::GetSession(), ObjectVisibilityContainer::GetVisibleWorldObjectsMap(), WorldObject::GetZoneId(), Map::GetZoneWideVisibleWorldObjectsForZone(), UpdateData::HasData(), i_data, i_player, i_visibleNow, Player::IsWorldObjectOutOfSightRange(), WorldSession::SendPacket(), Object::ToPlayer(), TYPEID_DYNAMICOBJECT, TYPEID_GAMEOBJECT, TYPEID_UNIT, ObjectVisibilityContainer::UnlinkVisibilityFromPlayer(), and Player::UpdateVisibilityOf().

Referenced by Unit::ExecuteDelayedUnitRelocationEvent(), and Player::UpdateVisibilityForPlayer().

◆ Visit() [1/3]

void VisibleNotifier::Visit ( GameObjectMapType m)
28{
29 for (GameObjectMapType::iterator iter = m.begin(); iter != m.end(); ++iter)
30 {
31 GameObject* go = iter->GetSource();
33 }
34}
Definition GameObject.h:120
iterator begin()
Definition GridRefMgr.h:35
iterator end()
Definition GridRefMgr.h:36
Definition LinkedList.h:139

References GridRefMgr< OBJECT >::begin(), GridRefMgr< OBJECT >::end(), i_data, i_player, i_visibleNow, and Player::UpdateVisibilityOf().

Referenced by Acore::PlayerRelocationNotifier::Visit(), and Acore::PlayerRelocationNotifier::Visit().

◆ Visit() [2/3]

template<class T >
void Acore::VisibleNotifier::Visit ( GridRefMgr< T > &  m)
inline
37{
38 // Xinef: Update gameobjects only
39 if (i_gobjOnly)
40 return;
41
42 for (typename GridRefMgr<T>::iterator iter = m.begin(); iter != m.end(); ++iter)
44}

References GridRefMgr< OBJECT >::begin(), and GridRefMgr< OBJECT >::end().

◆ Visit() [3/3]

template<class T >
void Acore::VisibleNotifier::Visit ( std::vector< T > &  m)
inline
30{
31 for (typename std::vector<T>::iterator iter = m.begin(); iter != m.end(); ++iter)
33}

References i_data, i_player, i_visibleNow, and Player::UpdateVisibilityOf().

Member Data Documentation

◆ i_data

UpdateData Acore::VisibleNotifier::i_data

◆ i_gobjOnly

bool Acore::VisibleNotifier::i_gobjOnly

◆ i_player

Player& Acore::VisibleNotifier::i_player

◆ i_visibleNow

std::vector<Unit*>& Acore::VisibleNotifier::i_visibleNow

The documentation for this struct was generated from the following files: