Core: Minor optimization in AnyUnfriendlyAttackableVisibleUnitInObjectRangeCheck

This commit is contained in:
Spp-
2011-07-12 13:30:33 +02:00
parent f441a159b1
commit f37a2030c0
2 changed files with 8 additions and 9 deletions
@@ -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);