diff options
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/llfloatermodelpreview.cpp | 65 | ||||
| -rw-r--r-- | indra/newview/llfloatermodelpreview.h | 9 | ||||
| -rw-r--r-- | indra/newview/llfloaterregioninfo.cpp | 5 | ||||
| -rw-r--r-- | indra/newview/llpanelobject.cpp | 88 | ||||
| -rw-r--r-- | indra/newview/llpanelobject.h | 5 | ||||
| -rw-r--r-- | indra/newview/llpanelvolume.cpp | 94 | ||||
| -rw-r--r-- | indra/newview/llpanelvolume.h | 6 | ||||
| -rw-r--r-- | indra/newview/llselectmgr.cpp | 10 | ||||
| -rw-r--r-- | indra/newview/llviewerobject.cpp | 17 | ||||
| -rw-r--r-- | indra/newview/llviewerobject.h | 2 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/floater_model_preview.xml | 4 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/floater_model_wizard.xml | 4 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/floater_tools.xml | 80 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/menu_inventory_add.xml | 14 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/panel_region_general.xml | 1 | 
15 files changed, 231 insertions, 173 deletions
| diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index e8da1aa42c..b7e9865228 100644 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -2597,6 +2597,7 @@ LLModelPreview::LLModelPreview(S32 width, S32 height, LLFloater* fmp)  	mLoading = false;  	mLoadState = LLModelLoader::STARTING;  	mGroup = 0; +	mLODFrozen = false;  	mBuildShareTolerance = 0.f;  	mBuildQueueMode = GLOD_QUEUE_GREEDY;  	mBuildBorderMode = GLOD_BORDER_UNLOCK; @@ -2605,6 +2606,13 @@ LLModelPreview::LLModelPreview(S32 width, S32 height, LLFloater* fmp)  	for (U32 i = 0; i < LLModel::NUM_LODS; ++i)  	{  		mRequestedTriangleCount[i] = 0; +		mRequestedCreaseAngle[i] = -1.f; +		mRequestedLoDMode[i] = 0; +		mRequestedErrorThreshold[i] = 0.f; +		mRequestedBuildOperator[i] = 0; +		mRequestedQueueMode[i] = 0; +		mRequestedBorderMode[i] = 0; +		mRequestedShareTolerance[i] = 0.f;  	}  	mViewOption["show_textures"] = false; @@ -3247,6 +3255,8 @@ void LLModelPreview::generateNormals()  	F32 angle_cutoff = mFMP->childGetValue("crease_angle").asReal(); +	mRequestedCreaseAngle[which_lod] = angle_cutoff; +  	angle_cutoff *= DEG_TO_RAD;  	if (which_lod == 3 && !mBaseModel.empty()) @@ -3266,7 +3276,7 @@ void LLModelPreview::generateNormals()  	mVertexBuffer[which_lod].clear();  	refresh(); - +	updateStatusMessages();  }  void LLModelPreview::clearMaterials() @@ -3342,6 +3352,7 @@ void LLModelPreview::genLODs(S32 which_lod, U32 decimation, bool enforce_tri_lim  	{  		lod_mode = iface->getFirstSelectedIndex();  	} +	mRequestedLoDMode[mPreviewLOD] = lod_mode;  	F32 lod_error_threshold = mFMP->childGetValue("lod_error_threshold").asReal(); @@ -3365,6 +3376,7 @@ void LLModelPreview::genLODs(S32 which_lod, U32 decimation, bool enforce_tri_lim  	{  		build_operator = iface->getFirstSelectedIndex();  	} +	mRequestedBuildOperator[mPreviewLOD] = build_operator;   	if (build_operator == 0)  	{ @@ -3381,6 +3393,7 @@ void LLModelPreview::genLODs(S32 which_lod, U32 decimation, bool enforce_tri_lim  	{  		queue_mode = iface->getFirstSelectedIndex();  	} +	mRequestedQueueMode[mPreviewLOD] = queue_mode;  	if (queue_mode == 0)  	{ @@ -3402,6 +3415,7 @@ void LLModelPreview::genLODs(S32 which_lod, U32 decimation, bool enforce_tri_lim  	{  		border_mode = iface->getFirstSelectedIndex();  	} +	mRequestedBorderMode[mPreviewLOD] = border_mode;  	if (border_mode == 0)  	{ @@ -3437,6 +3451,7 @@ void LLModelPreview::genLODs(S32 which_lod, U32 decimation, bool enforce_tri_lim  		mBuildShareTolerance = share_tolerance;  		object_dirty = true;  	} +	mRequestedShareTolerance[mPreviewLOD] = share_tolerance;  	if (mGroup == 0)  	{ @@ -3545,6 +3560,7 @@ void LLModelPreview::genLODs(S32 which_lod, U32 decimation, bool enforce_tri_lim  		U32 submeshes = 0;  		mRequestedTriangleCount[lod] = triangle_count; +		mRequestedErrorThreshold[lod] = lod_error_threshold;  		glodGroupParameteri(mGroup, GLOD_ADAPT_MODE, lod_mode);  		stop_gloderror(); @@ -4021,6 +4037,9 @@ void LLModelPreview::updateStatusMessages()  		{	// auto generate, also the default case for wizard which has no radio selection  			fmp->mLODMode[mPreviewLOD] = 1; +			//don't actually regenerate lod when refreshing UI +			mLODFrozen = true; +  			for (U32 i = 0; i < num_file_controls; ++i)  			{  				mFMP->childDisable(file_controls[i]); @@ -4033,20 +4052,21 @@ void LLModelPreview::updateStatusMessages()  			//if (threshold)  			{	 -				U32 lod_mode = 0; -				LLCtrlSelectionInterface* iface = mFMP->childGetSelectionInterface("lod_mode"); -				if (iface) -				{ -					lod_mode = iface->getFirstSelectedIndex(); -				} -  				LLSpinCtrl* threshold = mFMP->getChild<LLSpinCtrl>("lod_error_threshold");  				LLSpinCtrl* limit = mFMP->getChild<LLSpinCtrl>("lod_triangle_limit");  				limit->setMaxValue(mMaxTriangleLimit); -				limit->setValue(mRequestedTriangleCount[mPreviewLOD]); +				limit->forceSetValue(mRequestedTriangleCount[mPreviewLOD]); + +				threshold->forceSetValue(mRequestedErrorThreshold[mPreviewLOD]); + +				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]); -				if (lod_mode == 0) +				if (mRequestedLoDMode[mPreviewLOD] == 0)  				{  					limit->setVisible(true);  					threshold->setVisible(false); @@ -4060,6 +4080,8 @@ void LLModelPreview::updateStatusMessages()  					threshold->setVisible(true);  				}  			} + +			mLODFrozen = false;  		}  	} @@ -4075,6 +4097,20 @@ void LLModelPreview::updateStatusMessages()  		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]); +	} +  }  void LLModelPreview::setPreviewTarget(F32 distance) @@ -4925,9 +4961,12 @@ void LLModelPreview::textureLoadedCallback( BOOL success, LLViewerFetchedTexture  void LLModelPreview::onLODParamCommit(bool enforce_tri_limit)  { -	genLODs(mPreviewLOD, 3, enforce_tri_limit); -	updateStatusMessages(); -	refresh(); +	if (!mLODFrozen) +	{ +		genLODs(mPreviewLOD, 3, enforce_tri_limit); +		updateStatusMessages(); +		refresh(); +	}  }  LLFloaterModelPreview::DecompRequest::DecompRequest(const std::string& stage, LLModel* mdl) diff --git a/indra/newview/llfloatermodelpreview.h b/indra/newview/llfloatermodelpreview.h index 4d8b46807f..b54a72e555 100644 --- a/indra/newview/llfloatermodelpreview.h +++ b/indra/newview/llfloatermodelpreview.h @@ -373,13 +373,20 @@ public:  	std::map<std::string, bool> mViewOption;  	//GLOD object parameters (must rebuild object if these change) +	bool mLODFrozen;  	F32 mBuildShareTolerance;  	U32 mBuildQueueMode;  	U32 mBuildOperator;  	U32 mBuildBorderMode; +	U32 mRequestedLoDMode[LLModel::NUM_LODS];  	S32 mRequestedTriangleCount[LLModel::NUM_LODS]; +	F32 mRequestedErrorThreshold[LLModel::NUM_LODS]; +	U32 mRequestedBuildOperator[LLModel::NUM_LODS]; +	U32 mRequestedQueueMode[LLModel::NUM_LODS]; +	U32 mRequestedBorderMode[LLModel::NUM_LODS]; +	F32 mRequestedShareTolerance[LLModel::NUM_LODS]; +	F32 mRequestedCreaseAngle[LLModel::NUM_LODS]; -	  	LLModelLoader* mModelLoader;  	LLModelLoader::scene mScene[LLModel::NUM_LODS]; diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index 34fda49375..fc6976755f 100644 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -590,6 +590,11 @@ bool LLPanelRegionGeneralInfo::refreshFromRegion(LLViewerRegion* region)  	getChildView("im_btn")->setEnabled(allow_modify);  	getChildView("manage_telehub_btn")->setEnabled(allow_modify); +	const bool enable_mesh = gSavedSettings.getBOOL("MeshEnabled") &&  +		gAgent.getRegion() && +		!gAgent.getRegion()->getCapability("GetMesh").empty(); +	getChildView("mesh_rez_enabled_check")->setVisible(enable_mesh); +	getChildView("mesh_rez_enabled_check")->setEnabled(getChildView("mesh_rez_enabled_check")->getEnabled() && enable_mesh);  	// Data gets filled in by processRegionInfo  	return LLPanelRegionInfo::refreshFromRegion(region); diff --git a/indra/newview/llpanelobject.cpp b/indra/newview/llpanelobject.cpp index 64af6c2157..204c146f3c 100644 --- a/indra/newview/llpanelobject.cpp +++ b/indra/newview/llpanelobject.cpp @@ -33,11 +33,9 @@  #include "lleconomy.h"  #include "llerror.h"  #include "llfontgl.h" -#include "llmaterialtable.h"  #include "llpermissionsflags.h"  #include "llstring.h"  #include "llvolume.h" -#include "material_codes.h"  #include "m3math.h"  // project includes @@ -57,7 +55,6 @@  #include "lltool.h"  #include "lltoolcomp.h"  #include "lltoolmgr.h" -#include "lltrans.h"  #include "llui.h"  #include "llviewerobject.h"  #include "llviewerregion.h" @@ -101,17 +98,6 @@ BOOL	LLPanelObject::postBuild()  {  	setMouseOpaque(FALSE); -	std::map<std::string, std::string> material_name_map; -	material_name_map["Stone"]= LLTrans::getString("Stone"); -	material_name_map["Metal"]= LLTrans::getString("Metal");	 -	material_name_map["Glass"]= LLTrans::getString("Glass");	 -	material_name_map["Wood"]= LLTrans::getString("Wood");	 -	material_name_map["Flesh"]= LLTrans::getString("Flesh"); -	material_name_map["Plastic"]= LLTrans::getString("Plastic"); -	material_name_map["Rubber"]= LLTrans::getString("Rubber");	 -	material_name_map["Light"]= LLTrans::getString("Light");		 -	 -	LLMaterialTable::basic.initTableTransNames(material_name_map);  	//--------------------------------------------------------  	// Top  	//-------------------------------------------------------- @@ -166,22 +152,6 @@ BOOL	LLPanelObject::postBuild()  	//-------------------------------------------------------- -	// material type popup -	mComboMaterial = getChild<LLComboBox>("material"); -	childSetCommitCallback("material",onCommitMaterial,this); -	mComboMaterial->removeall(); - -	for (LLMaterialTable::info_list_t::iterator iter = LLMaterialTable::basic.mMaterialInfoList.begin(); -		 iter != LLMaterialTable::basic.mMaterialInfoList.end(); ++iter) -	{ -		LLMaterialInfo* minfop = *iter; -		if (minfop->mMCode != LL_MCODE_LIGHT) -		{ -			mComboMaterial->add(minfop->mName);   -		} -	} -	mComboMaterialItemCount = mComboMaterial->getItemCount(); -  	// Base Type  	mComboBaseType = getChild<LLComboBox>("comboBaseType");  	childSetCommitCallback("comboBaseType",onCommitParametric,this); @@ -309,7 +279,6 @@ BOOL	LLPanelObject::postBuild()  LLPanelObject::LLPanelObject()  :	LLPanel(), -	mComboMaterialItemCount(0),  	mIsPhysical(FALSE),  	mIsTemporary(FALSE),  	mIsPhantom(FALSE), @@ -527,43 +496,6 @@ void LLPanelObject::getState( )  	mCheckCastShadows->setEnabled( roots_selected==1 && editable );  #endif -	// Update material part -	// slightly inefficient - materials are unique per object, not per TE -	U8 material_code = 0; -	struct f : public LLSelectedTEGetFunctor<U8> -	{ -		U8 get(LLViewerObject* object, S32 te) -		{ -			return object->getMaterial(); -		} -	} func; -	bool material_same = LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue( &func, material_code ); -	std::string LEGACY_FULLBRIGHT_DESC = LLTrans::getString("Fullbright"); -	if (editable && single_volume && material_same) -	{ -		mComboMaterial->setEnabled( TRUE ); -		if (material_code == LL_MCODE_LIGHT) -		{ -			if (mComboMaterial->getItemCount() == mComboMaterialItemCount) -			{ -				mComboMaterial->add(LEGACY_FULLBRIGHT_DESC); -			} -			mComboMaterial->setSimple(LEGACY_FULLBRIGHT_DESC); -		} -		else -		{ -			if (mComboMaterial->getItemCount() != mComboMaterialItemCount) -			{ -				mComboMaterial->remove(LEGACY_FULLBRIGHT_DESC); -			} -			 -			mComboMaterial->setSimple(std::string(LLMaterialTable::basic.getName(material_code))); -		} -	} -	else -	{ -		mComboMaterial->setEnabled( FALSE ); -	}  	//----------------------------------------------------------------------------  	S32 selected_item	= MI_BOX; @@ -1245,25 +1177,6 @@ void LLPanelObject::sendCastShadows()  }  // static -void LLPanelObject::onCommitMaterial( LLUICtrl* ctrl, void* userdata ) -{ -	//LLPanelObject* self = (LLPanelObject*) userdata; -	LLComboBox* box = (LLComboBox*) ctrl; - -	if (box) -	{ -		// apply the currently selected material to the object -		const std::string& material_name = box->getSimple(); -		std::string LEGACY_FULLBRIGHT_DESC = LLTrans::getString("Fullbright"); -		if (material_name != LEGACY_FULLBRIGHT_DESC) -		{ -			U8 material_code = LLMaterialTable::basic.getMCode(material_name); -			LLSelectMgr::getInstance()->selectionSetMaterial(material_code); -		} -	} -} - -// static  void LLPanelObject::onCommitParametric( LLUICtrl* ctrl, void* userdata )  {  	LLPanelObject* self = (LLPanelObject*) userdata; @@ -1937,7 +1850,6 @@ void LLPanelObject::clearCtrls()  	mCheckCastShadows->set(FALSE);  	mCheckCastShadows->setEnabled( FALSE );  #endif -	mComboMaterial	->setEnabled( FALSE );  	// Disable text labels  	mLabelPosition	->setEnabled( FALSE );  	mLabelSize		->setEnabled( FALSE ); diff --git a/indra/newview/llpanelobject.h b/indra/newview/llpanelobject.h index e2f2a4400d..475dfdaedb 100644 --- a/indra/newview/llpanelobject.h +++ b/indra/newview/llpanelobject.h @@ -66,7 +66,6 @@ public:  	static void 	onCommitPhantom(		LLUICtrl* ctrl, void* userdata);  	static void 	onCommitCastShadows(	LLUICtrl* ctrl, void* userdata);  	static void 	onCommitPhysics(		LLUICtrl* ctrl, void* userdata); -	static void 	onCommitMaterial(		LLUICtrl* ctrl, void* userdata);  	static void 	onCommitParametric(LLUICtrl* ctrl, void* userdata); @@ -94,10 +93,6 @@ protected:  	void 			getVolumeParams(LLVolumeParams& volume_params);  protected: -	S32				mComboMaterialItemCount; - -	LLComboBox*		mComboMaterial; -	  	// Per-object options  	LLComboBox*		mComboBaseType; diff --git a/indra/newview/llpanelvolume.cpp b/indra/newview/llpanelvolume.cpp index c443814c89..ebddaa90bc 100644 --- a/indra/newview/llpanelvolume.cpp +++ b/indra/newview/llpanelvolume.cpp @@ -59,6 +59,7 @@  #include "lltool.h"  #include "lltoolcomp.h"  #include "lltoolmgr.h" +#include "lltrans.h"  #include "llui.h"  #include "llviewerobject.h"  #include "llviewerregion.h" @@ -156,6 +157,34 @@ BOOL	LLPanelVolume::postBuild()  		mSpinPhysicsRestitution = getChild<LLSpinCtrl>("Physics Restitution");  		mSpinPhysicsRestitution->setCommitCallback(boost::bind(&LLPanelVolume::sendPhysicsRestitution, this, _1, mSpinPhysicsRestitution));  	} + +	std::map<std::string, std::string> material_name_map; +	material_name_map["Stone"]= LLTrans::getString("Stone"); +	material_name_map["Metal"]= LLTrans::getString("Metal");	 +	material_name_map["Glass"]= LLTrans::getString("Glass");	 +	material_name_map["Wood"]= LLTrans::getString("Wood");	 +	material_name_map["Flesh"]= LLTrans::getString("Flesh"); +	material_name_map["Plastic"]= LLTrans::getString("Plastic"); +	material_name_map["Rubber"]= LLTrans::getString("Rubber");	 +	material_name_map["Light"]= LLTrans::getString("Light");		 +	 +	LLMaterialTable::basic.initTableTransNames(material_name_map); + +	// material type popup +	mComboMaterial = getChild<LLComboBox>("material"); +	childSetCommitCallback("material",onCommitMaterial,this); +	mComboMaterial->removeall(); + +	for (LLMaterialTable::info_list_t::iterator iter = LLMaterialTable::basic.mMaterialInfoList.begin(); +		 iter != LLMaterialTable::basic.mMaterialInfoList.end(); ++iter) +	{ +		LLMaterialInfo* minfop = *iter; +		if (minfop->mMCode != LL_MCODE_LIGHT) +		{ +			mComboMaterial->add(minfop->mName);   +		} +	} +	mComboMaterialItemCount = mComboMaterial->getItemCount();  	// Start with everyone disabled  	clearCtrls(); @@ -164,7 +193,8 @@ BOOL	LLPanelVolume::postBuild()  }  LLPanelVolume::LLPanelVolume() -	: LLPanel() +	: LLPanel(), +	  mComboMaterialItemCount(0)  {  	setMouseOpaque(FALSE); @@ -379,6 +409,46 @@ void LLPanelVolume::getState( )  		getChildView("FlexForceZ")->setEnabled(false);  	} +	// Material properties + +	// Update material part +	// slightly inefficient - materials are unique per object, not per TE +	U8 material_code = 0; +	struct f : public LLSelectedTEGetFunctor<U8> +	{ +		U8 get(LLViewerObject* object, S32 te) +		{ +			return object->getMaterial(); +		} +	} func; +	bool material_same = LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue( &func, material_code ); +	std::string LEGACY_FULLBRIGHT_DESC = LLTrans::getString("Fullbright"); +	if (editable && single_volume && material_same) +	{ +		mComboMaterial->setEnabled( TRUE ); +		if (material_code == LL_MCODE_LIGHT) +		{ +			if (mComboMaterial->getItemCount() == mComboMaterialItemCount) +			{ +				mComboMaterial->add(LEGACY_FULLBRIGHT_DESC); +			} +			mComboMaterial->setSimple(LEGACY_FULLBRIGHT_DESC); +		} +		else +		{ +			if (mComboMaterial->getItemCount() != mComboMaterialItemCount) +			{ +				mComboMaterial->remove(LEGACY_FULLBRIGHT_DESC); +			} +			 +			mComboMaterial->setSimple(std::string(LLMaterialTable::basic.getName(material_code))); +		} +	} +	else +	{ +		mComboMaterial->setEnabled( FALSE ); +	} +  	// Physics properties  	mSpinPhysicsGravity->set(objectp->getPhysicsGravity()); @@ -467,7 +537,6 @@ void LLPanelVolume::refresh()  	getChildView("label physicsshapetype")->setVisible(enable_mesh);  	getChildView("Physics Shape Type Combo Ctrl")->setVisible(enable_mesh);  	getChildView("Physics Gravity")->setVisible(enable_mesh); -	getChildView("Physics Material Override")->setVisible(enable_mesh);  	getChildView("Physics Friction")->setVisible(enable_mesh);  	getChildView("Physics Density")->setVisible(enable_mesh);  	getChildView("Physics Restitution")->setVisible(enable_mesh); @@ -522,6 +591,8 @@ void LLPanelVolume::clearCtrls()  	mSpinPhysicsFriction->setEnabled(FALSE);  	mSpinPhysicsDensity->setEnabled(FALSE);  	mSpinPhysicsRestitution->setEnabled(FALSE); + +	mComboMaterial->setEnabled( FALSE );  }  // @@ -674,6 +745,25 @@ void LLPanelVolume::onLightSelectTexture(const LLSD& data)  }  // static +void LLPanelVolume::onCommitMaterial( LLUICtrl* ctrl, void* userdata ) +{ +	//LLPanelObject* self = (LLPanelObject*) userdata; +	LLComboBox* box = (LLComboBox*) ctrl; + +	if (box) +	{ +		// apply the currently selected material to the object +		const std::string& material_name = box->getSimple(); +		std::string LEGACY_FULLBRIGHT_DESC = LLTrans::getString("Fullbright"); +		if (material_name != LEGACY_FULLBRIGHT_DESC) +		{ +			U8 material_code = LLMaterialTable::basic.getMCode(material_name); +			LLSelectMgr::getInstance()->selectionSetMaterial(material_code); +		} +	} +} + +// static  void LLPanelVolume::onCommitLight( LLUICtrl* ctrl, void* userdata )  {  	LLPanelVolume* self = (LLPanelVolume*) userdata; diff --git a/indra/newview/llpanelvolume.h b/indra/newview/llpanelvolume.h index 776a2c1f4a..0ef47db0d9 100644 --- a/indra/newview/llpanelvolume.h +++ b/indra/newview/llpanelvolume.h @@ -63,8 +63,8 @@ public:  	static void 	onCommitLight(			LLUICtrl* ctrl, void* userdata);  	static void 	onCommitIsFlexible(		LLUICtrl* ctrl, void* userdata);  	static void 	onCommitFlexible(		LLUICtrl* ctrl, void* userdata); -  	static void     onCommitPhysicsParam(       LLUICtrl* ctrl, void* userdata); +	static void 	onCommitMaterial(		LLUICtrl* ctrl, void* userdata);  	void		onLightCancelColor(const LLSD& data);  	void		onLightSelectColor(const LLSD& data); @@ -104,6 +104,10 @@ protected:  	LLSpinCtrl*		mSpinForce[3];  */ +	S32			mComboMaterialItemCount; +	LLComboBox*		mComboMaterial; +	 +  	LLColor4		mLightSavedColor;  	LLUUID			mLightSavedTexture;  	LLPointer<LLViewerObject> mObject; diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index 9b264b81c7..8fa4065fa6 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -1997,7 +1997,7 @@ void LLSelectMgr::selectionSetPhysicsType(U8 type)  			if (object->permModify())  			{  				object->setPhysicsShapeType(mType); -				object->updateFlags(); +				object->updateFlags(TRUE);  			}  			return true;  		} @@ -2016,7 +2016,7 @@ void LLSelectMgr::selectionSetFriction(F32 friction)  			if (object->permModify())  			{  				object->setPhysicsFriction(mFriction); -				object->updateFlags(); +				object->updateFlags(TRUE);  			}  			return true;  		} @@ -2035,7 +2035,7 @@ void LLSelectMgr::selectionSetGravity(F32 gravity )  			if (object->permModify())  			{  				object->setPhysicsGravity(mGravity); -				object->updateFlags(); +				object->updateFlags(TRUE);  			}  			return true;  		} @@ -2054,7 +2054,7 @@ void LLSelectMgr::selectionSetDensity(F32 density )  			if (object->permModify())  			{  				object->setPhysicsDensity(mDensity); -				object->updateFlags(); +				object->updateFlags(TRUE);  			}  			return true;  		} @@ -2073,7 +2073,7 @@ void LLSelectMgr::selectionSetRestitution(F32 restitution)  			if (object->permModify())  			{  				object->setPhysicsRestitution(mRestitution); -				object->updateFlags(); +				object->updateFlags(TRUE);  			}  			return true;  		} diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 6d493bfcd5..f5fee662e6 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -5282,7 +5282,7 @@ bool LLViewerObject::specialHoverCursor() const  			|| (mClickAction != 0);  } -void LLViewerObject::updateFlags() +void LLViewerObject::updateFlags(BOOL physics_changed)  {  	LLViewerRegion* regionp = getRegion();  	if(!regionp) return; @@ -5295,12 +5295,15 @@ void LLViewerObject::updateFlags()  	gMessageSystem->addBOOL("IsTemporary", flagTemporaryOnRez() );  	gMessageSystem->addBOOL("IsPhantom", flagPhantom() );  	gMessageSystem->addBOOL("CastsShadows", flagCastShadows() ); -	gMessageSystem->nextBlock("ExtraPhysics"); -	gMessageSystem->addU8("PhysicsShapeType", getPhysicsShapeType() ); -	gMessageSystem->addF32("Density", getPhysicsDensity() ); -	gMessageSystem->addF32("Friction", getPhysicsFriction() ); -	gMessageSystem->addF32("Restitution", getPhysicsRestitution() ); -	gMessageSystem->addF32("GravityMultiplier", getPhysicsGravity() ); +	if (physics_changed) +	{ +		gMessageSystem->nextBlock("ExtraPhysics"); +		gMessageSystem->addU8("PhysicsShapeType", getPhysicsShapeType() ); +		gMessageSystem->addF32("Density", getPhysicsDensity() ); +		gMessageSystem->addF32("Friction", getPhysicsFriction() ); +		gMessageSystem->addF32("Restitution", getPhysicsRestitution() ); +		gMessageSystem->addF32("GravityMultiplier", getPhysicsGravity() ); +	}  	gMessageSystem->sendReliable( regionp->getHost() );  } diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h index e417343bec..21198f7dd1 100644 --- a/indra/newview/llviewerobject.h +++ b/indra/newview/llviewerobject.h @@ -488,7 +488,7 @@ public:  	void			setRegion(LLViewerRegion *regionp);  	virtual void	updateRegion(LLViewerRegion *regionp); -	void updateFlags(); +	void updateFlags(BOOL physics_changed = FALSE);  	BOOL setFlags(U32 flag, BOOL state);  	void setPhysicsShapeType(U8 type);  	void setPhysicsGravity(F32 gravity); 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 d08c3e7078..85535c2078 100644 --- a/indra/newview/skins/default/xui/en/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_model_preview.xml @@ -23,7 +23,7 @@    <string name="simplifying">Simplifying...</string> -  <text left="15" bottom="25" follows="top|left" height="15" name="name_label"> +  <text left="15" bottom="25" follows="top|left" height="15" max_length_bytes="64" name="name_label">      Name:    </text>    <line_editor bottom_delta="20" follows="top|left|right" height="19"  @@ -219,7 +219,7 @@        <text left="10" top_pad="35" follows="top|left" width="240" height="15">          Generate Normals        </text> -      <text left="35" top_pad="5" follows="top|left" width="100" height="15"> +      <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"/>   diff --git a/indra/newview/skins/default/xui/en/floater_model_wizard.xml b/indra/newview/skins/default/xui/en/floater_model_wizard.xml index 92d57b20be..47b2e5fd79 100644 --- a/indra/newview/skins/default/xui/en/floater_model_wizard.xml +++ b/indra/newview/skins/default/xui/en/floater_model_wizard.xml @@ -572,9 +572,9 @@ Advanced users familiar with 3d content creation tools may prefer to use the [se  		 bg_opaque_color="DkGray2"  		 background_visible="true"  		 background_opaque="true"> -      <text top="25" left="30" text_color="White" font="SansSerifSmallBold" width="300" height="4">Performance</text> +      <text top="15" left="20" text_color="White" font="SansSerifSmallBold" width="110" height="30" wrap="true" halign="center">Higher Performance</text>        <text top="45" left="10" halign="center" width="130" word_wrap="true"   font="SansSerifSmall" height="80">Faster rendering but less detailed; lowers Resource (prim) cost.</text> -      <text top="25" left="390" text_color="White" font="SansSerifSmallBold" width="300" height="4">Accuracy</text> +      <text top="15" left="372" text_color="White" font="SansSerifSmallBold" width="90" height="30" wrap="true" halign="center">Higher Accuracy</text>        <text top="45" left="360" halign="center" width="130" word_wrap="true"   font="SansSerifSmall" height="80">More detailed model but slower; increases Resource (prim) cost.</text>        <slider diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml index 05d47506db..40bf7bfed7 100644 --- a/indra/newview/skins/default/xui/en/floater_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_tools.xml @@ -1608,41 +1608,6 @@ even though the user gets a free copy.                   name="Sculpted"                   value="Sculpted" />              </combo_box> -            <combo_box -             height="19" -             layout="topleft" -             name="material" -             top_pad="5" -             width="150"> -                <combo_box.item -                 label="Stone" -                 name="Stone" -                 value="Stone" /> -                <combo_box.item -                 label="Metal" -                 name="Metal" -                 value="Metal" /> -                <combo_box.item -                 label="Glass" -                 name="Glass" -                 value="Glass" /> -                <combo_box.item -                 label="Wood" -                 name="Wood" -                 value="Wood" /> -                <combo_box.item -                 label="Flesh" -                 name="Flesh" -                 value="Flesh" /> -                <combo_box.item -                 label="Plastic" -                 name="Plastic" -                 value="Plastic" /> -                <combo_box.item -                 label="Rubber" -                 name="Rubber" -                 value="Rubber" /> -            </combo_box>              <text               type="string"               length="1" @@ -2426,6 +2391,41 @@ even though the user gets a free copy.  			   name="Physics Shape Type Combo Ctrl"  			   tool_tip="Choose the physics shape type"  			   width="108"/> +            <combo_box +             height="19" +             layout="topleft" +             name="material" +             top_pad="5" +             width="150"> +                <combo_box.item +                 label="Stone" +                 name="Stone" +                 value="Stone" /> +                <combo_box.item +                 label="Metal" +                 name="Metal" +                 value="Metal" /> +                <combo_box.item +                 label="Glass" +                 name="Glass" +                 value="Glass" /> +                <combo_box.item +                 label="Wood" +                 name="Wood" +                 value="Wood" /> +                <combo_box.item +                 label="Flesh" +                 name="Flesh" +                 value="Flesh" /> +                <combo_box.item +                 label="Plastic" +                 name="Plastic" +                 value="Plastic" /> +                <combo_box.item +                 label="Rubber" +                 name="Rubber" +                 value="Rubber" /> +            </combo_box>              <spinner               follows="left|top" @@ -2441,16 +2441,6 @@ even though the user gets a free copy.               top_pad="10"               width="132" /> -            <check_box -             height="19" -             label="Override material" -             layout="topleft" -             left_delta="0" -             name="Physics Material Override" -             tool_tip="Override Material" -             top_pad="10" -             width="132" /> -              <spinner               follows="left|top"               height="19" diff --git a/indra/newview/skins/default/xui/en/menu_inventory_add.xml b/indra/newview/skins/default/xui/en/menu_inventory_add.xml index 484af63097..b36b82ebd8 100644 --- a/indra/newview/skins/default/xui/en/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/en/menu_inventory_add.xml @@ -42,7 +42,7 @@                      <menu_item_call.on_enable                       function="File.EnableUpload" />                  </menu_item_call> -		            <menu_item_call +		<menu_item_call                   label="Model..."                   layout="topleft"                   name="Upload Model"> @@ -54,6 +54,18 @@                  <menu_item_call.on_visible                  function="File.VisibleUploadModel"/>                  </menu_item_call> +              <menu_item_call +                label="Model Wizard..." +                layout="topleft" +                name="Upload Model Wizard"> +                <menu_item_call.on_click +                 function="Floater.Show" +                 parameter="upload_model_wizard" /> +                <menu_item_call.on_enable +                 function="File.EnableUploadModel" /> +                <menu_item_call.on_visible +                function="File.VisibleUploadModel"/> +	      </menu_item_call>                  <menu_item_call                   label="Bulk (L$[COST] per file)..."                   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/panel_region_general.xml b/indra/newview/skins/default/xui/en/panel_region_general.xml index e0d9f3f714..3f9195d092 100644 --- a/indra/newview/skins/default/xui/en/panel_region_general.xml +++ b/indra/newview/skins/default/xui/en/panel_region_general.xml @@ -134,6 +134,7 @@       top="190"       width="80" />  	<check_box +     visible="FALSE"       height="20"       label="Allow Mesh Objects"       layout="topleft" | 
