void MessageDistDeliverer::Visit(CreatureMapType &m) { for (CreatureMapType::iterator iter = m.begin(); iter != m.end(); ++iter) { Creature* target = iter->GetSource(); if (!target->InSamePhase(i_phaseMask)) continue; if (target->GetExactDist2dSq(i_source) > i_distSq) continue; // Send packet to all who are sharing the creature's vision if (target->HasSharedVision()) { SharedVisionList::const_iterator i = target->GetSharedVisionList().begin(); for (; i != target->GetSharedVisionList().end(); ++i) if ((*i)->m_seer == target) SendPacket(*i); } } }
void ObjectGridRespawnMover::Visit(CreatureMapType &m) { // creature in unloading grid can have respawn point in another grid // if it will be unloaded then it will not respawn in original grid until unload/load original grid // move to respawn point to prevent this case. For player view in respawn grid this will be normal respawn. for (CreatureMapType::iterator iter = m.begin(); iter != m.end();) { Creature * c = iter->getSource(); ++iter; ASSERT(!c->isPet() && "ObjectGridRespawnMover don't must be called for pets"); Cell const& cur_cell = c->GetCurrentCell(); float resp_x, resp_y, resp_z; c->GetRespawnCoord(resp_x, resp_y, resp_z); CellPair resp_val = Trinity::ComputeCellPair(resp_x, resp_y); Cell resp_cell(resp_val); if (cur_cell.DiffGrid(resp_cell)) { c->GetMap()->CreatureRespawnRelocation(c); // false result ignored: will be unload with other creatures at grid } } }
void ObjectGridStoper::Visit(CreatureMapType &m) { // stop any fights at grid de-activation and remove dynobjects created at cast by creatures for (CreatureMapType::iterator iter = m.begin(); iter != m.end(); ++iter) { if (iter->getSource()->isInCombat()) { iter->getSource()->CombatStop(); iter->getSource()->DeleteThreatList(); iter->getSource()->AI()->EnterEvadeMode(); // Calls RemoveAllAuras } iter->getSource()->RemoveAllDynObjects(); // Calls RemoveFromWorld, needs to be after RemoveAllAuras or we invalidate the Owner pointer of the aura } }
void ObjectGridStoper::Visit(CreatureMapType &m) { // stop any fights at grid de-activation and remove dynobjects created at cast by creatures for (CreatureMapType::iterator iter = m.begin(); iter != m.end(); ++iter) { iter->GetSource()->RemoveAllDynObjects(); if (iter->GetSource()->IsInCombat()) { iter->GetSource()->CombatStop(); iter->GetSource()->DeleteThreatList(); if (iter->GetSource()->IsAIEnabled) iter->GetSource()->AI()->EnterEvadeMode(); } } }
void MessageDistDeliverer::Visit(CreatureMapType &m) { for (CreatureMapType::iterator iter = m.begin(); iter != m.end(); ++iter) { if (iter->getSource()->GetExactDistSq(i_source) > i_distSq) continue; // Send packet to all who are sharing the creature's vision if (!iter->getSource()->GetSharedVisionList().empty()) { SharedVisionList::const_iterator i = iter->getSource()->GetSharedVisionList().begin(); for (; i != iter->getSource()->GetSharedVisionList().end(); ++i) if ((*i)->m_seer == iter->getSource()) SendPacket(*i); } } }
void DynamicObjectUpdater::Visit(CreatureMapType& m) { for (CreatureMapType::iterator itr = m.begin(); itr != m.end(); ++itr) VisitHelper(itr->GetSource()); }
void ObjectGridCleaner::Visit (CreatureMapType &m) { for (CreatureMapType::iterator iter = m.begin(); iter != m.end(); ++iter) iter->getSource()->CleanupsBeforeDelete(); }