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
930: i_obj(obj), i_owner(owner), i_range(range) {}
Unit const * i_owner
Definition GridNotifiers.h:973
WorldObject const * i_obj
Definition GridNotifiers.h:972
float i_range
Definition GridNotifiers.h:974

Member Function Documentation

◆ operator()()

bool Acore::NearestAttackableNoTotemUnitInObjectRangeCheck::operator() ( Unit u)
inline
933 {
934 if (!u->IsAlive())
935 {
936 return false;
937 }
938
940 {
941 return false;
942 }
943
944 if (u->IsCreature() && u->ToCreature()->IsTotem())
945 {
946 return false;
947 }
948
949 if (!u->isTargetableForAttack(false, i_owner))
950 {
951 return false;
952 }
953
954 uint32 losChecks = LINEOFSIGHT_ALL_CHECKS;
955 Optional<float> collisionHeight = { };
956 if (i_obj->IsGameObject())
957 {
958 losChecks &= ~LINEOFSIGHT_CHECK_GOBJECT_M2;
959 collisionHeight = i_owner->GetCollisionHeight();
960 }
961
964 {
965 return false;
966 }
967
968 return true;
969 }
std::uint32_t uint32
Definition Define.h:107
LineOfSightChecks
Definition Map.h:108
@ LINEOFSIGHT_ALL_CHECKS
Definition Map.h:115
std::optional< T > Optional
Optional helper class to wrap optional values within.
Definition Optional.h:24
@ CREATURE_TYPE_NON_COMBAT_PET
Definition SharedDefines.h:2633
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:17151
bool IsAlive() const
Definition Unit.h:1793
uint32 GetCreatureType() const
Definition Unit.cpp:11931
bool isTargetableForAttack(bool checkFakeDeath=true, Unit const *byWho=nullptr) const
Definition Unit.cpp:10722
bool IsTotem() const
Definition Unit.h:800
bool IsValidAttackTarget(Unit const *target, SpellInfo const *bySpell=nullptr) const
Definition Unit.cpp:10739
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:1407
bool IsWithinDistInMap(WorldObject const *obj, float dist2compare, bool is3D=true, bool incOwnRadius=true, bool incTargetRadius=true) const
Definition Object.cpp:1381

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: