diff options
| author | prep linden <prep@lindenlab.com> | 2011-05-04 17:18:31 -0400 | 
|---|---|---|
| committer | prep linden <prep@lindenlab.com> | 2011-05-04 17:18:31 -0400 | 
| commit | 91980918f0341bec0145156875d22503e8beea4e (patch) | |
| tree | 9f88df92825ec4f5a6c93cc6f9b2fa22572166d9 /indra | |
| parent | f3b0b5f3f1654a1df30d4516aca328f3add31fa0 (diff) | |
Fix for Sh-1481
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/llfloatermodelpreview.cpp | 16 | ||||
| -rw-r--r-- | indra/newview/llfloatermodelpreview.h | 8 | 
2 files changed, 13 insertions, 11 deletions
| diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index ae0e1b7d46..afe57ebb70 100644 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -1560,14 +1560,14 @@ bool LLModelLoader::doLoadModel()  						//(which means we have all the joints that are required for an avatar versus  						//a skinned asset attached to a node in a file that contains an entire skeleton,  						//but does not use the skeleton).						 -						 +						buildJointToNodeMappingFromScene( root );  						mPreview->critiqueRigForUploadApplicability( model->mSkinInfo.mJointNames );  						if ( !missingSkeletonOrScene )  						{  							//Set the joint translations on the avatar - if it's a full mapping  							//The joints are reset in the dtor -							if ( mPreview->getResetJointFlag() ) +							if ( mPreview->getRigWithSceneParity() )  							{	  								std::map<std::string, std::string> :: const_iterator masterJointIt = mJointMap.begin();  								std::map<std::string, std::string> :: const_iterator masterJointItEnd = mJointMap.end(); @@ -1774,10 +1774,6 @@ bool LLModelLoader::doLoadModel()  	handlePivotPoint( root ); -	buildJointToNodeMappingFromScene( root ); -	 -	mPreview->critiqueJointToNodeMappingFromScene(); -  	return true;  } @@ -2016,6 +2012,8 @@ void LLModelLoader::handlePivotPoint( daeElement* pRoot )  //-----------------------------------------------------------------------------  void LLModelPreview::critiqueRigForUploadApplicability( const std::vector<std::string> &jointListFromAsset )  { +	critiqueJointToNodeMappingFromScene(); +	  	//Determines the following use cases for a rig:  	//1. It is suitable for upload with skin weights & joint positions, or  	//2. It is suitable for upload as standard av with just skin weights @@ -2034,7 +2032,7 @@ void LLModelPreview::critiqueRigForUploadApplicability( const std::vector<std::s  		setLegacyRigValid( true );  	} -	if ( isJointPositionUploadOK ) +	if ( getRigWithSceneParity() && isJointPositionUploadOK )  	{  		setResetJointFlag( true );  	} @@ -2078,12 +2076,11 @@ void LLModelPreview::critiqueJointToNodeMappingFromScene( void  )  	if ( result )  	{		  		setResetJointFlag( true ); -		//llinfos<<"Full"<<llendl; +		setRigWithSceneParity( true );  	}  	else  	{  		setResetJointFlag( false ); -		//llinfos<<"Partial"<<llendl;  	}	  }  //----------------------------------------------------------------------------- @@ -2650,6 +2647,7 @@ LLModelPreview::LLModelPreview(S32 width, S32 height, LLFloater* fmp)  , mLegacyRigValid( false )  , mRigValidJointUpload( false )  , mResetJoints( false ) +, mRigParityWithScene( false )  , mLastJointUpdate( false )  {  	mNeedsUpdate = TRUE; diff --git a/indra/newview/llfloatermodelpreview.h b/indra/newview/llfloatermodelpreview.h index 7927edcd36..92104c01f4 100644 --- a/indra/newview/llfloatermodelpreview.h +++ b/indra/newview/llfloatermodelpreview.h @@ -339,8 +339,10 @@ public:  	U32 getLoadState() { return mLoadState; }  	//setRestJointFlag: If an asset comes through that changes the joints, we want the reset to persist  	void setResetJointFlag( bool state ) { if ( !mResetJoints ) mResetJoints = state; } -	bool getResetJointFlag( void ) { return mResetJoints; } - +	const bool getResetJointFlag( void ) const { return mResetJoints; } +	void setRigWithSceneParity( bool state ) { mRigParityWithScene = state; } +	const bool getRigWithSceneParity( void ) const { return mRigParityWithScene; } +	  	LLVector3 getTranslationForJointOffset( std::string joint );   protected: @@ -370,6 +372,8 @@ public:  	bool		mLoading;  	U32			mLoadState;  	bool		mResetJoints; +	bool		mRigParityWithScene; +	  	std::map<std::string, bool> mViewOption;  	//GLOD object parameters (must rebuild object if these change) | 
