AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
Acore::NearestAttackableNoTotemUnitInObjectRangeCheck Class Reference

#include "GridNotifiers.h"

Public Member Functions

 NearestAttackableNoTotemUnitInObjectRangeCheck (WorldObject const *obj, Unit const *owner, float range)
 
bool operator() (Unit *u)
 

Private Attributes

WorldObject const * i_obj
 
Unit const * i_owner
 
float i_range
 

Detailed Description

Constructor & Destructor Documentation

◆ NearestAttackableNoTotemUnitInObjectRangeCheck()

Acore::NearestAttackableNoTotemUnitInObjectRangeCheck::NearestAttackableNoTotemUnitInObjectRangeCheck ( WorldObject const *  obj,
Unit const *  owner,
float  range 
)
inline
897: i_obj(obj), i_owner(owner), i_range(range) {}
Unit const * i_owner
Definition GridNotifiers.h:940
WorldObject const * i_obj
Definition GridNotifiers.h:939
float i_range
Definition GridNotifiers.h:941

Member Function Documentation

◆ operator()()

bool Acore::NearestAttackableNoTotemUnitInObjectRangeCheck::operator() ( Unit u)
inline
900 {
901 if (!u->IsAlive())
902 {
903 return false;
904 }
905
907 {
908 return false;
909 }
910
911 if (u->IsCreature() && u->ToCreature()->IsTotem())
912 {
913 return false;
914 }
915
916 if (!u->isTargetableForAttack(false, i_owner))
917 {
918 return false;
919 }
920
921 uint32 losChecks = LINEOFSIGHT_ALL_CHECKS;
922 Optional<float> collisionHeight = { };
923 if (i_obj->IsGameObject())
924 {
925 losChecks &= ~LINEOFSIGHT_CHECK_GOBJECT_M2;
926 collisionHeight = i_owner->GetCollisionHeight();
927 }
928
931 {
932 return false;
933 }
934
935 return true;
936 }
std::uint32_t uint32
Definition Define.h:107
LineOfSightChecks
Definition Map.h:101
@ LINEOFSIGHT_ALL_CHECKS
Definition Map.h:108
std::optional< T > Optional
Optional helper class to wrap optional values within.
Definition Optional.h:24
@ CREATURE_TYPE_NON_COMBAT_PET
Definition SharedDefines.h:2639
bool IsGameObject() const
Definition Object.h:213
bool IsCreature() const
Definition Object.h:205
Creature * ToCreature()
Definition Object.h:206
float GetCollisionHeight() const override
Return collision height sent to client.
Definition Unit.cpp:20965
bool IsAlive() const
Definition Unit.h:1707
uint32 GetCreatureType() const
Definition Unit.cpp:15274
bool isTargetableForAttack(bool checkFakeDeath=true, Unit const *byWho=nullptr) const
Definition Unit.cpp:13946
bool IsTotem() const
Definition Unit.h:749
bool IsValidAttackTarget(Unit const *target, SpellInfo const *bySpell=nullptr) const
Definition Unit.cpp:13963
bool IsWithinLOSInMap(WorldObject const *obj, VMAP::ModelIgnoreFlags ignoreFlags=VMAP::ModelIgnoreFlags::Nothing, LineOfSightChecks checks=LINEOFSIGHT_ALL_CHECKS, Optional< float > collisionHeight={ }, Optional< float > combatReach={ }) const
Definition Object.cpp:1340
bool IsWithinDistInMap(WorldObject const *obj, float dist2compare, bool is3D=true, bool useBoundingRadius=true) const
Definition Object.cpp:1314

References CREATURE_TYPE_NON_COMBAT_PET, Unit::GetCollisionHeight(), Unit::GetCreatureType(), i_obj, i_owner, i_range, Unit::IsAlive(), Object::IsCreature(), Object::IsGameObject(), Unit::isTargetableForAttack(), Unit::IsTotem(), Unit::IsValidAttackTarget(), WorldObject::IsWithinDistInMap(), WorldObject::IsWithinLOSInMap(), LINEOFSIGHT_ALL_CHECKS, VMAP::Nothing, and Object::ToCreature().

Member Data Documentation

◆ i_obj

WorldObject const* Acore::NearestAttackableNoTotemUnitInObjectRangeCheck::i_obj
private

Referenced by operator()().

◆ i_owner

Unit const* Acore::NearestAttackableNoTotemUnitInObjectRangeCheck::i_owner
private

Referenced by operator()().

◆ i_range

float Acore::NearestAttackableNoTotemUnitInObjectRangeCheck::i_range
private

Referenced by operator()().


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