MAINT-6685 [VOB] Outfit Image from an Outfit Gallery disappears after editing outfit

meow-7.2.2
Mnikolenko Productengine 2016-09-05 17:32:50 +03:00
parent 74ec1116a2
commit fc17f62335
2 changed files with 28 additions and 1 deletions

View File

@ -3113,6 +3113,14 @@ void appearance_mgr_update_dirty_state()
{
if (LLAppearanceMgr::instanceExists())
{
LLAppearanceMgr& app_mgr = LLAppearanceMgr::instance();
LLUUID image_id = app_mgr.getOutfitImage();
if(image_id.notNull())
{
LLPointer<LLInventoryCallback> cb = NULL;
link_inventory_object(app_mgr.getBaseOutfitUUID(), image_id, cb);
}
LLAppearanceMgr::getInstance()->updateIsDirty();
LLAppearanceMgr::getInstance()->setOutfitLocked(false);
gAgentWearables.notifyLoadingFinished();
@ -3122,7 +3130,21 @@ void appearance_mgr_update_dirty_state()
void update_base_outfit_after_ordering()
{
LLAppearanceMgr& app_mgr = LLAppearanceMgr::instance();
LLInventoryModel::cat_array_t sub_cat_array;
LLInventoryModel::item_array_t outfit_item_array;
gInventory.collectDescendents(app_mgr.getBaseOutfitUUID(),
sub_cat_array,
outfit_item_array,
LLInventoryModel::EXCLUDE_TRASH);
BOOST_FOREACH(LLViewerInventoryItem* outfit_item, outfit_item_array)
{
LLViewerInventoryItem* linked_item = outfit_item->getLinkedItem();
if (linked_item != NULL && linked_item->getActualType() == LLAssetType::AT_TEXTURE)
{
app_mgr.setOutfitImage(linked_item->getLinkedUUID());
}
}
LLPointer<LLInventoryCallback> dirty_state_updater =
new LLBoostFuncInventoryCallback(no_op_inventory_func, appearance_mgr_update_dirty_state);

View File

@ -185,6 +185,9 @@ public:
void wearBaseOutfit();
void setOutfitImage(const LLUUID& image_id) {mCOFImageID = image_id;}
LLUUID getOutfitImage() {return mCOFImageID;}
// Overrides the base outfit with the content from COF
// @return false if there is no base outfit
bool updateBaseOutfit();
@ -269,6 +272,8 @@ private:
LLTimer mInFlightTimer;
static bool mActive;
LLUUID mCOFImageID;
std::auto_ptr<LLOutfitUnLockTimer> mUnlockOutfitTimer;
// Set of temp attachment UUIDs that should be removed