diff options
| author | Nyx (Neal Orman) <nyx@lindenlab.com> | 2010-05-24 17:19:06 -0400 | 
|---|---|---|
| committer | Nyx (Neal Orman) <nyx@lindenlab.com> | 2010-05-24 17:19:06 -0400 | 
| commit | 7100d1ce00177e41dec3b88f5550ec675d14efd5 (patch) | |
| tree | 4694eda01a69d40bcdb20161334939291c3430a3 /indra/newview | |
| parent | a98454059c7ccecf5bc703afa7877a16b00706f5 (diff) | |
| parent | 40c672a61ffa9d59594cb38ee75d3a3b44dcd2a5 (diff) | |
Automated merge with ssh://hg.lindenlab.com/dessie/viewer-public
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/llpaneleditwearable.cpp | 51 | ||||
| -rw-r--r-- | indra/newview/llpaneleditwearable.h | 2 | ||||
| -rw-r--r-- | indra/newview/llscrollingpanelparam.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/lltoolmorph.cpp | 8 | ||||
| -rw-r--r-- | indra/newview/lltoolmorph.h | 2 | 
5 files changed, 63 insertions, 4 deletions
| diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp index f8dbc91036..8e9b164c09 100644 --- a/indra/newview/llpaneleditwearable.cpp +++ b/indra/newview/llpaneleditwearable.cpp @@ -57,6 +57,8 @@  #include "lltextureentry.h"  #include "llviewercontrol.h"	// gSavedSettings  #include "llviewertexturelist.h" +#include "llagentcamera.h" +#include "llmorphview.h"  // register panel with appropriate XML  static LLRegisterPanelClassWrapper<LLPanelEditWearable> t_edit_wearable("panel_edit_wearable"); @@ -951,6 +953,9 @@ void LLPanelEditWearable::initializePanel()  		// what edit group do we want to extract params for?  		const std::string edit_group = subpart_entry->mEditGroup; +		// initialize callback to ensure camera view changes appropriately. +		tab->setDropDownStateChangedCallback(boost::bind(&LLPanelEditWearable::onTabExpandedCollapsed,this,_2,index)); +  		// storage for ordered list of visual params  		value_map_t sorted_params;  		getSortedParams(sorted_params, edit_group); @@ -989,6 +994,52 @@ void LLPanelEditWearable::updateTypeSpecificControls(LLWearableType::EType type)  	}  } +void LLPanelEditWearable::onTabExpandedCollapsed(const LLSD& param, U8 index) +{ +	bool expanded = param.asBoolean(); + +	if (!mWearablePtr || !gAgentCamera.cameraCustomizeAvatar()) +	{ +		// we don't have a valid wearable we're editing, or we've left the wearable editor +		return; +	} + +	if (expanded) +	{ +		const LLEditWearableDictionary::WearableEntry *wearable_entry = LLEditWearableDictionary::getInstance()->getWearable(mWearablePtr->getType()); +		if (!wearable_entry) +		{ +			llinfos << "could not get wearable dictionary entry for wearable type: " << mWearablePtr->getType() << llendl; +			return; +		} + +		if (index >= wearable_entry->mSubparts.size()) +		{ +			llinfos << "accordion tab expanded for invalid subpart. Wearable type: " << mWearablePtr->getType() << " subpart num: " << index << llendl; +			return; +		} + +		ESubpart subpart_e = wearable_entry->mSubparts[index]; +		const LLEditWearableDictionary::SubpartEntry *subpart_entry = LLEditWearableDictionary::getInstance()->getSubpart(subpart_e); + +		if (!subpart_entry) +		{ +			llwarns << "could not get wearable subpart dictionary entry for subpart: " << subpart_e << llendl; +			return; +		} + +		// Update the camera +		gMorphView->setCameraTargetJoint( gAgentAvatarp->getJoint( subpart_entry->mTargetJoint ) ); +		gMorphView->setCameraTargetOffset( subpart_entry->mTargetOffset ); +		gMorphView->setCameraOffset( subpart_entry->mCameraOffset ); +		gMorphView->setCameraDistToDefault(); +		if (gSavedSettings.getBOOL("AppearanceCameraMovement")) +		{ +			gMorphView->updateCamera(); +		} +	} +} +  void LLPanelEditWearable::updateScrollingPanelUI()  {  	// do nothing if we don't have a valid wearable we're editing diff --git a/indra/newview/llpaneleditwearable.h b/indra/newview/llpaneleditwearable.h index 04839ca451..6f9ac82407 100644 --- a/indra/newview/llpaneleditwearable.h +++ b/indra/newview/llpaneleditwearable.h @@ -66,6 +66,8 @@ public:  	static void			onRevertButtonClicked(void* userdata);  	void				onCommitSexChange(); +	void				onTabExpandedCollapsed(const LLSD& param, U8 index); +  private:  	typedef std::map<F32, LLViewerVisualParam*> value_map_t; diff --git a/indra/newview/llscrollingpanelparam.cpp b/indra/newview/llscrollingpanelparam.cpp index a5518d87d4..242af6981c 100644 --- a/indra/newview/llscrollingpanelparam.cpp +++ b/indra/newview/llscrollingpanelparam.cpp @@ -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, (LLViewerVisualParam*) wearable->getVisualParam(param->getID()),  min_weight); +	mHintMin = new LLVisualParamHint( pos_x, pos_y, PARAM_HINT_WIDTH, PARAM_HINT_HEIGHT, mesh, (LLViewerVisualParam*) wearable->getVisualParam(param->getID()), wearable,  min_weight);  	pos_x = getChild<LLViewBorder>("right_border")->getRect().mLeft + left_border->getBorderWidth(); -	mHintMax = new LLVisualParamHint( pos_x, pos_y, PARAM_HINT_WIDTH, PARAM_HINT_HEIGHT, mesh, (LLViewerVisualParam*) wearable->getVisualParam(param->getID()), max_weight ); +	mHintMax = new LLVisualParamHint( pos_x, pos_y, PARAM_HINT_WIDTH, PARAM_HINT_HEIGHT, mesh, (LLViewerVisualParam*) wearable->getVisualParam(param->getID()), wearable, max_weight );  	mHintMin->setAllowsUpdates( FALSE );  	mHintMax->setAllowsUpdates( FALSE ); diff --git a/indra/newview/lltoolmorph.cpp b/indra/newview/lltoolmorph.cpp index 22176c037f..22e15dcff2 100644 --- a/indra/newview/lltoolmorph.cpp +++ b/indra/newview/lltoolmorph.cpp @@ -79,6 +79,7 @@ LLVisualParamHint::LLVisualParamHint(  	S32 width, S32 height,   	LLViewerJointMesh *mesh,   	LLViewerVisualParam *param, +	LLWearable *wearable,  	F32 param_weight)  	:  	LLViewerDynamicTexture(width, height, 3, LLViewerDynamicTexture::ORDER_MIDDLE, TRUE ), @@ -86,6 +87,7 @@ LLVisualParamHint::LLVisualParamHint(  	mIsVisible( FALSE ),  	mJointMesh( mesh ),  	mVisualParam( param ), +	mWearablePtr( wearable ),  	mVisualParamWeight( param_weight ),  	mAllowsUpdates( TRUE ),  	mDelayFrames( 0 ), @@ -151,7 +153,7 @@ BOOL LLVisualParamHint::needsRender()  void LLVisualParamHint::preRender(BOOL clear_depth)  {  	mLastParamWeight = mVisualParam->getWeight(); -	mVisualParam->setWeight(mVisualParamWeight, FALSE); +	mWearablePtr->setVisualParamWeight(mVisualParam->getID(), mVisualParamWeight, FALSE);  	gAgentAvatarp->setVisualParamWeight(mVisualParam->getID(), mVisualParamWeight, FALSE);  	gAgentAvatarp->setVisualParamWeight("Blink_Left", 0.f);  	gAgentAvatarp->setVisualParamWeight("Blink_Right", 0.f); @@ -250,10 +252,12 @@ BOOL LLVisualParamHint::render()  		gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT);  	}  	gAgentAvatarp->setVisualParamWeight(mVisualParam->getID(), mLastParamWeight); -	mVisualParam->setWeight(mLastParamWeight, FALSE); +	mWearablePtr->setVisualParamWeight(mVisualParam->getID(), mLastParamWeight, FALSE); +	gAgentAvatarp->updateVisualParams();  	gGL.color4f(1,1,1,1);  	mGLTexturep->setGLTextureCreated(true);  	gGL.popUIMatrix(); +  	return TRUE;  } diff --git a/indra/newview/lltoolmorph.h b/indra/newview/lltoolmorph.h index c332c296bd..3bffefaa55 100644 --- a/indra/newview/lltoolmorph.h +++ b/indra/newview/lltoolmorph.h @@ -62,6 +62,7 @@ public:  		S32 width, S32 height,   		LLViewerJointMesh *mesh,   		LLViewerVisualParam *param, +		LLWearable *wearable,  		F32 param_weight);	  	/*virtual*/ S8 getType() const ; @@ -89,6 +90,7 @@ protected:  	BOOL					mIsVisible;			// is this distortion hint visible?  	LLViewerJointMesh*		mJointMesh;			// mesh that this distortion applies to  	LLViewerVisualParam*	mVisualParam;		// visual param applied by this hint +	LLWearable*				mWearablePtr;		// wearable we're editing  	F32						mVisualParamWeight;		// weight for this visual parameter  	BOOL					mAllowsUpdates;		// updates are blocked unless this is true  	S32						mDelayFrames;		// updates are blocked for this many frames | 
