// Checked: 2010-09-27 (RLVa-1.1.3a) | Added: RLVa-1.1.3a void RlvInventory::fetchWornItem(const LLUUID& idItem) { if (idItem.notNull()) { RlvItemFetcher itemFetcher(idItem); itemFetcher.startFetch(); } }
// Checked: 2010-02-28 (RLVa-1.2.0a) | Modified: RLVa-1.0.0h void RlvInventory::fetchSharedLinks() { // TOFIX-RLVa: [RLVa-1.2.1] Finish adding support for AT_LINK_FOLDER const LLViewerInventoryCategory* pRlvRoot = getSharedRoot(); if (!pRlvRoot) return; // Grab all the inventory links under the shared root LLInventoryModel::cat_array_t folders; LLInventoryModel::item_array_t items; RlvIsLinkType f; gInventory.collectDescendentsIf(pRlvRoot->getUUID(), folders, items, FALSE, f, FALSE); // Add them to the "to fetch" list based on link type uuid_vec_t idFolders, idItems; for (S32 idxItem = 0, cntItem = items.count(); idxItem < cntItem; idxItem++) { const LLViewerInventoryItem* pItem = items.get(idxItem); switch (pItem->getActualType()) { case LLAssetType::AT_LINK: idItems.push_back(pItem->getLinkedUUID()); break; case LLAssetType::AT_LINK_FOLDER: idFolders.push_back(pItem->getLinkedUUID()); break; default: break;; } } RLV_INFOS << "Starting link target fetch of " << idItems.size() << " items and " << idFolders.size() << " folders" << RLV_ENDL; // Fetch all the link item targets RlvItemFetcher itemFetcher(idItems); itemFetcher.startFetch(); // Fetch all the link folder targets // TODO! }
// Checked: 2010-02-28 (RLVa-1.1.3a) | Modified: RLVa-1.2.0a void RlvInventory::fetchWornItems() { uuid_vec_t idItems; // Fetch all currently worn clothing layers and body parts for (int type = 0; type < LLWearableType::WT_COUNT; type++) { const LLUUID idItem = gAgentWearables.getWearableItemID((LLWearableType::EType)type, 0); // TODO: MULTI-WEARABLE if (idItem.notNull()) idItems.push_back(idItem); } // Fetch all currently worn attachments LLVOAvatar* pAvatar = gAgentAvatarp; if (pAvatar) { for (LLVOAvatar::attachment_map_t::const_iterator itAttachPt = pAvatar->mAttachmentPoints.begin(); itAttachPt != pAvatar->mAttachmentPoints.end(); ++itAttachPt) { const LLViewerJointAttachment* pAttachPt = itAttachPt->second; if (pAttachPt) { for (LLViewerJointAttachment::attachedobjs_vec_t::const_iterator itAttachObj = pAttachPt->mAttachedObjects.begin(); itAttachObj != pAttachPt->mAttachedObjects.end(); ++itAttachObj) { const LLViewerObject* pAttachObj = (*itAttachObj); if ( (pAttachObj) && (pAttachObj->getAttachmentItemID().notNull()) ) idItems.push_back(pAttachObj->getAttachmentItemID()); } } } } RlvItemFetcher itemFetcher(idItems); itemFetcher.startFetch(); }
// Checked: 2010-02-28 (RLVa-1.2.0a) | Modified: RLVa-1.2.0a void RlvInventory::fetchWornItems() { uuid_vec_t idItems; // Fetch all currently worn clothing layers and body parts for (int type = 0; type < LLWearableType::WT_COUNT; type++) { // RELEASE-RLVa: [SL-2.0.0] Needs rewriting once 'LLAgentWearables::MAX_WEARABLES_PER_TYPE > 1' const LLUUID& idItem = gAgentWearables.getWearableItemID((LLWearableType::EType)type, 0); if (idItem.notNull()) idItems.push_back(idItem); } // Fetch all currently worn attachments if (isAgentAvatarValid()) { for (LLVOAvatar::attachment_map_t::const_iterator itAttachPt = gAgentAvatarp->mAttachmentPoints.begin(); itAttachPt != gAgentAvatarp->mAttachmentPoints.end(); ++itAttachPt) { const LLViewerJointAttachment* pAttachPt = itAttachPt->second; if (pAttachPt) { for (LLViewerJointAttachment::attachedobjs_vec_t::const_iterator itAttachObj = pAttachPt->mAttachedObjects.begin(); itAttachObj != pAttachPt->mAttachedObjects.end(); ++itAttachObj) { const LLViewerObject* pAttachObj = (*itAttachObj); if ( (pAttachObj) && (pAttachObj->getAttachmentItemID().notNull()) ) idItems.push_back(pAttachObj->getAttachmentItemID()); } } } } LLInventoryFetchItemsObserver itemFetcher(idItems); itemFetcher.startFetch(); }