feat(Core/CreatureAddon): increased visibility for large creatures (#2304)

This commit is contained in:
Stoabrogga
2019-10-04 15:22:03 +02:00
committed by GitHub
parent e0b170f221
commit 9ea9329285
9 changed files with 1128 additions and 22 deletions

View File

@@ -325,6 +325,19 @@ void ObjectUpdater::Visit(GridRefManager<T> &m)
}
}
template<class T>
void LargeObjectUpdater::Visit(GridRefManager<T> &m)
{
T* obj;
for (typename GridRefManager<T>::iterator iter = m.begin(); iter != m.end(); )
{
obj = iter->GetSource();
++iter;
if (obj->IsInWorld() && obj->IsVisibilityOverridden())
obj->Update(i_timeDiff);
}
}
bool AnyDeadUnitObjectInRangeCheck::operator()(Player* u)
{
return !u->IsAlive() && !u->HasAuraType(SPELL_AURA_GHOST) && i_searchObj->IsWithinDistInMap(u, i_range);
@@ -358,3 +371,4 @@ bool AnyDeadUnitSpellTargetInRangeCheck::operator()(Creature* u)
template void ObjectUpdater::Visit<Creature>(CreatureMapType&);
template void ObjectUpdater::Visit<GameObject>(GameObjectMapType&);
template void ObjectUpdater::Visit<DynamicObject>(DynamicObjectMapType&);
template void LargeObjectUpdater::Visit<Creature>(CreatureMapType&);

View File

@@ -146,6 +146,16 @@ namespace Trinity
void Visit(CorpseMapType &) {}
};
struct LargeObjectUpdater
{
uint32 i_timeDiff;
explicit LargeObjectUpdater(const uint32 diff) : i_timeDiff(diff) {}
template<class T> void Visit(GridRefManager<T> &m);
void Visit(GameObjectMapType &) {}
void Visit(DynamicObjectMapType &) {}
void Visit(CorpseMapType &) {}
};
// SEARCHERS & LIST SEARCHERS & WORKERS
// WorldObject searchers & workers