void RlvCurrentlyWorn::fetchWorn() { LLInventoryFetchObserver::item_ref_t idItems; // Fetch all currently worn clothing layers and body parts for (int type = 0; type < (int)WT_COUNT; type++) { const LLUUID& idItem = gAgent.getWearableItem((EWearableType)type); if (idItem.notNull()) idItems.push_back(idItem); } // Fetch all currently worn attachments LLVOAvatar* pAvatar = gAgent.getAvatarObject(); if (pAvatar) { for (LLVOAvatar::attachment_map_t::const_iterator itAttach = pAvatar->mAttachmentPoints.begin(); itAttach != pAvatar->mAttachmentPoints.end(); ++itAttach) { const LLUUID& idItem = itAttach->second->getItemID(); if (idItem.notNull()) idItems.push_back(idItem); } } RlvCurrentlyWorn f; f.fetchItems(idItems); }
// Checked: 2010-09-27 (RLVa-1.1.3a) | Added: RLVa-1.1.3a void RlvInventory::fetchWornItem(const LLUUID& idItem) { if (idItem.notNull()) { LLInventoryFetchObserver::item_ref_t idItems; idItems.push_back(idItem); RlvItemFetcher itemFetcher; itemFetcher.fetchItems(idItems); } }
void LLInventoryFetchObserver::fetchItems( const LLInventoryFetchObserver::item_ref_t& ids) { LLUUID owner_id; LLSD items_llsd; for(item_ref_t::const_iterator it = ids.begin(); it < ids.end(); ++it) { LLViewerInventoryItem* item = gInventory.getItem(*it); if(item) { if(item->isComplete()) { // It's complete, so put it on the complete container. mComplete.push_back(*it); continue; } else { owner_id = item->getPermissions().getOwner(); } } else { // assume it's agent inventory. owner_id = gAgent.getID(); } // It's incomplete, so put it on the incomplete container, and // pack this on the message. mIncomplete.push_back(*it); // Prepare the data to fetch LLSD item_entry; item_entry["owner_id"] = owner_id; item_entry["item_id"] = (*it); items_llsd.append(item_entry); } fetch_items_from_llsd(items_llsd); }