diff options
| author | Xiaohong Bao <bao@lindenlab.com> | 2011-06-08 15:27:32 -0600 | 
|---|---|---|
| committer | Xiaohong Bao <bao@lindenlab.com> | 2011-06-08 15:27:32 -0600 | 
| commit | fe67bd7cfa5d066a9c24898768445b24eaf28e95 (patch) | |
| tree | 212589dc21551b6cdf8dd7e95d4a637c4c05f534 | |
| parent | ca5a87b819d8f33fd32a58e0c6c9cf2ca216ae7d (diff) | |
| parent | 776353b4a6ced013a9406a6177d4cbc18177ccef (diff) | |
Automated merge with https://bitbucket.org/davep/mesh-asset-deprecation
| -rw-r--r-- | indra/newview/llfloatermodelpreview.cpp | 49 | ||||
| -rw-r--r-- | indra/newview/llfloatermodelwizard.cpp | 49 | ||||
| -rw-r--r-- | indra/newview/llmeshrepository.cpp | 86 | ||||
| -rw-r--r-- | indra/newview/llmeshrepository.h | 1 | 
4 files changed, 60 insertions, 125 deletions
diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 46d39db6cd..76f3e7fdf4 100644 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -5250,54 +5250,7 @@ LLFloaterModelPreview::DecompRequest::DecompRequest(const std::string& stage, LL  	mParams = sInstance->mDecompParams;  	//copy out positions and indices -	if (mdl) -	{ -		U16 index_offset = 0; -		U16 tri[3] ; - -		mPositions.clear(); -		mIndices.clear(); -		mBBox[1] = LLVector3(F32_MIN, F32_MIN, F32_MIN) ; -		mBBox[0] = LLVector3(F32_MAX, F32_MAX, F32_MAX) ; - -		//queue up vertex positions and indices -		for (S32 i = 0; i < mdl->getNumVolumeFaces(); ++i) -		{ -			const LLVolumeFace& face = mdl->getVolumeFace(i); -			if (mPositions.size() + face.mNumVertices > 65535) -			{ -				continue; -			} - -			for (U32 j = 0; j < face.mNumVertices; ++j) -			{ -				mPositions.push_back(LLVector3(face.mPositions[j].getF32ptr())); -				for(U32 k = 0 ; k < 3 ; k++) -				{ -					mBBox[0].mV[k] = llmin(mBBox[0].mV[k], mPositions[j].mV[k]) ; -					mBBox[1].mV[k] = llmax(mBBox[1].mV[k], mPositions[j].mV[k]) ; -				} -			} - -			updateTriangleAreaThreshold() ; - -			for (U32 j = 0; j+2 < face.mNumIndices; j += 3) -			{ -				tri[0] = face.mIndices[j] + index_offset ; -				tri[1] = face.mIndices[j + 1] + index_offset ; -				tri[2] = face.mIndices[j + 2] + index_offset ; -				 -				if(isValidTriangle(tri[0], tri[1], tri[2])) -				{ -					mIndices.push_back(tri[0]); -					mIndices.push_back(tri[1]); -					mIndices.push_back(tri[2]); -				} -			}			 - -			index_offset += face.mNumVertices; -		} -	} +	assignData(mdl) ;	  }  void LLFloaterModelPreview::setStatusMessage(const std::string& msg) diff --git a/indra/newview/llfloatermodelwizard.cpp b/indra/newview/llfloatermodelwizard.cpp index e44737f39e..0cd66fbdc2 100644 --- a/indra/newview/llfloatermodelwizard.cpp +++ b/indra/newview/llfloatermodelwizard.cpp @@ -438,54 +438,7 @@ LLFloaterModelWizard::DecompRequest::DecompRequest(const std::string& stage, LLM  	mParams = sInstance->mDecompParams;  	//copy out positions and indices -	if (mdl) -	{ -		U16 index_offset = 0; -		U16 tri[3] ; - -		mPositions.clear(); -		mIndices.clear(); -		mBBox[1] = LLVector3(F32_MIN, F32_MIN, F32_MIN) ; -		mBBox[0] = LLVector3(F32_MAX, F32_MAX, F32_MAX) ; -		 -		//queue up vertex positions and indices -		for (S32 i = 0; i < mdl->getNumVolumeFaces(); ++i) -		{ -			const LLVolumeFace& face = mdl->getVolumeFace(i); -			if (mPositions.size() + face.mNumVertices > 65535) -			{ -				continue; -			} - -			for (U32 j = 0; j < face.mNumVertices; ++j) -			{ -				mPositions.push_back(LLVector3(face.mPositions[j].getF32ptr())); -				for(U32 k = 0 ; k < 3 ; k++) -				{ -					mBBox[0].mV[k] = llmin(mBBox[0].mV[k], mPositions[j].mV[k]) ; -					mBBox[1].mV[k] = llmax(mBBox[1].mV[k], mPositions[j].mV[k]) ; -				} -			} - -			updateTriangleAreaThreshold() ; - -			for (U32 j = 0; j+2 < face.mNumIndices; j += 3) -			{ -				tri[0] = face.mIndices[j] + index_offset ; -				tri[1] = face.mIndices[j + 1] + index_offset ; -				tri[2] = face.mIndices[j + 2] + index_offset ; -				 -				if(isValidTriangle(tri[0], tri[1], tri[2])) -				{ -					mIndices.push_back(tri[0]); -					mIndices.push_back(tri[1]); -					mIndices.push_back(tri[2]); -				} -			} - -			index_offset += face.mNumVertices; -		} -	} +	assignData(mdl) ;	  } diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 3545b5128a..6b8b0f5a00 100644 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -1323,35 +1323,7 @@ LLMeshUploadThread::DecompRequest::DecompRequest(LLModel* mdl, LLModel* base_mod  	mThread = thread;  	//copy out positions and indices -	if (mdl) -	{ -		U16 index_offset = 0; - -		mPositions.clear(); -		mIndices.clear(); -			 -		//queue up vertex positions and indices -		for (S32 i = 0; i < mdl->getNumVolumeFaces(); ++i) -		{ -			const LLVolumeFace& face = mdl->getVolumeFace(i); -			if (mPositions.size() + face.mNumVertices > 65535) -			{ -				continue; -			} - -			for (U32 j = 0; j < face.mNumVertices; ++j) -			{ -				mPositions.push_back(LLVector3(face.mPositions[j].getF32ptr())); -			} - -			for (U32 j = 0; j < face.mNumIndices; ++j) -			{ -				mIndices.push_back(face.mIndices[j]+index_offset); -			} - -			index_offset += face.mNumVertices; -		} -	} +	assignData(mdl) ;	  	mThread->mFinalDecomp = this;  	mThread->mPhysicsComplete = false; @@ -3610,6 +3582,62 @@ void LLPhysicsDecomp::run()  	mDone = true;  } +void LLPhysicsDecomp::Request::assignData(LLModel* mdl)  +{ +	if (!mdl) +	{ +		return ; +	} + +	U16 index_offset = 0; +	U16 tri[3] ; + +	mPositions.clear(); +	mIndices.clear(); +	mBBox[1] = LLVector3(F32_MIN, F32_MIN, F32_MIN) ; +	mBBox[0] = LLVector3(F32_MAX, F32_MAX, F32_MAX) ; +		 +	//queue up vertex positions and indices +	for (S32 i = 0; i < mdl->getNumVolumeFaces(); ++i) +	{ +		const LLVolumeFace& face = mdl->getVolumeFace(i); +		if (mPositions.size() + face.mNumVertices > 65535) +		{ +			continue; +		} + +		for (U32 j = 0; j < face.mNumVertices; ++j) +		{ +			mPositions.push_back(LLVector3(face.mPositions[j].getF32ptr())); +			for(U32 k = 0 ; k < 3 ; k++) +			{ +				mBBox[0].mV[k] = llmin(mBBox[0].mV[k], mPositions[j].mV[k]) ; +				mBBox[1].mV[k] = llmax(mBBox[1].mV[k], mPositions[j].mV[k]) ; +			} +		} + +		updateTriangleAreaThreshold() ; + +		for (U32 j = 0; j+2 < face.mNumIndices; j += 3) +		{ +			tri[0] = face.mIndices[j] + index_offset ; +			tri[1] = face.mIndices[j + 1] + index_offset ; +			tri[2] = face.mIndices[j + 2] + index_offset ; +				 +			if(isValidTriangle(tri[0], tri[1], tri[2])) +			{ +				mIndices.push_back(tri[0]); +				mIndices.push_back(tri[1]); +				mIndices.push_back(tri[2]); +			} +		} + +		index_offset += face.mNumVertices; +	} + +	return ; +} +  void LLPhysicsDecomp::Request::updateTriangleAreaThreshold()   {  	F32 range = mBBox[1].mV[0] - mBBox[0].mV[0] ; diff --git a/indra/newview/llmeshrepository.h b/indra/newview/llmeshrepository.h index d5b06cc66f..adf60c7e03 100644 --- a/indra/newview/llmeshrepository.h +++ b/indra/newview/llmeshrepository.h @@ -166,6 +166,7 @@ public:  		LLVector3 mBBox[2] ;  		F32 mTriangleAreaThreshold ; +		void assignData(LLModel* mdl) ;  		void updateTriangleAreaThreshold() ;  		bool isValidTriangle(U16 idx1, U16 idx2, U16 idx3) ;  	};  | 
