summaryrefslogtreecommitdiff
path: root/indra/newview/llvoavatarself.cpp
diff options
context:
space:
mode:
authorLoren Shih <seraph@lindenlab.com>2009-06-24 21:36:42 +0000
committerLoren Shih <seraph@lindenlab.com>2009-06-24 21:36:42 +0000
commita00af78b95a62c613f9a2ac4a28a0017086c5ffa (patch)
tree25c46a6508a77d9b250fe166d7b0692983dc98f2 /indra/newview/llvoavatarself.cpp
parent2ce76c7ed47b49f8a7bafe69bdea064189e1ccbd (diff)
merge -r125267:125272 svn+ssh://svn.lindenlab.com/svn/linden/branches/avatar-pipeline/inventory-links__merge__viewer2.0.0-3-r125202 to svn+ssh://svn.lindenlab.com/svn/linden/branches/viewer/viewer-2.0.0-3
Diffstat (limited to 'indra/newview/llvoavatarself.cpp')
-rw-r--r--indra/newview/llvoavatarself.cpp33
1 files changed, 29 insertions, 4 deletions
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index d629767bbe..e7d7d74f62 100644
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -907,18 +907,43 @@ void LLVOAvatarSelf::wearableUpdated( EWearableType type )
//-----------------------------------------------------------------------------
// isWearingAttachment()
//-----------------------------------------------------------------------------
-BOOL LLVOAvatarSelf::isWearingAttachment( const LLUUID& inv_item_id )
+// Warning: include_linked_items = TRUE makes this operation expensive.
+BOOL LLVOAvatarSelf::isWearingAttachment( const LLUUID& inv_item_id , BOOL include_linked_items ) const
{
- for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
+ for (attachment_map_t::const_iterator iter = mAttachmentPoints.begin();
iter != mAttachmentPoints.end(); )
{
- attachment_map_t::iterator curiter = iter++;
- LLViewerJointAttachment* attachment = curiter->second;
+ attachment_map_t::const_iterator curiter = iter++;
+ const LLViewerJointAttachment* attachment = curiter->second;
if( attachment->getItemID() == inv_item_id )
{
return TRUE;
}
}
+
+ if (include_linked_items)
+ {
+ LLInventoryModel::item_array_t item_array;
+ gInventory.collectLinkedItems(inv_item_id, item_array);
+ for (LLInventoryModel::item_array_t::const_iterator iter = item_array.begin();
+ iter != item_array.end();
+ iter++)
+ {
+ const LLViewerInventoryItem *linked_item = (*iter);
+ const LLUUID &item_id = linked_item->getUUID();
+ for (attachment_map_t::const_iterator iter = mAttachmentPoints.begin();
+ iter != mAttachmentPoints.end(); )
+ {
+ attachment_map_t::const_iterator curiter = iter++;
+ const LLViewerJointAttachment* attachment = curiter->second;
+ if( attachment->getItemID() == item_id )
+ {
+ return TRUE;
+ }
+ }
+ }
+ }
+
return FALSE;
}