AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
ObjectVisibilityContainer Class Reference

#include "ObjectVisibilityContainer.h"

Public Member Functions

 ObjectVisibilityContainer (WorldObject *selfObject)
 
 ~ObjectVisibilityContainer ()
 
void InitForPlayer ()
 
void CleanVisibilityReferences ()
 
void LinkWorldObjectVisibility (WorldObject *worldObject)
 
void UnlinkWorldObjectVisibility (WorldObject *worldObject)
 
VisibleWorldObjectsMap::iterator UnlinkVisibilityFromPlayer (WorldObject *worldObject, VisibleWorldObjectsMap::iterator itr)
 
VisiblePlayersMap::iterator UnlinkVisibilityFromWorldObject (Player *player, VisiblePlayersMap::iterator itr)
 
VisiblePlayersMapGetVisiblePlayersMap ()
 
VisiblePlayersMap const & GetVisiblePlayersMap () const
 
VisibleWorldObjectsMapGetVisibleWorldObjectsMap ()
 
VisibleWorldObjectsMap const * GetVisibleWorldObjectsMap () const
 

Private Member Functions

void DirectRemoveVisibilityReference (ObjectGuid guid)
 
void DirectInsertVisiblePlayerReference (Player *player)
 
void DirectRemoveVisiblePlayerReference (ObjectGuid guid)
 

Private Attributes

WorldObject_selfObject
 
std::unique_ptr< VisibleWorldObjectsMap_visibleWorldObjectsMap
 
VisiblePlayersMap _visiblePlayersMap
 

Detailed Description

Constructor & Destructor Documentation

◆ ObjectVisibilityContainer()

ObjectVisibilityContainer::ObjectVisibilityContainer ( WorldObject selfObject)
30 :
31 _selfObject(selfObject)
32{
33}
WorldObject * _selfObject
Definition ObjectVisibilityContainer.h:90

◆ ~ObjectVisibilityContainer()

ObjectVisibilityContainer::~ObjectVisibilityContainer ( )
36{
39 ASSERT((*_visibleWorldObjectsMap).empty());
40}
#define ASSERT
Definition Errors.h:68
std::unique_ptr< VisibleWorldObjectsMap > _visibleWorldObjectsMap
Definition ObjectVisibilityContainer.h:94
VisiblePlayersMap _visiblePlayersMap
Definition ObjectVisibilityContainer.h:98

References _visiblePlayersMap, _visibleWorldObjectsMap, and ASSERT.

Member Function Documentation

◆ CleanVisibilityReferences()

void ObjectVisibilityContainer::CleanVisibilityReferences ( )
48{
49 for (auto const& kvPair : _visiblePlayersMap)
50 kvPair.second->GetObjectVisibilityContainer().DirectRemoveVisibilityReference(_selfObject->GetGUID());
51
53 {
54 for (auto const& kvPair : *_visibleWorldObjectsMap)
55 kvPair.second->GetObjectVisibilityContainer().DirectRemoveVisiblePlayerReference(_selfObject->GetGUID());
56
57 (*_visibleWorldObjectsMap).clear();
58 }
59
60 _visiblePlayersMap.clear();
61}
void DirectRemoveVisiblePlayerReference(ObjectGuid guid)
Definition ObjectVisibilityContainer.cpp:111
void DirectRemoveVisibilityReference(ObjectGuid guid)
Definition ObjectVisibilityContainer.cpp:100

References _selfObject, _visiblePlayersMap, _visibleWorldObjectsMap, and Object::GetGUID().

Referenced by WorldObject::RemoveFromWorld().

◆ DirectInsertVisiblePlayerReference()

void ObjectVisibilityContainer::DirectInsertVisiblePlayerReference ( Player player)
private
107{
108 _visiblePlayersMap.insert(std::make_pair(player->GetGUID(), player));
109}
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:113

References _visiblePlayersMap, and Object::GetGUID().

Referenced by LinkWorldObjectVisibility().

◆ DirectRemoveVisibilityReference()

void ObjectVisibilityContainer::DirectRemoveVisibilityReference ( ObjectGuid  guid)
private
101{
103 (*_visibleWorldObjectsMap).erase(guid);
104}

References _visibleWorldObjectsMap, and ASSERT.

Referenced by UnlinkVisibilityFromWorldObject().

◆ DirectRemoveVisiblePlayerReference()

void ObjectVisibilityContainer::DirectRemoveVisiblePlayerReference ( ObjectGuid  guid)
private
112{
113 _visiblePlayersMap.erase(guid);
114}

References _visiblePlayersMap.

Referenced by UnlinkVisibilityFromPlayer(), and UnlinkWorldObjectVisibility().

◆ GetVisiblePlayersMap() [1/2]

VisiblePlayersMap & ObjectVisibilityContainer::GetVisiblePlayersMap ( )
inline

◆ GetVisiblePlayersMap() [2/2]

VisiblePlayersMap const & ObjectVisibilityContainer::GetVisiblePlayersMap ( ) const
inline
55{ return _visiblePlayersMap; }

References _visiblePlayersMap.

◆ GetVisibleWorldObjectsMap() [1/2]

VisibleWorldObjectsMap * ObjectVisibilityContainer::GetVisibleWorldObjectsMap ( )
inline

◆ GetVisibleWorldObjectsMap() [2/2]

VisibleWorldObjectsMap const * ObjectVisibilityContainer::GetVisibleWorldObjectsMap ( ) const
inline
68 {
70 return nullptr;
71
72 return _visibleWorldObjectsMap.get();
73 }

References _visibleWorldObjectsMap.

◆ InitForPlayer()

void ObjectVisibilityContainer::InitForPlayer ( )
43{
44 _visibleWorldObjectsMap = std::make_unique<VisibleWorldObjectsMap>();
45}

References _visibleWorldObjectsMap.

Referenced by Player::Player().

◆ LinkWorldObjectVisibility()

void ObjectVisibilityContainer::LinkWorldObjectVisibility ( WorldObject worldObject)
64{
65 // Do not link self
66 if (worldObject == _selfObject)
67 return;
68
69 // Only players can link visibility
71 return;
72
73 (*_visibleWorldObjectsMap).insert(std::make_pair(worldObject->GetGUID(), worldObject));
75}
void DirectInsertVisiblePlayerReference(Player *player)
Definition ObjectVisibilityContainer.cpp:106
Player * ToPlayer()
Definition Object.h:202
ObjectVisibilityContainer & GetObjectVisibilityContainer()
Definition Object.h:713

References _selfObject, _visibleWorldObjectsMap, DirectInsertVisiblePlayerReference(), Object::GetGUID(), WorldObject::GetObjectVisibilityContainer(), and Object::ToPlayer().

Referenced by Player::UpdateVisibilityOf(), UpdateVisibilityOf_helper(), UpdateVisibilityOf_helper(), UpdateVisibilityOf_helper(), and UpdateVisibilityOf_helper().

◆ UnlinkVisibilityFromPlayer()

VisibleWorldObjectsMap::iterator ObjectVisibilityContainer::UnlinkVisibilityFromPlayer ( WorldObject worldObject,
VisibleWorldObjectsMap::iterator  itr 
)
88{
89 ASSERT(_visibleWorldObjectsMap); // Ensure we aren't for some reason calling this as a non-player object
91 return (*_visibleWorldObjectsMap).erase(itr);
92}

References _selfObject, _visibleWorldObjectsMap, ASSERT, DirectRemoveVisiblePlayerReference(), Object::GetGUID(), and WorldObject::GetObjectVisibilityContainer().

Referenced by Acore::VisibleNotifier::SendToSelf().

◆ UnlinkVisibilityFromWorldObject()

VisiblePlayersMap::iterator ObjectVisibilityContainer::UnlinkVisibilityFromWorldObject ( Player player,
VisiblePlayersMap::iterator  itr 
)

◆ UnlinkWorldObjectVisibility()

void ObjectVisibilityContainer::UnlinkWorldObjectVisibility ( WorldObject worldObject)
78{
79 // Only players can unlink visibility
81 return;
82
84 (*_visibleWorldObjectsMap).erase(worldObject->GetGUID());
85}

References _selfObject, _visibleWorldObjectsMap, DirectRemoveVisiblePlayerReference(), Object::GetGUID(), and WorldObject::GetObjectVisibilityContainer().

Referenced by Player::UpdateVisibilityOf(), and Player::UpdateVisibilityOf().

Member Data Documentation

◆ _selfObject

◆ _visiblePlayersMap

◆ _visibleWorldObjectsMap


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