diff options
| -rwxr-xr-x | indra/newview/llfloatermodelpreview.cpp | 389 | ||||
| -rw-r--r-- | indra/newview/llfloatermodelpreview.h | 17 | ||||
| -rwxr-xr-x | indra/newview/skins/default/xui/en/floater_model_preview.xml | 790 | 
3 files changed, 780 insertions, 416 deletions
| diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 2d18c2bb24..e687b1954c 100755 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -396,21 +396,23 @@ BOOL LLFloaterModelPreview::postBuild()  		return FALSE;  	} -	childSetAction("lod_browse", onBrowseLOD, this); -  	childSetCommitCallback("cancel_btn", onCancel, this);  	childSetCommitCallback("crease_angle", onGenerateNormalsCommit, this); -	childSetCommitCallback("generate_normals", onGenerateNormalsCommit, this); +	getChild<LLCheckBoxCtrl>("gen_normals")->setCommitCallback(boost::bind(&LLFloaterModelPreview::toggleGenarateNormals, this));  	childSetCommitCallback("lod_generate", onAutoFillCommit, this); -	childSetCommitCallback("lod_mode", onLODParamCommit, this); -	childSetCommitCallback("lod_error_threshold", onLODParamCommit, this); -	childSetCommitCallback("lod_triangle_limit", onLODParamCommitTriangleLimit, this); -	childSetCommitCallback("build_operator", onLODParamCommit, this); -	childSetCommitCallback("queue_mode", onLODParamCommit, this); -	childSetCommitCallback("border_mode", onLODParamCommit, this); -	childSetCommitCallback("share_tolerance", onLODParamCommit, this); +	for (S32 lod = 0; lod <= LLModel::LOD_HIGH; ++lod) +	{ +		LLComboBox* lod_source_combo = getChild<LLComboBox>("lod_source_" + lod_name[lod]); +		lod_source_combo->setCommitCallback(boost::bind(&LLFloaterModelPreview::onLoDSourceCommit, this, lod)); +		lod_source_combo->setCurrentByIndex(mLODMode[lod]); + +		getChild<LLButton>("lod_browse_" + lod_name[lod])->setCommitCallback(boost::bind(&LLFloaterModelPreview::onBrowseLOD, this, lod)); +		getChild<LLComboBox>("lod_mode_" + lod_name[lod])->setCommitCallback(boost::bind(&LLFloaterModelPreview::onLODParamCommit, this, lod, false)); +		getChild<LLSpinCtrl>("lod_error_threshold_" + lod_name[lod])->setCommitCallback(boost::bind(&LLFloaterModelPreview::onLODParamCommit, this, lod, false)); +		getChild<LLSpinCtrl>("lod_triangle_limit_" + lod_name[lod])->setCommitCallback(boost::bind(&LLFloaterModelPreview::onLODParamCommit, this, lod, true)); +	}  	childSetCommitCallback("upload_skin", boost::bind(&LLFloaterModelPreview::toggleCalculateButton, this), NULL);  	childSetCommitCallback("upload_joints", boost::bind(&LLFloaterModelPreview::toggleCalculateButton, this), NULL); @@ -431,10 +433,6 @@ BOOL LLFloaterModelPreview::postBuild()  	childSetCommitCallback("import_scale", onImportScaleCommit, this);  	childSetCommitCallback("pelvis_offset", onPelvisOffsetCommit, this); -	childSetCommitCallback("lod_file_or_limit", refresh, this); -	//childSetCommitCallback("physics_optimize", refresh, this); -	//childSetCommitCallback("physics_use_hull", refresh, this); -  	getChild<LLCheckBoxCtrl>("show_edges")->setCommitCallback(boost::bind(&LLFloaterModelPreview::onViewOptionChecked, this, _1));  	getChild<LLCheckBoxCtrl>("show_physics")->setCommitCallback(boost::bind(&LLFloaterModelPreview::onViewOptionChecked, this, _1));  	getChild<LLCheckBoxCtrl>("show_textures")->setCommitCallback(boost::bind(&LLFloaterModelPreview::onViewOptionChecked, this, _1)); @@ -694,6 +692,12 @@ void LLFloaterModelPreview::onGenerateNormalsCommit(LLUICtrl* ctrl, void* userda  	fp->mModelPreview->generateNormals();  } +void LLFloaterModelPreview::toggleGenarateNormals() +{ +	bool enabled = childGetValue("gen_normals").asBoolean(); +	childSetEnabled("crease_angle", enabled); +} +  //static  void LLFloaterModelPreview::onExplodeCommit(LLUICtrl* ctrl, void* userdata)  { @@ -710,19 +714,9 @@ void LLFloaterModelPreview::onAutoFillCommit(LLUICtrl* ctrl, void* userdata)  	fp->mModelPreview->genLODs();  } -//static -void LLFloaterModelPreview::onLODParamCommit(LLUICtrl* ctrl, void* userdata) -{ -	LLFloaterModelPreview* fp = (LLFloaterModelPreview*) userdata; - -	fp->mModelPreview->onLODParamCommit(false); -} - -//static -void LLFloaterModelPreview::onLODParamCommitTriangleLimit(LLUICtrl* ctrl, void* userdata) +void LLFloaterModelPreview::onLODParamCommit(S32 lod, bool enforce_tri_limit)  { -	LLFloaterModelPreview* fp = (LLFloaterModelPreview*) userdata; -	fp->mModelPreview->onLODParamCommit(true); +	mModelPreview->onLODParamCommit(lod, enforce_tri_limit);  } @@ -3484,7 +3478,7 @@ void LLModelPreview::loadModel(std::string filename, S32 lod, bool force_disable  	if (lod == mPreviewLOD)  	{ -		mFMP->childSetText("lod_file", mLODFile[mPreviewLOD]); +		mFMP->childSetText("lod_file_" + lod_name[lod], mLODFile[lod]);  	}  	else if (lod == LLModel::LOD_PHYSICS)  	{ @@ -3782,21 +3776,21 @@ void LLModelPreview::genLODs(S32 which_lod, U32 decimation, bool enforce_tri_lim  	U32 lod_mode = 0; -	LLCtrlSelectionInterface* iface = mFMP->childGetSelectionInterface("lod_mode"); +	LLCtrlSelectionInterface* iface = mFMP->childGetSelectionInterface("lod_mode_" + lod_name[which_lod]);  	if (iface)  	{  		lod_mode = iface->getFirstSelectedIndex();  	}  	mRequestedLoDMode[mPreviewLOD] = lod_mode; -	F32 lod_error_threshold = mFMP->childGetValue("lod_error_threshold").asReal(); +	F32 lod_error_threshold = mFMP->childGetValue("lod_error_threshold_" + lod_name[which_lod]).asReal();  	if (lod_mode == 0)  	{  		lod_mode = GLOD_TRIANGLE_BUDGET;  		if (which_lod != -1)  		{ -			limit = mFMP->childGetValue("lod_triangle_limit").asInteger(); +			limit = mFMP->childGetValue("lod_triangle_limit_" + lod_name[which_lod]).asInteger();  		}  	}  	else @@ -3804,89 +3798,7 @@ void LLModelPreview::genLODs(S32 which_lod, U32 decimation, bool enforce_tri_lim  		lod_mode = GLOD_ERROR_THRESHOLD;  	} -	U32 build_operator = 0; - -	iface = mFMP->childGetSelectionInterface("build_operator"); -	if (iface) -	{ -		build_operator = iface->getFirstSelectedIndex(); -	} -	mRequestedBuildOperator[mPreviewLOD] = build_operator;  - -	if (build_operator == 0) -	{ -		build_operator = GLOD_OPERATOR_EDGE_COLLAPSE; -	} -	else -	{ -		build_operator = GLOD_OPERATOR_HALF_EDGE_COLLAPSE; -	} - -	U32 queue_mode=0; -	iface = mFMP->childGetSelectionInterface("queue_mode"); -	if (iface) -	{ -		queue_mode = iface->getFirstSelectedIndex(); -	} -	mRequestedQueueMode[mPreviewLOD] = queue_mode; - -	if (queue_mode == 0) -	{ -		queue_mode = GLOD_QUEUE_GREEDY; -	} -	else if (queue_mode == 1) -	{ -		queue_mode = GLOD_QUEUE_LAZY; -	} -	else -	{ -		queue_mode = GLOD_QUEUE_INDEPENDENT; -	} - -	U32 border_mode = 0; - -	iface = mFMP->childGetSelectionInterface("border_mode"); -	if (iface) -	{ -		border_mode = iface->getFirstSelectedIndex(); -	} -	mRequestedBorderMode[mPreviewLOD] = border_mode; - -	if (border_mode == 0) -	{ -		border_mode = GLOD_BORDER_UNLOCK; -	} -	else -	{ -		border_mode = GLOD_BORDER_LOCK; -	} -  	bool object_dirty = false; -	if (border_mode != mBuildBorderMode) -	{ -		mBuildBorderMode = border_mode; -		object_dirty = true; -	} - -	if (queue_mode != mBuildQueueMode) -	{ -		mBuildQueueMode = queue_mode; -		object_dirty = true; -	} - -	if (build_operator != mBuildOperator) -	{ -		mBuildOperator = build_operator; -		object_dirty = true; -	} - -	F32 share_tolerance = mFMP->childGetValue("share_tolerance").asReal(); -	if (share_tolerance != mBuildShareTolerance) -	{ -		mBuildShareTolerance = share_tolerance; -		object_dirty = true; -	} -	mRequestedShareTolerance[mPreviewLOD] = share_tolerance;  	if (mGroup == 0)  	{ @@ -3936,18 +3848,6 @@ void LLModelPreview::genLODs(S32 which_lod, U32 decimation, bool enforce_tri_lim  				stop_gloderror();  			} -			glodObjectParameteri(mObject[mdl], GLOD_BUILD_OPERATOR, build_operator); -			stop_gloderror(); - -			glodObjectParameteri(mObject[mdl], GLOD_BUILD_QUEUE_MODE, queue_mode); -			stop_gloderror(); - -			glodObjectParameteri(mObject[mdl], GLOD_BUILD_BORDER_MODE, border_mode); -			stop_gloderror(); - -			glodObjectParameterf(mObject[mdl], GLOD_BUILD_SHARE_TOLERANCE, share_tolerance); -			stop_gloderror(); -  			glodBuildObject(mObject[mdl]);  			stop_gloderror();  		} @@ -4489,147 +4389,140 @@ void LLModelPreview::updateStatusMessages()  		}  	} +	if (mFMP->childGetValue("physics_lod_combo").asString() == "From file") +	{ +		mFMP->childEnable("physics_file"); +		mFMP->childEnable("physics_browse"); +	} +	else +	{ +		mFMP->childDisable("physics_file"); +		mFMP->childDisable("physics_browse"); +	} + +	LLSpinCtrl* crease = mFMP->getChild<LLSpinCtrl>("crease_angle"); +	 +	if (mRequestedCreaseAngle[mPreviewLOD] == -1.f) +	{ +		mFMP->childSetColor("crease_label", LLColor4::grey); +		crease->forceSetValue(75.f); +	} +	else +	{ +		mFMP->childSetColor("crease_label", LLColor4::white); +		crease->forceSetValue(mRequestedCreaseAngle[mPreviewLOD]); +	} + +	mModelUpdatedSignal(true); + +} + +void LLModelPreview::updateLodControls(S32 lod) +{  	const char* lod_controls[] =  	{ -		"lod_mode", -		"lod_triangle_limit", -		"lod_error_tolerance", -		"build_operator_text", -		"queue_mode_text", -		"border_mode_text", -		"share_tolerance_text", -		"build_operator", -		"queue_mode", -		"border_mode", -		"share_tolerance" +		"lod_mode_", +		"lod_triangle_limit_",  	};  	const U32 num_lod_controls = sizeof(lod_controls)/sizeof(char*);  	const char* file_controls[] =  	{ -		"lod_browse", -		"lod_file" +		"lod_browse_", +		"lod_file_",  	};  	const U32 num_file_controls = sizeof(file_controls)/sizeof(char*); -	if (fmp) +	LLFloaterModelPreview* fmp = LLFloaterModelPreview::sInstance; +	if (!fmp) return; + +	LLComboBox* lod_combo = mFMP->findChild<LLComboBox>("lod_source_" + lod_name[lod]); +	if (!lod_combo) return; + +	S32 lod_mode = lod_combo->getCurrentIndex(); +	if (lod_mode == 0) // LoD from file  	{ -		//enable/disable controls based on radio groups -		if (mFMP->childGetValue("lod_from_file").asBoolean()) -		{  -			fmp->mLODMode[mPreviewLOD] = 0; -			for (U32 i = 0; i < num_file_controls; ++i) -			{ -				mFMP->childEnable(file_controls[i]); -			} +		fmp->mLODMode[lod] = 0; +		for (U32 i = 0; i < num_file_controls; ++i) +		{ +			mFMP->childShow(file_controls[i] + lod_name[lod]); +		} -			for (U32 i = 0; i < num_lod_controls; ++i) -			{ -				mFMP->childDisable(lod_controls[i]); -			} +		for (U32 i = 0; i < num_lod_controls; ++i) +		{ +			mFMP->childHide(lod_controls[i] + lod_name[lod]); +		} +	} +	else if (lod_mode == 2) // use LoD above +	{ +		fmp->mLODMode[lod] = 2; +		for (U32 i = 0; i < num_file_controls; ++i) +		{ +			mFMP->childHide(file_controls[i] + lod_name[lod]);  		} -		else if (mFMP->childGetValue("lod_none").asBoolean()) + +		for (U32 i = 0; i < num_lod_controls; ++i)  		{ -			fmp->mLODMode[mPreviewLOD] = 2; -			for (U32 i = 0; i < num_file_controls; ++i) -			{ -				mFMP->childDisable(file_controls[i]); -			} +			mFMP->childHide(lod_controls[i] + lod_name[lod]); +		} -			for (U32 i = 0; i < num_lod_controls; ++i) -			{ -				mFMP->childDisable(lod_controls[i]); -			} +		if (lod < LLModel::LOD_HIGH) +		{ +			mModel[lod] = mModel[lod + 1]; +			mScene[lod] = mScene[lod + 1]; +			mVertexBuffer[lod].clear(); -			if (!mModel[mPreviewLOD].empty()) +			// Also update lower LoD +			if (lod > LLModel::LOD_IMPOSTOR)  			{ -				mModel[mPreviewLOD].clear(); -				mScene[mPreviewLOD].clear(); -				mVertexBuffer[mPreviewLOD].clear(); - -				//this can cause phasing issues with the UI, so reenter this function and return -				updateStatusMessages(); -				return; +				updateLodControls(lod - 1);  			}  		} -		else -		{	// auto generate, also the default case for wizard which has no radio selection -			fmp->mLODMode[mPreviewLOD] = 1; +	} +	else // auto generate, the default case for all LoDs except High +	{ +		fmp->mLODMode[lod] = 1; -			//don't actually regenerate lod when refreshing UI -			mLODFrozen = true; +		//don't actually regenerate lod when refreshing UI +		mLODFrozen = true; -			for (U32 i = 0; i < num_file_controls; ++i) -			{ -				mFMP->childDisable(file_controls[i]); -			} +		for (U32 i = 0; i < num_file_controls; ++i) +		{ +			mFMP->childHide(file_controls[i] + lod_name[lod]); +		} -			for (U32 i = 0; i < num_lod_controls; ++i) -			{ -				mFMP->childEnable(lod_controls[i]); -			} +		for (U32 i = 0; i < num_lod_controls; ++i) +		{ +			mFMP->childShow(lod_controls[i] + lod_name[lod]); +		} -			//if (threshold) -			{	 -				LLSpinCtrl* threshold = mFMP->getChild<LLSpinCtrl>("lod_error_threshold"); -				LLSpinCtrl* limit = mFMP->getChild<LLSpinCtrl>("lod_triangle_limit"); -				limit->setMaxValue(mMaxTriangleLimit); -				limit->forceSetValue(mRequestedTriangleCount[mPreviewLOD]); +		LLSpinCtrl* threshold = mFMP->getChild<LLSpinCtrl>("lod_error_threshold_" + lod_name[lod]); +		LLSpinCtrl* limit = mFMP->getChild<LLSpinCtrl>("lod_triangle_limit_" + lod_name[lod]); -				threshold->forceSetValue(mRequestedErrorThreshold[mPreviewLOD]); +		limit->setMaxValue(mMaxTriangleLimit); +		limit->forceSetValue(mRequestedTriangleCount[lod]); -				mFMP->getChild<LLComboBox>("lod_mode")->selectNthItem(mRequestedLoDMode[mPreviewLOD]); -				mFMP->getChild<LLComboBox>("build_operator")->selectNthItem(mRequestedBuildOperator[mPreviewLOD]); -				mFMP->getChild<LLComboBox>("queue_mode")->selectNthItem(mRequestedQueueMode[mPreviewLOD]); -				mFMP->getChild<LLComboBox>("border_mode")->selectNthItem(mRequestedBorderMode[mPreviewLOD]); -				mFMP->getChild<LLSpinCtrl>("share_tolerance")->setValue(mRequestedShareTolerance[mPreviewLOD]); +		threshold->forceSetValue(mRequestedErrorThreshold[lod]); -				if (mRequestedLoDMode[mPreviewLOD] == 0) -				{ -					limit->setVisible(true); -					threshold->setVisible(false); +		mFMP->getChild<LLComboBox>("lod_mode_" + lod_name[lod])->selectNthItem(mRequestedLoDMode[lod]); -					limit->setMaxValue(mMaxTriangleLimit); -					limit->setIncrement(mMaxTriangleLimit/32); -				} -				else -				{ -					limit->setVisible(false); -					threshold->setVisible(true); -				} -			} +		if (mRequestedLoDMode[lod] == 0) +		{ +			limit->setVisible(true); +			threshold->setVisible(false); -			mLODFrozen = false; +			limit->setMaxValue(mMaxTriangleLimit); +			limit->setIncrement(mMaxTriangleLimit/32); +		} +		else +		{ +			limit->setVisible(false); +			threshold->setVisible(true);  		} -	} - -	if (mFMP->childGetValue("physics_lod_combo").asString() == "From file") -	{ -		mFMP->childEnable("physics_file"); -		mFMP->childEnable("physics_browse"); -	} -	else -	{ -		mFMP->childDisable("physics_file"); -		mFMP->childDisable("physics_browse"); -	} -	LLSpinCtrl* crease = mFMP->getChild<LLSpinCtrl>("crease_angle"); -	 -	if (mRequestedCreaseAngle[mPreviewLOD] == -1.f) -	{ -		mFMP->childSetColor("crease_label", LLColor4::grey); -		crease->forceSetValue(75.f); -	} -	else -	{ -		mFMP->childSetColor("crease_label", LLColor4::white); -		crease->forceSetValue(mRequestedCreaseAngle[mPreviewLOD]); +		mLODFrozen = false;  	} - -	mModelUpdatedSignal(true); -  }  void LLModelPreview::setPreviewTarget(F32 distance) @@ -5484,8 +5377,7 @@ void LLModelPreview::setPreviewLOD(S32 lod)  		LLComboBox* combo_box = mFMP->getChild<LLComboBox>("preview_lod_combo");  		combo_box->setCurrentByIndex((NUM_LOD-1)-mPreviewLOD); // combo box list of lods is in reverse order -		mFMP->childSetTextArg("lod_table_footer", "[DETAIL]", mFMP->getString(lod_name[mPreviewLOD])); -		mFMP->childSetText("lod_file", mLODFile[mPreviewLOD]); +		mFMP->childSetText("lod_file_" + lod_name[mPreviewLOD], mLODFile[mPreviewLOD]);  		// the wizard has three lod drop downs  		LLComboBox* combo_box2 = mFMP->getChild<LLComboBox>("preview_lod_combo2"); @@ -5506,25 +5398,16 @@ void LLModelPreview::setPreviewLOD(S32 lod)  			mFMP->childSetColor(lod_triangles_name[i], color);  			mFMP->childSetColor(lod_vertices_name[i], color);  		} - -		LLFloaterModelPreview* fmp = LLFloaterModelPreview::sInstance; -		if (fmp) -		{ -			LLRadioGroup* radio = fmp->getChild<LLRadioGroup>("lod_file_or_limit"); -			radio->selectNthItem(fmp->mLODMode[mPreviewLOD]); -		}  	}  	refresh();  	updateStatusMessages();  } -//static -void LLFloaterModelPreview::onBrowseLOD(void* data) +void LLFloaterModelPreview::onBrowseLOD(S32 lod)  {  	assert_main_thread(); -	LLFloaterModelPreview* mp = (LLFloaterModelPreview*) data; -	mp->loadModel(mp->mModelPreview->mPreviewLOD); +	loadModel(lod);  }  //static @@ -5566,8 +5449,7 @@ void LLFloaterModelPreview::onUpload(void* user_data)  } -//static -void LLFloaterModelPreview::refresh(LLUICtrl* ctrl, void* user_data) +void LLFloaterModelPreview::refresh()  {  	sInstance->toggleCalculateButton(true);  	sInstance->mModelPreview->mDirty = true; @@ -5588,11 +5470,12 @@ void LLModelPreview::textureLoadedCallback( BOOL success, LLViewerFetchedTexture  	}  } -void LLModelPreview::onLODParamCommit(bool enforce_tri_limit) +void LLModelPreview::onLODParamCommit(S32 lod, bool enforce_tri_limit)  {  	if (!mLODFrozen)  	{ -		genLODs(mPreviewLOD, 3, enforce_tri_limit); +		genLODs(lod, 3, enforce_tri_limit); +		updateLodControls(lod);  		updateStatusMessages();  		refresh();  	} @@ -5655,6 +5538,12 @@ void LLFloaterModelPreview::toggleCalculateButton(bool visible)  	}  } +void LLFloaterModelPreview::onLoDSourceCommit(S32 lod) +{ +	mModelPreview->updateLodControls(lod); +	refresh(); +} +  void LLFloaterModelPreview::resetDisplayOptions()  {  	std::map<std::string,bool>::iterator option_it = mModelPreview->mViewOption.begin(); diff --git a/indra/newview/llfloatermodelpreview.h b/indra/newview/llfloatermodelpreview.h index f93d3b9482..d93940efc2 100644 --- a/indra/newview/llfloatermodelpreview.h +++ b/indra/newview/llfloatermodelpreview.h @@ -176,13 +176,13 @@ public:  	void setDetails(F32 x, F32 y, F32 z, F32 streaming_cost, F32 physics_cost); -	static void onBrowseLOD(void* data); +	void onBrowseLOD(S32 lod);  	static void onReset(void* data);  	static void onUpload(void* data); -	static void refresh(LLUICtrl* ctrl, void* data); +	void refresh();  	void			loadModel(S32 lod);  	void 			loadModel(S32 lod, const std::string& file_name, bool force_disable_slm = false); @@ -222,10 +222,12 @@ protected:  	static void		onGenerateNormalsCommit(LLUICtrl*,void*); +	void toggleGenarateNormals(); +  	static void		onAutoFillCommit(LLUICtrl*,void*); -	static void		onLODParamCommit(LLUICtrl*,void*); -	static void		onLODParamCommitTriangleLimit(LLUICtrl*,void*); +	void onLODParamCommit(S32 lod, bool enforce_tri_limit); +  	static void		onExplodeCommit(LLUICtrl*, void*);  	static void onPhysicsParamCommit(LLUICtrl* ctrl, void* userdata); @@ -264,7 +266,7 @@ protected:  	//store which lod mode each LOD is using  	// 0 - load from file  	// 1 - auto generate -	// 2 - None +	// 2 - use LoD above  	S32 mLODMode[4];  	LLMutex* mStatusLock; @@ -275,6 +277,8 @@ private:  	void onClickCalculateBtn();  	void toggleCalculateButton(); +	void onLoDSourceCommit(S32 lod); +  	// Toggles between "Calculate weights & fee" and "Upload" buttons.  	void toggleCalculateButton(bool visible); @@ -335,8 +339,9 @@ public:  	void saveUploadData(const std::string& filename, bool save_skinweights, bool save_joint_poisitions);  	void clearIncompatible(S32 lod);  	void updateStatusMessages(); +	void updateLodControls(S32 lod);  	void clearGLODGroup(); -	void onLODParamCommit(bool enforce_tri_limit); +	void onLODParamCommit(S32 lod, bool enforce_tri_limit);  	const bool getModelPivot( void ) const { return mHasPivot; }  	void setHasPivot( bool val ) { mHasPivot = val; } diff --git a/indra/newview/skins/default/xui/en/floater_model_preview.xml b/indra/newview/skins/default/xui/en/floater_model_preview.xml index 39ef844824..21feb9908e 100755 --- a/indra/newview/skins/default/xui/en/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_model_preview.xml @@ -100,166 +100,636 @@        name="import_tab"        tab_position="top">        <!-- LOD PANEL --> -    <panel -      border="true" -      label="Level of Detail" -      name="lod_panel" -      help_topic="upload_model_lod"> -     LOD TABLE -    <panel -      follows="top|left" -      name="lod table" -      left="0" -      top="0" -      width="300" -      height="163" -      visible="true" -      border="true" -      bevel_style="none" bg_alpha_color="0 0 0 0" bg_opaque_color="0 0 0 0.3"> -     -    <text left="10" width="240" bottom="20" height="15" follows="left|top" name="lod_table_header"> -      Select Level of Detail: -    </text> -     -    <text valign="center" halign="center" bg_visible="true" bottom_delta="16" left="75" name="triangles" width="65" height="18" follows="left|top" value="Triangles"/> -    <text valign="center" halign="center" bg_visible="true" left_pad="0" width="65" name="vertices" height="18" follows="left|top" value="Vertices"/> -    <text valign="center" halign="center" left_pad="0" name="status" width="65" bg_visible="true" height="18" follows="left|top" value="Status"/> -     -    <text valign="center" halign="center" bg_visible="true" name="high_label" left="10" top_pad="0" width="65" height="18" follows="left|top" value="High"/> -    <text valign="center" halign="center" bg_visible="true" name="high_triangles" left_pad="0" width="65" height="18" follows="left|top" value="0"/> -    <text valign="center" halign="center" bg_visible="true" name="high_vertices" left_pad="0" width="65" height="18" follows="left|top" value="0"/> -    <text valign="center" halign="center" bg_visible="true" name="high_status" left_pad="0" width="65" height="18" follows="left|top" value=""/> -    <icon height="16" width="16" image_name="lag_status_critical.tga" mouse_opaque="true" name="status_icon_high" left_delta="20" top_delta="0" /> -     -    <text valign="center" halign="center" bg_visible="true" name="medium_label" left="10" top_pad="0" width="65" height="18" follows="left|top" value="Medium"/> -    <text valign="center" halign="center" bg_visible="true" name="medium_triangles" left_pad="0" width="65" height="18" follows="left|top" value="0"/> -    <text valign="center" halign="center" bg_visible="true" name="medium_vertices" left_pad="0" width="65" height="18" follows="left|top" value="0"/> -    <text valign="center" halign="center" bg_visible="true" name="medium_status" left_pad="0" width="65" height="18" follows="left|top" value=""/> -    <icon height="16" width="16" image_name="lag_status_critical.tga" mouse_opaque="true" name="status_icon_medium" left_delta="20" top_delta="0" /> -     -    <text valign="center" halign="center" bg_visible="true" name="low_label" left="10" top_pad="0" width="65" height="18" follows="left|top" value="Low"/> -    <text valign="center" halign="center" bg_visible="true" name="low_triangles" left_pad="0" width="65" height="18" follows="left|top" value="0"/> -    <text valign="center" halign="center" bg_visible="true" name="low_vertices" left_pad="0" width="65" height="18" follows="left|top" value="0"/> -    <text valign="center" halign="center" bg_visible="true" name="low_status" left_pad="0" width="65" height="18" follows="left|top" value=""/> -    <icon height="16" width="16" image_name="lag_status_critical.tga" mouse_opaque="true" name="status_icon_low" left_delta="20" top_delta="0" /> -     -    <text valign="center" halign="center" bg_visible="true" name="lowest_label" left="10" top_pad="0" width="65" height="18" follows="left|top" value="Lowest"/> -    <text valign="center" halign="center" bg_visible="true" name="lowest_triangles" left_pad="0" width="65" height="18" follows="left|top" value="0"/> -    <text valign="center" halign="center" bg_visible="true" name="lowest_vertices" left_pad="0" width="65" height="18" follows="left|top" value="0"/> -    <text valign="center" halign="center" bg_visible="true" name="lowest_status" left_pad="0" width="65" height="18" follows="left|top" value=""/> -    <icon height="16" width="16" image_name="lag_status_critical.tga" mouse_opaque="true" name="status_icon_lowest" left_delta="20" top_delta="0" /> -     -    <text left="10" width="240" height="15" top_pad="15" follows="left|top" name="lod_table_footer"> -      Level of Detail: [DETAIL] -    </text> -     -    <icon height="16" width="16" left="20" follows="left|top" name="lod_status_message_icon"/> -    <text left_pad="5" width="230" height="28" follows="left|top" top_pad="-15" wrap="true" name="lod_status_message_text"/> -    </panel> -     -     LOD MESH -    <panel -      follows="top|left" -      name="mesh" -      left="0" -      top_pad="0" -      width="300" -      height="237" -      visible="true" -      border="true" -      bevel_style="none" bg_alpha_color="0 0 0 0" bg_opaque_color="0 0 0 0.3"> -     -    <text top_pad="5" left="10" name="mesh_label" height="15" follows="left|top"> -      Mesh -    </text> -     -    <radio_group follows="top|left" height="210" left="30" name="lod_file_or_limit" width="240" value="lod_from_file"> -      <radio_item bottom="195" label="Load from file" name="lod_from_file"/> -      <radio_item bottom="150" label="Auto generate" name="lod_auto_generate"/> -      <radio_item bottom="0" label="None" name="lod_none"/> -    </radio_group> -     -    <line_editor follows="left|top" bottom_delta="-170" width="140" left="45" value="" name="lod_file" height="20"/> -    <button bottom_delta="3" name="lod_browse" label="Browse..." left_pad="5" follows="left|top" width="70" height="25"/> -     -    <combo_box follows="top|left" name="lod_mode" top_pad="22" width="100" left="45" height="20"> -      <combo_item name="triangle_limit"> -        Triangle Limit -      </combo_item> -      <combo_item name="error_threshold"> -        Error Threshold -      </combo_item> -    </combo_box> -    <spinner follows="top|left" name="lod_triangle_limit" increment="10" left_pad="5" height="20" width="100" decimal_digits="0" enabled="true"/> -    <spinner left_delta="0" bottom_delta="0" increment="0.01"  follows="top|left" name="lod_error_threshold" min_val="0" max_val="100" height="20" width="100" decimal_digits="3" visible="false" enabled="true"/> -     -    <text follows="top|left" name="build_operator_text" left="45" top_pad="10" width="100" height="15" text_readonly_color="LabelDisabledColor"> -      Build Operator:   -    </text> -    <text follows="top|left" name="queue_mode_text" left_pad="5" width="100" height="15" text_readonly_color="LabelDisabledColor"> -      Queue Mode: -    </text> -    <combo_box follows="top|left" name="build_operator" top_pad="5" left="45" width="100" height="20"> -      <combo_item name="edge_collapse"> -        Edge Collapse -      </combo_item> -      <combo_item name="half_edge_collapse"> -        Half Edge Collapse -      </combo_item> -    </combo_box> -     -    <combo_box follows="top|left" name="queue_mode" left_pad="5" width="100" height="20"> -      <combo_item name="greedy"> -        Greedy -      </combo_item> -      <combo_item name="lazy"> -        Lazy -      </combo_item> -      <combo_item name="independent"> -        Independent -      </combo_item> -    </combo_box> -     -    <text top_pad="10" name="border_mode_text" left="45" follows="left|top" width="100" height="15" text_readonly_color="LabelDisabledColor"> -      Border Mode: -    </text> -     -    <text left_pad="5" name="share_tolderance_text"  follows="left|top" width="100" height="15" text_readonly_color="LabelDisabledColor"> -      Share Tolerance: -    </text> -     -    <combo_box follows="left|top" left="45" height="20" name="border_mode" width="100"> -      <combo_item name="border_unlock"> -        Unlock -      </combo_item> -      <combo_item name="border_lock"> -        Lock -      </combo_item> -    </combo_box> -    <spinner follows="left|top" name="share_tolerance" left_pad="5" width="100" decimal_digits="5" initial_value="0.00001" height="20"/> -    </panel> -     -     LOD GENERATE NORMALS -    <panel -      follows="top|left" -      name="generate normals" -      left="0" -      top_pad="0" -      width="300" -      height="46" -      visible="true" -      border="true" -      bevel_style="none" bg_alpha_color="0 0 0 0" bg_opaque_color="0 0 0 0.3"> -     -    <text left="10" name="gen_normals_label" top_pad="5" follows="top|left" width="240" height="15"> -      Generate Normals -    </text> -    <text left="35" top_pad="5" follows="top|left" width="100" height="15" name="crease_label"> -      Crease Angle: -    </text> -    <spinner follows="top|left" left_pad="5" min_val="0" max_val="180" value="75" width="60" height="20" name="crease_angle"/>   -    </panel> -      </panel> +        <panel +         help_topic="upload_model_lod" +         label="Level of Detail" +         layout="topleft" +         name="lod_panel" +         title="Level of Detail"> +            <view_border +             bevel_style="none" +             follows="top|left" +             height="275" +             layout="topleft" +             left="3" +             name="lod_tab_border" +             top_pad="0" +             width="619" /> +            <text +             bg_visible="true" +             follows="left|top" +             height="18" +             initial_value="Source" +             layout="topleft" +             left="75" +             name="source" +             top="15" +             valign="center" +             value="Source" +             width="335" /> +            <text +             bg_visible="true" +             follows="left|top" +             halign="right" +             height="18" +             initial_value="Triangles" +             layout="topleft" +             left_pad="0" +             name="triangles" +             top_delta="0" +             valign="center" +             value="Triangles" +             width="65" /> +            <text +             bg_visible="true" +             follows="left|top" +             halign="right" +             height="18" +             initial_value="Vertices" +             layout="topleft" +             left_pad="0" +             name="vertices" +             valign="center" +             value="Vertices" +             width="65" /> +            <text +             bg_visible="true" +             follows="left|top" +             height="18" +             initial_value="High" +             layout="topleft" +             left="10" +             name="high_label" +             top_pad="10" +             valign="center" +             value="High" +             width="65" /> +            <combo_box +             follows="top|left" +             height="20" +             layout="topleft" +             left_pad="0" +             name="lod_source_high" +             top_delta="-3" +             width="135"> +                <item +                 id="Load from file" +                 value="Load from file" /> +                <item +                 id="Generate" +                 value="Generate" /> +            </combo_box> +            <line_editor +             follows="left|top" +             height="20" +             initial_value="" +             layout="topleft" +             left_pad="5" +             name="lod_file_high" +             top_delta="0" +             value="" +             width="120" /> +            <button +             follows="left|top" +             height="20" +             label="Browse..." +             layout="topleft" +             left_pad="5" +             name="lod_browse_high" +             top_delta="0" +             width="70" /> +            <combo_box +             follows="top|left" +             height="20" +             layout="topleft" +             left="215" +             name="lod_mode_high" +             top_delta="0" +             visible="false" +             width="135"> +                <item +                 id="Triangle Limit" +                 value="Triangle Limit" /> +                <item +                 id="Error Threshold" +                 value="Error Threshold" /> +            </combo_box> +            <spinner +             decimal_digits="0" +             follows="top|left" +             height="20" +             increment="10" +             layout="topleft" +             left_pad="5" +             name="lod_triangle_limit_high" +             visible="false" +             width="55" /> +            <spinner +             follows="top|left" +             height="20" +             increment="0.01" +             layout="topleft" +             left_delta="0" +             max_val="100" +             name="lod_error_threshold_high" +             top_delta="0" +             visible="false" +             width="55" /> +            <text +             bg_visible="true" +             follows="left|top" +             halign="right" +             height="18" +             initial_value="0" +             layout="topleft" +             left_pad="0" +             name="high_triangles" +             valign="center" +             value="0" +             width="65" /> +            <text +             bg_visible="true" +             follows="left|top" +             halign="right" +             height="18" +             initial_value="0" +             layout="topleft" +             left_pad="0" +             name="high_vertices" +             valign="center" +             value="0" +             width="65" /> +            <text +             bg_visible="true" +             follows="left|top" +             halign="center" +             height="18" +             initial_value="" +             layout="topleft" +             left_pad="0" +             name="high_status" +             valign="center" +             value="" +             width="65" /> +            <icon +             height="16" +             image_name="lag_status_critical.tga" +             layout="topleft" +             left_delta="20" +             mouse_opaque="true" +             name="status_icon_high" +             top_delta="0" +             width="16" /> +            <text +             bg_visible="true" +             follows="left|top" +             height="18" +             initial_value="Medium" +             layout="topleft" +             left="10" +             name="medium_label" +             top_pad="15" +             valign="center" +             value="Medium" +             width="65" /> +            <combo_box +             follows="top|left" +             height="20" +             layout="topleft" +             left_pad="0" +             name="lod_source_medium" +             top_delta="-3" +             width="135"> +                <item +                 id="Load from file" +                 value="Load from file" /> +                <item +                 id="Generate" +                 value="Generate" /> +                <item +                 id="Use LoD above" +                 value="Use LoD above" /> +            </combo_box> +            <line_editor +             follows="left|top" +             height="20" +             initial_value="" +             layout="topleft" +             left_pad="5" +             name="lod_file_medium" +             top_delta="0" +             value="" +             visible="false" +             width="120" /> +            <button +             follows="left|top" +             height="20" +             label="Browse..." +             layout="topleft" +             left_pad="5" +             name="lod_browse_medium" +             top_delta="0" +             visible="false" +             width="70" /> +            <combo_box +             follows="top|left" +             height="20" +             layout="topleft" +             left="215" +             name="lod_mode_medium" +             top_delta="0" +             width="135"> +                <item +                 id="Triangle Limit" +                 value="Triangle Limit" /> +                <item +                 id="Error Threshold" +                 value="Error Threshold" /> +            </combo_box> +            <spinner +             decimal_digits="0" +             follows="top|left" +             height="20" +             increment="10" +             layout="topleft" +             left_pad="5" +             name="lod_triangle_limit_medium" +             width="55" /> +            <spinner +             follows="top|left" +             height="20" +             increment="0.01" +             layout="topleft" +             left_delta="0" +             max_val="100" +             name="lod_error_threshold_medium" +             top_delta="0" +             visible="false" +             width="55" /> +            <text +             bg_visible="true" +             follows="left|top" +             halign="right" +             height="18" +             initial_value="0" +             layout="topleft" +             left_pad="0" +             name="medium_triangles" +             valign="center" +             value="0" +             width="65" /> +            <text +             bg_visible="true" +             follows="left|top" +             halign="right" +             height="18" +             initial_value="0" +             layout="topleft" +             left_pad="0" +             name="medium_vertices" +             valign="center" +             value="0" +             width="65" /> +            <text +             bg_visible="true" +             follows="left|top" +             halign="center" +             height="18" +             initial_value="" +             layout="topleft" +             left_pad="0" +             name="medium_status" +             valign="center" +             value="" +             width="65" /> +            <icon +             height="16" +             image_name="lag_status_critical.tga" +             layout="topleft" +             left_delta="20" +             mouse_opaque="true" +             name="status_icon_medium" +             top_delta="0" +             width="16" /> +            <text +             bg_visible="true" +             follows="left|top" +             height="18" +             initial_value="Low" +             layout="topleft" +             left="10" +             name="low_label" +             top_pad="15" +             valign="center" +             value="Low" +             width="65" /> +            <combo_box +             follows="top|left" +             height="20" +             layout="topleft" +             left_pad="0" +             name="lod_source_low" +             top_delta="-3" +             width="135"> +                <item +                 id="Load from file" +                 value="Load from file" /> +                <item +                 id="Generate" +                 value="Generate" /> +                <item +                 id="Use LoD above" +                 value="Use LoD above" /> +            </combo_box> +            <line_editor +             follows="left|top" +             height="20" +             initial_value="" +             layout="topleft" +             left_pad="5" +             name="lod_file_low" +             top_delta="0" +             value="" +             visible="false" +             width="120" /> +            <button +             follows="left|top" +             height="20" +             label="Browse..." +             layout="topleft" +             left_pad="5" +             name="lod_browse_low" +             top_delta="0" +             visible="false" +             width="70" /> +            <combo_box +             follows="top|left" +             height="20" +             layout="topleft" +             left="215" +             name="lod_mode_low" +             top_delta="0" +             width="135"> +                <item +                 id="Triangle Limit" +                 value="Triangle Limit" /> +                <item +                 id="Error Threshold" +                 value="Error Threshold" /> +            </combo_box> +            <spinner +             decimal_digits="0" +             follows="top|left" +             height="20" +             increment="10" +             layout="topleft" +             left_pad="5" +             name="lod_triangle_limit_low" +             width="55" /> +            <spinner +             follows="top|left" +             height="20" +             increment="0.01" +             layout="topleft" +             left_delta="0" +             max_val="100" +             name="lod_error_threshold_low" +             top_delta="0" +             visible="false" +             width="55" /> +            <text +             bg_visible="true" +             follows="left|top" +             halign="right" +             height="18" +             initial_value="0" +             layout="topleft" +             left_pad="0" +             name="low_triangles" +             valign="center" +             value="0" +             width="65" /> +            <text +             bg_visible="true" +             follows="left|top" +             halign="right" +             height="18" +             initial_value="0" +             layout="topleft" +             left_pad="0" +             name="low_vertices" +             valign="center" +             value="0" +             width="65" /> +            <text +             bg_visible="true" +             follows="left|top" +             halign="center" +             height="18" +             initial_value="" +             layout="topleft" +             left_pad="0" +             name="low_status" +             valign="center" +             value="" +             width="65" /> +            <icon +             height="16" +             image_name="lag_status_critical.tga" +             layout="topleft" +             left_delta="20" +             mouse_opaque="true" +             name="status_icon_low" +             top_delta="0" +             width="16" /> +            <text +             bg_visible="true" +             follows="left|top" +             height="18" +             initial_value="Lowest" +             layout="topleft" +             left="10" +             name="lowest_label" +             top_pad="15" +             valign="center" +             value="Lowest" +             width="65" /> +            <combo_box +             follows="top|left" +             height="20" +             layout="topleft" +             left_pad="0" +             name="lod_source_lowest" +             top_delta="-3" +             width="135"> +                <item +                 id="Load from file" +                 value="Load from file" /> +                <item +                 id="Generate" +                 value="Generate" /> +                <item +                 id="Use LoD above" +                 value="Use LoD above" /> +            </combo_box> +            <line_editor +             follows="left|top" +             height="20" +             initial_value="" +             layout="topleft" +             left_pad="5" +             name="lod_file_lowest" +             top_delta="0" +             value="" +             visible="false" +             width="120" /> +            <button +             follows="left|top" +             height="20" +             label="Browse..." +             layout="topleft" +             left_pad="5" +             name="lod_browse_lowest" +             top_delta="0" +             visible="false" +             width="70" /> +            <combo_box +             follows="top|left" +             height="20" +             layout="topleft" +             left="215" +             name="lod_mode_lowest" +             top_delta="0" +             width="135"> +                <item +                 id="Triangle Limit" +                 value="Triangle Limit" /> +                <item +                 id="Error Threshold" +                 value="Error Threshold" /> +            </combo_box> +            <spinner +             decimal_digits="0" +             follows="top|left" +             height="20" +             increment="10" +             layout="topleft" +             left_pad="5" +             name="lod_triangle_limit_lowest" +             width="55" /> +            <spinner +             follows="top|left" +             height="20" +             increment="0.01" +             layout="topleft" +             left_delta="0" +             max_val="100" +             name="lod_error_threshold_lowest" +             top_delta="0" +             visible="false" +             width="55" /> +            <text +             bg_visible="true" +             follows="left|top" +             halign="right" +             height="18" +             initial_value="0" +             layout="topleft" +             left_pad="0" +             name="lowest_triangles" +             valign="center" +             value="0" +             width="65" /> +            <text +             bg_visible="true" +             follows="left|top" +             halign="right" +             height="18" +             initial_value="0" +             layout="topleft" +             left_pad="0" +             name="lowest_vertices" +             valign="center" +             value="0" +             width="65" /> +            <text +             bg_visible="true" +             follows="left|top" +             halign="center" +             height="18" +             initial_value="" +             layout="topleft" +             left_pad="0" +             name="lowest_status" +             valign="center" +             value="" +             width="65" /> +            <icon +             height="16" +             image_name="lag_status_critical.tga" +             layout="topleft" +             left_delta="20" +             mouse_opaque="true" +             name="status_icon_lowest" +             top_delta="0" +             width="16" /> +            <icon +             height="16" +             layout="topleft" +             left="10" +             name="lod_status_message_icon" +             top_pad="20" +             width="16" /> +            <text +             follows="left|top" +             height="16" +             layout="topleft" +             left_pad="5" +             name="lod_status_message_text" +             top_delta="0" +             width="584" +             word_wrap="true" +             wrap="true" /> +            <view_border +             bevel_style="none" +             follows="top|left" +             height="0" +             layout="topleft" +             left="10" +             name="lod_tab_border" +             top_pad="20" +             width="605" /> +            <check_box +             follows="top|left" +             height="15" +             label="Generate Normals" +             layout="topleft" +             left="10" +             name="gen_normals" +             top_pad="20" /> +            <text +             enabled="false" +             follows="top|left" +             height="15" +             initial_value="Crease Angle:" +             layout="topleft" +             left="200" +             name="crease_label" +             top_delta="0" +             value="Crease Angle:" +             width="100" /> +            <spinner +             enabled="false" +             follows="top|left" +             height="20" +             initial_value="75" +             layout="topleft" +             left_pad="5" +             max_val="180" +             name="crease_angle" +             value="75" +             width="60" /> +        </panel>        <!-- PHYSYCS PANEL -->          <panel            help_topic="upload_model_physics" | 
