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
898: i_obj(obj), i_owner(owner), i_range(range) {}
Unit const * i_owner
Definition GridNotifiers.h:941
WorldObject const * i_obj
Definition GridNotifiers.h:940
float i_range
Definition GridNotifiers.h:942

Member Function Documentation

◆ operator()()

bool Acore::NearestAttackableNoTotemUnitInObjectRangeCheck::operator() ( Unit u)
inline
901 {
902 if (!u->IsAlive())
903 {
904 return false;
905 }
906
908 {
909 return false;
910 }
911
912 if (u->IsCreature() && u->ToCreature()->IsTotem())
913 {
914 return false;
915 }
916
917 if (!u->isTargetableForAttack(false, i_owner))
918 {
919 return false;
920 }
921
922 uint32 losChecks = LINEOFSIGHT_ALL_CHECKS;
923 Optional<float> collisionHeight = { };
924 if (i_obj->IsGameObject())
925 {
926 losChecks &= ~LINEOFSIGHT_CHECK_GOBJECT_M2;
927 collisionHeight = i_owner->GetCollisionHeight();
928 }
929
932 {
933 return false;
934 }
935
936 return true;
937 }
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:2650
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:20966
bool IsAlive() const
Definition Unit.h:1710
uint32 GetCreatureType() const
Definition Unit.cpp:15283
bool isTargetableForAttack(bool checkFakeDeath=true, Unit const *byWho=nullptr) const
Definition Unit.cpp:13955
bool IsTotem() const
Definition Unit.h:751
bool IsValidAttackTarget(Unit const *target, SpellInfo const *bySpell=nullptr) const
Definition Unit.cpp:13972
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:1352
bool IsWithinDistInMap(WorldObject const *obj, float dist2compare, bool is3D=true, bool useBoundingRadius=true) const
Definition Object.cpp:1326

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: