EXT-8650 Can wear mutliple copies of a no-copy item via object links
- EXT-8660 Cleanup ambiguous llviewerobject::set/getItemID code Lots of files changed, but this is mostly just a trivial function call rename. This change is very low risk.meow-7.2.2
parent
90a73085fd
commit
7836f0fff3
|
|
@ -1756,7 +1756,7 @@ void LLAgentWearables::userUpdateAttachments(LLInventoryModel::item_array_t& obj
|
|||
LLViewerObject *objectp = (*attachment_iter);
|
||||
if (objectp)
|
||||
{
|
||||
LLUUID object_item_id = objectp->getItemID();
|
||||
LLUUID object_item_id = objectp->getAttachmentItemID();
|
||||
if (requested_item_ids.find(object_item_id) != requested_item_ids.end())
|
||||
{
|
||||
// Object currently worn, was requested.
|
||||
|
|
|
|||
|
|
@ -215,7 +215,7 @@ void LLInitialWearablesFetch::processWearablesMessage()
|
|||
{
|
||||
LLViewerObject* attached_object = (*attachment_iter);
|
||||
if (!attached_object) continue;
|
||||
const LLUUID& item_id = attached_object->getItemID();
|
||||
const LLUUID& item_id = attached_object->getAttachmentItemID();
|
||||
if (item_id.isNull()) continue;
|
||||
ids.push_back(item_id);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -473,7 +473,7 @@ void LLSidepanelAppearance::fetchInventory()
|
|||
{
|
||||
LLViewerObject* attached_object = (*attachment_iter);
|
||||
if (!attached_object) continue;
|
||||
const LLUUID& item_id = attached_object->getItemID();
|
||||
const LLUUID& item_id = attached_object->getAttachmentItemID();
|
||||
if (item_id.isNull()) continue;
|
||||
ids.push_back(item_id);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -172,19 +172,7 @@ BOOL LLViewerJointAttachment::addObject(LLViewerObject* object)
|
|||
// re-connect object to the joint correctly
|
||||
}
|
||||
|
||||
// Find the inventory item ID of the attached object
|
||||
LLNameValue* item_id_nv = object->getNVPair("AttachItemID");
|
||||
if( item_id_nv )
|
||||
{
|
||||
const char* s = item_id_nv->getString();
|
||||
if( s )
|
||||
{
|
||||
LLUUID item_id;
|
||||
item_id.set(s);
|
||||
object->setItemID(item_id);
|
||||
lldebugs << "getNVPair( AttachItemID ) = " << item_id << llendl;
|
||||
}
|
||||
}
|
||||
object->extractAttachmentItemID();
|
||||
mAttachedObjects.push_back(object);
|
||||
setupDrawable(object);
|
||||
|
||||
|
|
@ -303,7 +291,7 @@ void LLViewerJointAttachment::removeObject(LLViewerObject *object)
|
|||
{
|
||||
mUpdateXform = FALSE;
|
||||
}
|
||||
object->setItemID(LLUUID::null);
|
||||
object->setAttachmentItemID(LLUUID::null);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
@ -429,7 +417,7 @@ const LLViewerObject *LLViewerJointAttachment::getAttachedObject(const LLUUID &o
|
|||
++iter)
|
||||
{
|
||||
const LLViewerObject* attached_object = (*iter);
|
||||
if (attached_object->getItemID() == object_id)
|
||||
if (attached_object->getAttachmentItemID() == object_id)
|
||||
{
|
||||
return attached_object;
|
||||
}
|
||||
|
|
@ -444,7 +432,7 @@ LLViewerObject *LLViewerJointAttachment::getAttachedObject(const LLUUID &object_
|
|||
++iter)
|
||||
{
|
||||
LLViewerObject* attached_object = (*iter);
|
||||
if (attached_object->getItemID() == object_id)
|
||||
if (attached_object->getAttachmentItemID() == object_id)
|
||||
{
|
||||
return attached_object;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6050,7 +6050,7 @@ static bool onEnableAttachmentLabel(LLUICtrl* ctrl, const LLSD& data)
|
|||
const LLViewerObject* attached_object = (*attachment_iter);
|
||||
if (attached_object)
|
||||
{
|
||||
LLViewerInventoryItem* itemp = gInventory.getItem(attached_object->getItemID());
|
||||
LLViewerInventoryItem* itemp = gInventory.getItem(attached_object->getAttachmentItemID());
|
||||
if (itemp)
|
||||
{
|
||||
label += std::string(" (") + itemp->getName() + std::string(")");
|
||||
|
|
@ -6169,14 +6169,14 @@ class LLAttachmentEnableDrop : public view_listener_t
|
|||
{
|
||||
// make sure item is in your inventory (it could be a delayed attach message being sent from the sim)
|
||||
// so check to see if the item is in the inventory already
|
||||
item = gInventory.getItem((*attachment_iter)->getItemID());
|
||||
item = gInventory.getItem((*attachment_iter)->getAttachmentItemID());
|
||||
if (!item)
|
||||
{
|
||||
// Item does not exist, make an observer to enable the pie menu
|
||||
// when the item finishes fetching worst case scenario
|
||||
// if a fetch is already out there (being sent from a slow sim)
|
||||
// we refetch and there are 2 fetches
|
||||
LLWornItemFetchedObserver* worn_item_fetched = new LLWornItemFetchedObserver((*attachment_iter)->getItemID());
|
||||
LLWornItemFetchedObserver* worn_item_fetched = new LLWornItemFetchedObserver((*attachment_iter)->getAttachmentItemID());
|
||||
worn_item_fetched->startFetch();
|
||||
gInventory.addObserver(worn_item_fetched);
|
||||
}
|
||||
|
|
@ -6523,7 +6523,7 @@ void handle_dump_attachments(void*)
|
|||
!attached_object->mDrawable->isRenderType(0));
|
||||
LLVector3 pos;
|
||||
if (visible) pos = attached_object->mDrawable->getPosition();
|
||||
llinfos << "ATTACHMENT " << key << ": item_id=" << attached_object->getItemID()
|
||||
llinfos << "ATTACHMENT " << key << ": item_id=" << attached_object->getAttachmentItemID()
|
||||
<< (attached_object ? " present " : " absent ")
|
||||
<< (visible ? "visible " : "invisible ")
|
||||
<< " at " << pos
|
||||
|
|
|
|||
|
|
@ -5233,3 +5233,28 @@ void LLViewerObject::resetChildrenPosition(const LLVector3& offset, BOOL simplif
|
|||
return ;
|
||||
}
|
||||
|
||||
const LLUUID &LLViewerObject::getAttachmentItemID() const
|
||||
{
|
||||
return mAttachmentItemID;
|
||||
}
|
||||
|
||||
void LLViewerObject::setAttachmentItemID(const LLUUID &id)
|
||||
{
|
||||
mAttachmentItemID = id;
|
||||
}
|
||||
|
||||
const LLUUID &LLViewerObject::extractAttachmentItemID()
|
||||
{
|
||||
LLUUID item_id = LLUUID::null;
|
||||
LLNameValue* item_id_nv = getNVPair("AttachItemID");
|
||||
if( item_id_nv )
|
||||
{
|
||||
const char* s = item_id_nv->getString();
|
||||
if( s )
|
||||
{
|
||||
item_id.set(s);
|
||||
}
|
||||
}
|
||||
setAttachmentItemID(item_id);
|
||||
return getAttachmentItemID();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -678,11 +678,15 @@ protected:
|
|||
private:
|
||||
static S32 sNumObjects;
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// For objects that are attachments
|
||||
//--------------------------------------------------------------------
|
||||
public:
|
||||
const LLUUID &getItemID() const { return mAttachmentItemID; }
|
||||
void setItemID(const LLUUID &id) { mAttachmentItemID = id; }
|
||||
const LLUUID &getAttachmentItemID() const;
|
||||
void setAttachmentItemID(const LLUUID &id);
|
||||
const LLUUID &extractAttachmentItemID(); // find&set the inventory item ID of the attached object
|
||||
private:
|
||||
LLUUID mAttachmentItemID; // ItemID when item is in user inventory.
|
||||
LLUUID mAttachmentItemID; // ItemID of the associated object is in user inventory.
|
||||
};
|
||||
|
||||
///////////////////
|
||||
|
|
|
|||
|
|
@ -5710,6 +5710,7 @@ BOOL LLVOAvatar::setParent(LLViewerObject* parent)
|
|||
|
||||
void LLVOAvatar::addChild(LLViewerObject *childp)
|
||||
{
|
||||
childp->extractAttachmentItemID(); // find the inventory item this object is associated with.
|
||||
LLViewerObject::addChild(childp);
|
||||
if (childp->mDrawable)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1067,7 +1067,7 @@ const LLViewerJointAttachment *LLVOAvatarSelf::attachObject(LLViewerObject *view
|
|||
// Should just be the last object added
|
||||
if (attachment->isObjectAttached(viewer_object))
|
||||
{
|
||||
const LLUUID& attachment_id = viewer_object->getItemID();
|
||||
const LLUUID& attachment_id = viewer_object->getAttachmentItemID();
|
||||
LLAppearanceMgr::instance().registerAttachment(attachment_id);
|
||||
}
|
||||
|
||||
|
|
@ -1077,7 +1077,7 @@ const LLViewerJointAttachment *LLVOAvatarSelf::attachObject(LLViewerObject *view
|
|||
//virtual
|
||||
BOOL LLVOAvatarSelf::detachObject(LLViewerObject *viewer_object)
|
||||
{
|
||||
const LLUUID attachment_id = viewer_object->getItemID();
|
||||
const LLUUID attachment_id = viewer_object->getAttachmentItemID();
|
||||
if (LLVOAvatar::detachObject(viewer_object))
|
||||
{
|
||||
// the simulator should automatically handle permission revocation
|
||||
|
|
|
|||
Loading…
Reference in New Issue