void TangibleObjectImplementation::broadcastPvpStatusBitmask() { if (getZone() == NULL) return; if (closeobjects != NULL) { Zone* zone = getZone(); CreatureObject* thisCreo = asCreatureObject(); SortedVector<ManagedReference<QuadTreeEntry*> > closeObjects(closeobjects->size(), 10); closeobjects->safeCopyTo(closeObjects); for (int i = 0; i < closeObjects.size(); ++i) { SceneObject* obj = cast<SceneObject*>(closeObjects.get(i).get()); if (obj != NULL && obj->isCreatureObject()) { CreatureObject* creo = obj->asCreatureObject(); sendPvpStatusTo(creo); if (thisCreo != NULL) creo->sendPvpStatusTo(thisCreo); } } } }
void GroupObjectImplementation::updatePvPStatusNearCreature(CreatureObject* creature) { CloseObjectsVector* creatureCloseObjects = (CloseObjectsVector*) creature->getCloseObjects(); SortedVector<QuadTreeEntry*> closeObjectsVector; creatureCloseObjects->safeCopyReceiversTo(closeObjectsVector, CloseObjectsVector::CREOTYPE); for (int i = 0; i < groupMembers.size(); i++) { CreatureObject* member = groupMembers.get(i).get().get(); if (closeObjectsVector.contains(member)) { if (creature->isPlayerCreature()) member->sendPvpStatusTo(creature); if (member->isPlayerCreature()) creature->sendPvpStatusTo(member); } } }