625 | | if(iter->getSource()->HaveAtClient(&i_object)) |
626 | | ObjectAccessor::_buildPacket(iter->getSource(), &i_object, i_updateDatas); |
| 625 | { |
| 626 | BuildPacket(iter->getSource()); |
| 627 | if (iter->getSource()->isPossessedByPlayer()) |
| 628 | BuildPacket((Player*)iter->getSource()->GetCharmer()); |
| 629 | } |
| 630 | } |
| 631 | |
| 632 | void |
| 633 | ObjectAccessor::WorldObjectChangeAccumulator::Visit(CreatureMapType &m) |
| 634 | { |
| 635 | for(CreatureMapType::iterator iter = m.begin(); iter != m.end(); ++iter) |
| 636 | if (iter->getSource()->isPossessedByPlayer()) |
| 637 | BuildPacket((Player*)iter->getSource()->GetCharmer()); |
| 638 | } |
| 639 | |
| 640 | void |
| 641 | ObjectAccessor::WorldObjectChangeAccumulator::BuildPacket(Player* plr) |
| 642 | { |
| 643 | // Only send update once to a player |
| 644 | if (plr_list.find(plr->GetGUID()) == plr_list.end() && plr->HaveAtClient(&i_object)) |
| 645 | { |
| 646 | ObjectAccessor::_buildPacket(plr, &i_object, i_updateDatas); |
| 647 | plr_list.insert(plr->GetGUID()); |
| 648 | } |