Core: Minor optimization in AnyUnfriendlyAttackableVisibleUnitInObjectRangeCheck
This commit is contained in:
@@ -90,14 +90,14 @@ namespace Trinity
|
|||||||
void Visit(PlayerMapType &);
|
void Visit(PlayerMapType &);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct AIRelocationNotifier
|
struct AIRelocationNotifier
|
||||||
{
|
{
|
||||||
Unit &i_unit;
|
Unit &i_unit;
|
||||||
bool isCreature;
|
bool isCreature;
|
||||||
explicit AIRelocationNotifier(Unit &unit) : i_unit(unit), isCreature(unit.GetTypeId() == TYPEID_UNIT) {}
|
explicit AIRelocationNotifier(Unit &unit) : i_unit(unit), isCreature(unit.GetTypeId() == TYPEID_UNIT) {}
|
||||||
template<class T> void Visit(GridRefManager<T> &) {}
|
template<class T> void Visit(GridRefManager<T> &) {}
|
||||||
void Visit(CreatureMapType &);
|
void Visit(CreatureMapType &);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct GridUpdater
|
struct GridUpdater
|
||||||
{
|
{
|
||||||
@@ -824,20 +824,19 @@ namespace Trinity
|
|||||||
class AnyUnfriendlyAttackableVisibleUnitInObjectRangeCheck
|
class AnyUnfriendlyAttackableVisibleUnitInObjectRangeCheck
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
AnyUnfriendlyAttackableVisibleUnitInObjectRangeCheck(WorldObject const* obj, Unit const* funit, float range)
|
AnyUnfriendlyAttackableVisibleUnitInObjectRangeCheck(Unit const* funit, float range)
|
||||||
: i_obj(obj), i_funit(funit), i_range(range) {}
|
: i_funit(funit), i_range(range) {}
|
||||||
|
|
||||||
bool operator()(Unit* u)
|
bool operator()(const Unit* u)
|
||||||
{
|
{
|
||||||
return u->isAlive()
|
return u->isAlive()
|
||||||
&& i_obj->IsWithinDistInMap(u, i_range)
|
&& i_funit->IsWithinDistInMap(u, i_range)
|
||||||
&& !i_funit->IsFriendlyTo(u)
|
&& !i_funit->IsFriendlyTo(u)
|
||||||
&& i_funit->canAttack(u)
|
&& i_funit->canAttack(u)
|
||||||
&& u->GetCreatureType() != CREATURE_TYPE_CRITTER
|
&& u->GetCreatureType() != CREATURE_TYPE_CRITTER
|
||||||
&& i_funit->canSeeOrDetect(u);
|
&& i_funit->canSeeOrDetect(u);
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
WorldObject const* i_obj;
|
|
||||||
Unit const* i_funit;
|
Unit const* i_funit;
|
||||||
float i_range;
|
float i_range;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -5686,7 +5686,7 @@ void AuraEffect::HandlePeriodicDummyAuraTick(Unit* target, Unit* caster) const
|
|||||||
Cell cell(p);
|
Cell cell(p);
|
||||||
cell.data.Part.reserved = ALL_DISTRICT;
|
cell.data.Part.reserved = ALL_DISTRICT;
|
||||||
|
|
||||||
Trinity::AnyUnfriendlyAttackableVisibleUnitInObjectRangeCheck u_check(target, target, radius);
|
Trinity::AnyUnfriendlyAttackableVisibleUnitInObjectRangeCheck u_check(target, radius);
|
||||||
Trinity::UnitListSearcher<Trinity::AnyUnfriendlyAttackableVisibleUnitInObjectRangeCheck> checker(target, targets, u_check);
|
Trinity::UnitListSearcher<Trinity::AnyUnfriendlyAttackableVisibleUnitInObjectRangeCheck> checker(target, targets, u_check);
|
||||||
|
|
||||||
TypeContainerVisitor<Trinity::UnitListSearcher<Trinity::AnyUnfriendlyAttackableVisibleUnitInObjectRangeCheck>, GridTypeMapContainer > grid_object_checker(checker);
|
TypeContainerVisitor<Trinity::UnitListSearcher<Trinity::AnyUnfriendlyAttackableVisibleUnitInObjectRangeCheck>, GridTypeMapContainer > grid_object_checker(checker);
|
||||||
|
|||||||
Reference in New Issue
Block a user