commit
aebfdac65f
|
|
@ -62,7 +62,7 @@ class LLInitialWearablesFetch : public LLInventoryFetchDescendentsObserver
|
|||
{
|
||||
public:
|
||||
LLInitialWearablesFetch() {}
|
||||
~LLInitialWearablesFetch() {}
|
||||
~LLInitialWearablesFetch();
|
||||
virtual void done();
|
||||
|
||||
struct InitialWearableData
|
||||
|
|
@ -84,7 +84,6 @@ public:
|
|||
protected:
|
||||
void processWearablesMessage();
|
||||
void processContents();
|
||||
static void onIdle(void *userdata);
|
||||
};
|
||||
|
||||
LLAgentWearables gAgentWearables;
|
||||
|
|
@ -2013,6 +2012,11 @@ void LLAgentWearables::updateServer()
|
|||
// to avoid gInventory.notifyObservers recursion.
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
LLInitialWearablesFetch::~LLInitialWearablesFetch()
|
||||
{
|
||||
llinfos << "~LLInitialWearablesFetch" << llendl;
|
||||
}
|
||||
|
||||
// virtual
|
||||
void LLInitialWearablesFetch::done()
|
||||
{
|
||||
|
|
@ -2020,15 +2024,7 @@ void LLInitialWearablesFetch::done()
|
|||
// gInventory.notifyObservers. The results will be handled in the next
|
||||
// idle tick instead.
|
||||
gInventory.removeObserver(this);
|
||||
gIdleCallbacks.addFunction(onIdle, this);
|
||||
}
|
||||
|
||||
// static
|
||||
void LLInitialWearablesFetch::onIdle(void *data)
|
||||
{
|
||||
gIdleCallbacks.deleteFunction(onIdle, data);
|
||||
LLInitialWearablesFetch *self = reinterpret_cast<LLInitialWearablesFetch*>(data);
|
||||
self->processContents();
|
||||
doOnIdle(boost::bind(&LLInitialWearablesFetch::processContents,this));
|
||||
}
|
||||
|
||||
void LLInitialWearablesFetch::processContents()
|
||||
|
|
|
|||
|
|
@ -95,8 +95,9 @@ public:
|
|||
mCopyItems(copy_items),
|
||||
mAppend(append)
|
||||
{}
|
||||
~LLOutfitObserver() {}
|
||||
virtual void done(); //public
|
||||
~LLOutfitObserver();
|
||||
virtual void done();
|
||||
void doWearCategory();
|
||||
|
||||
protected:
|
||||
LLUUID mCatID;
|
||||
|
|
@ -104,7 +105,19 @@ protected:
|
|||
bool mAppend;
|
||||
};
|
||||
|
||||
LLOutfitObserver::~LLOutfitObserver()
|
||||
{
|
||||
llinfos << "~LLOutfitObserver" << llendl;
|
||||
}
|
||||
|
||||
// BAP is LLOutfitObserver getting deleted here?
|
||||
void LLOutfitObserver::done()
|
||||
{
|
||||
gInventory.removeObserver(this);
|
||||
doOnIdle(boost::bind(&LLOutfitObserver::doWearCategory,this));
|
||||
}
|
||||
|
||||
void LLOutfitObserver::doWearCategory()
|
||||
{
|
||||
// We now have an outfit ready to be copied to agent inventory. Do
|
||||
// it, and wear that outfit normally.
|
||||
|
|
@ -175,6 +188,7 @@ void LLOutfitObserver::done()
|
|||
// Wear the inventory category.
|
||||
LLAppearanceManager::instance().wearInventoryCategoryOnAvatar(gInventory.getCategory(mCatID), mAppend);
|
||||
}
|
||||
delete this;
|
||||
}
|
||||
|
||||
class LLOutfitFetch : public LLInventoryFetchDescendentsObserver
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@
|
|||
#include "llsingleton.h"
|
||||
#include "llinventorymodel.h"
|
||||
#include "llviewerinventory.h"
|
||||
#include "llcallbacklist.h"
|
||||
|
||||
class LLWearable;
|
||||
struct LLWearableHoldingPattern;
|
||||
|
|
@ -111,4 +112,36 @@ private:
|
|||
|
||||
#define SUPPORT_ENSEMBLES 0
|
||||
|
||||
// Shim class and template function to allow arbitrary boost::bind
|
||||
// expressions to be run as one-time idle callbacks.
|
||||
template <typename T>
|
||||
class OnIdleCallback
|
||||
{
|
||||
public:
|
||||
OnIdleCallback(T callable):
|
||||
mCallable(callable)
|
||||
{
|
||||
}
|
||||
static void onIdle(void *data)
|
||||
{
|
||||
gIdleCallbacks.deleteFunction(onIdle, data);
|
||||
OnIdleCallback<T>* self = reinterpret_cast<OnIdleCallback<T>*>(data);
|
||||
self->call();
|
||||
delete self;
|
||||
}
|
||||
void call()
|
||||
{
|
||||
mCallable();
|
||||
}
|
||||
private:
|
||||
T mCallable;
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
void doOnIdle(T callable)
|
||||
{
|
||||
OnIdleCallback<T>* cb_functor = new OnIdleCallback<T>(callable);
|
||||
gIdleCallbacks.addFunction(&OnIdleCallback<T>::onIdle,cb_functor);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1672,6 +1672,17 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
|
|||
// if target is an outfit or current outfit folder we use link
|
||||
if (move_is_into_current_outfit || move_is_into_outfit)
|
||||
{
|
||||
if (inv_cat->getPreferredType() == LLFolderType::FT_NONE)
|
||||
{
|
||||
if (move_is_into_current_outfit)
|
||||
{
|
||||
// traverse category and add all contents to currently worn.
|
||||
BOOL append = true;
|
||||
LLAppearanceManager::instance().wearInventoryCategory(inv_cat, false, append);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
#if SUPPORT_ENSEMBLES
|
||||
// BAP - should skip if dup.
|
||||
if (move_is_into_current_outfit)
|
||||
|
|
@ -1690,6 +1701,7 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
|
|||
cb);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -73,9 +73,9 @@ LLScrollingPanelParam::LLScrollingPanelParam( const LLPanel::Params& panel_param
|
|||
F32 min_weight = param->getMinWeight();
|
||||
F32 max_weight = param->getMaxWeight();
|
||||
|
||||
mHintMin = new LLVisualParamHint( pos_x, pos_y, PARAM_HINT_WIDTH, PARAM_HINT_HEIGHT, mesh, param, min_weight);
|
||||
mHintMin = new LLVisualParamHint( pos_x, pos_y, PARAM_HINT_WIDTH, PARAM_HINT_HEIGHT, mesh, (LLViewerVisualParam*) wearable->getVisualParam(param->getID()), min_weight);
|
||||
pos_x += PARAM_HINT_WIDTH + 3 * BTN_BORDER;
|
||||
mHintMax = new LLVisualParamHint( pos_x, pos_y, PARAM_HINT_WIDTH, PARAM_HINT_HEIGHT, mesh, param, max_weight );
|
||||
mHintMax = new LLVisualParamHint( pos_x, pos_y, PARAM_HINT_WIDTH, PARAM_HINT_HEIGHT, mesh, (LLViewerVisualParam*) wearable->getVisualParam(param->getID()), max_weight );
|
||||
|
||||
mHintMin->setAllowsUpdates( FALSE );
|
||||
mHintMax->setAllowsUpdates( FALSE );
|
||||
|
|
|
|||
|
|
@ -146,8 +146,9 @@ void LLVisualParamHint::preRender(BOOL clear_depth)
|
|||
{
|
||||
LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
|
||||
|
||||
mLastParamWeight = avatarp->getVisualParamWeight(mVisualParam);
|
||||
avatarp->setVisualParamWeight(mVisualParam, mVisualParamWeight);
|
||||
mLastParamWeight = mVisualParam->getWeight();
|
||||
mVisualParam->setWeight(mVisualParamWeight, FALSE);
|
||||
avatarp->setVisualParamWeight(mVisualParam->getID(), mVisualParamWeight, FALSE);
|
||||
avatarp->setVisualParamWeight("Blink_Left", 0.f);
|
||||
avatarp->setVisualParamWeight("Blink_Right", 0.f);
|
||||
avatarp->updateComposites();
|
||||
|
|
@ -242,7 +243,8 @@ BOOL LLVisualParamHint::render()
|
|||
gGL.setSceneBlendType(LLRender::BT_ALPHA);
|
||||
gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT);
|
||||
}
|
||||
avatarp->setVisualParamWeight(mVisualParam, mLastParamWeight);
|
||||
avatarp->setVisualParamWeight(mVisualParam->getID(), mLastParamWeight);
|
||||
mVisualParam->setWeight(mLastParamWeight, FALSE);
|
||||
gGL.color4f(1,1,1,1);
|
||||
mGLTexturep->setGLTextureCreated(true);
|
||||
return TRUE;
|
||||
|
|
|
|||
Loading…
Reference in New Issue