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
904: i_obj(obj), i_owner(owner), i_range(range) {}
Unit const * i_owner
Definition: GridNotifiers.h:947
WorldObject const * i_obj
Definition: GridNotifiers.h:946
float i_range
Definition: GridNotifiers.h:948

Member Function Documentation

◆ operator()()

bool Acore::NearestAttackableNoTotemUnitInObjectRangeCheck::operator() ( Unit u)
inline
907 {
908 if (!u->IsAlive())
909 {
910 return false;
911 }
912
914 {
915 return false;
916 }
917
918 if (u->GetTypeId() == TYPEID_UNIT && u->ToCreature()->IsTotem())
919 {
920 return false;
921 }
922
923 if (!u->isTargetableForAttack(false, i_owner))
924 {
925 return false;
926 }
927
928 uint32 losChecks = LINEOFSIGHT_ALL_CHECKS;
929 Optional<float> collisionHeight = { };
931 {
932 losChecks &= ~LINEOFSIGHT_CHECK_GOBJECT_M2;
933 collisionHeight = i_owner->GetCollisionHeight();
934 }
935
938 {
939 return false;
940 }
941
942 return true;
943 }
std::uint32_t uint32
Definition: Define.h:108
std::optional< T > Optional
Optional helper class to wrap optional values within.
Definition: Optional.h:24
@ TYPEID_GAMEOBJECT
Definition: ObjectGuid.h:39
@ TYPEID_UNIT
Definition: ObjectGuid.h:37
LineOfSightChecks
Definition: Map.h:190
@ LINEOFSIGHT_ALL_CHECKS
Definition: Map.h:197
@ CREATURE_TYPE_NON_COMBAT_PET
Definition: SharedDefines.h:2611
TypeID GetTypeId() const
Definition: Object.h:121
Creature * ToCreature()
Definition: Object.h:197
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:1347
bool IsWithinDistInMap(WorldObject const *obj, float dist2compare, bool is3D=true, bool useBoundingRadius=true) const
Definition: Object.cpp:1321
float GetCollisionHeight() const override
Return collision height sent to client.
Definition: Unit.cpp:21273
bool IsAlive() const
Definition: Unit.h:1808
uint32 GetCreatureType() const
Definition: Unit.cpp:15074
bool isTargetableForAttack(bool checkFakeDeath=true, Unit const *byWho=nullptr) const
Definition: Unit.cpp:13759
bool IsTotem() const
Definition: Unit.h:1415
bool IsValidAttackTarget(Unit const *target, SpellInfo const *bySpell=nullptr) const
Definition: Unit.cpp:13776

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

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()().