Horizon Official Technical Documentation
GridViewPortUpdater Struct Reference

#include <GridNotifiers.hpp>

Public Member Functions

 GridViewPortUpdater (const std::shared_ptr< Horizon::Zone::Unit > &unit)
 
template<class T >
void update (GridRefManager< T > &m)
 
void Visit (GridRefManager< unit_ns(Player)> &m)
 
void Visit (GridRefManager< unit_ns(NPC)> &m)
 
void Visit (GridRefManager< unit_ns(Elemental)> &m)
 
void Visit (GridRefManager< unit_ns(Homunculus)> &m)
 
void Visit (GridRefManager< unit_ns(Mercenary)> &m)
 
void Visit (GridRefManager< unit_ns(Pet)> &m)
 
void Visit (GridRefManager< unit_ns(Monster)> &m)
 
void Visit (GridRefManager< unit_ns(Skill)> &m)
 
void Visit (GridRefManager< unit_ns(Item)> &m)
 
template<class NOT_INTERESTED >
void Visit (GridRefManager< NOT_INTERESTED > &)
 

Public Attributes

std::weak_ptr< Horizon::Zone::Unit_unit
 

Constructor & Destructor Documentation

◆ GridViewPortUpdater()

GridViewPortUpdater::GridViewPortUpdater ( const std::shared_ptr< Horizon::Zone::Unit > &  unit)
inlineexplicit
44: _unit(unit) { }
std::weak_ptr< Horizon::Zone::Unit > _unit
Definition: GridNotifiers.hpp:42

Member Function Documentation

◆ update()

template<class T >
void GridViewPortUpdater::update ( GridRefManager< T > &  m)
84{
85 using namespace Horizon::Zone::Units;
86
87 if (_unit.expired())
88 return;
89
90 std::shared_ptr<Player> pl = _unit.lock()->template downcast<Player>();
91
92 for (typename GridRefManager<T>::iterator iter = m.begin(); iter != typename GridRefManager<T>::iterator(nullptr); ++iter) {
93 if (iter->source() == nullptr || iter->source()->guid() == pl->guid())
94 continue;
95
96 if (pl->get_session() == nullptr || pl->get_session()->clif() == nullptr)
97 continue;
98
99
100 std::shared_ptr<Horizon::Zone::Unit> vp_e = iter->source()->shared_from_this();
101
102 if (pl->is_in_range_of(vp_e, MAX_VIEW_RANGE) && !vp_e->is_walking() && !vp_e->is_dead())
103 pl->add_unit_to_viewport(vp_e);
104 else if (!pl->is_in_range_of(vp_e, MAX_VIEW_RANGE))
105 pl->remove_unit_from_viewport(vp_e, EVP_NOTIFY_OUT_OF_SIGHT);
106 }
107}
#define MAX_VIEW_RANGE
Definition: Horizon.hpp:59
@ EVP_NOTIFY_OUT_OF_SIGHT
Definition: UnitDefinitions.hpp:838
Forward declaration of GridRefManager, the class that manages GridReference.
Definition: GridRefManager.hpp:41
iterator begin()
Definition: GridRefManager.hpp:54
Definition: GameLogicProcess.hpp:43

References _unit, GridRefManager< OBJECT >::begin(), EVP_NOTIFY_OUT_OF_SIGHT, and MAX_VIEW_RANGE.

+ Here is the call graph for this function:

◆ Visit() [1/10]

template<class NOT_INTERESTED >
void GridViewPortUpdater::Visit ( GridRefManager< NOT_INTERESTED > &  )
inline
60{ }

◆ Visit() [2/10]

void GridViewPortUpdater::Visit ( GridRefManager< unit_ns(Elemental)> &  m)

◆ Visit() [3/10]

void GridViewPortUpdater::Visit ( GridRefManager< unit_ns(Homunculus)> &  m)

◆ Visit() [4/10]

void GridViewPortUpdater::Visit ( GridRefManager< unit_ns(Item)> &  m)

◆ Visit() [5/10]

void GridViewPortUpdater::Visit ( GridRefManager< unit_ns(Mercenary)> &  m)

◆ Visit() [6/10]

void GridViewPortUpdater::Visit ( GridRefManager< unit_ns(Monster)> &  m)

◆ Visit() [7/10]

void GridViewPortUpdater::Visit ( GridRefManager< unit_ns(NPC)> &  m)

◆ Visit() [8/10]

void GridViewPortUpdater::Visit ( GridRefManager< unit_ns(Pet)> &  m)

◆ Visit() [9/10]

void GridViewPortUpdater::Visit ( GridRefManager< unit_ns(Player)> &  m)

◆ Visit() [10/10]

void GridViewPortUpdater::Visit ( GridRefManager< unit_ns(Skill)> &  m)

Member Data Documentation

◆ _unit

std::weak_ptr<Horizon::Zone::Unit> GridViewPortUpdater::_unit

Referenced by update().


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