diff options
| -rwxr-xr-x | indra/newview/llfloatermodelpreview.cpp | 37 | ||||
| -rwxr-xr-x | indra/newview/skins/default/xui/en/floater_model_preview.xml | 36 | 
2 files changed, 60 insertions, 13 deletions
| diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 2e3e3aa239..aa2c37055f 100755 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -2736,26 +2736,41 @@ void LLModelPreview::updateStatusMessages()  	} -	//make sure no hulls have more than 256 points in them +	//warn if hulls have more than 256 points in them +	BOOL physExceededVertexLimit = FALSE;  	for (U32 i = 0; mModelNoErrors && i < mModel[LLModel::LOD_PHYSICS].size(); ++i)  	{  		LLModel* mdl = mModel[LLModel::LOD_PHYSICS][i];  		if (mdl)  		{ -			for (U32 j = 0; mModelNoErrors && j < mdl->mPhysics.mHull.size(); ++j) +			for (U32 j = 0; j < mdl->mPhysics.mHull.size(); ++j)  			{  				if (mdl->mPhysics.mHull[j].size() > 256)  				{ -					mModelNoErrors = false; +					physExceededVertexLimit = TRUE; +					LL_INFOS() << "Physical model " << mdl->mLabel << " exceeds vertex per hull limitations." << LL_ENDL; +					break;  				}  			} -		}		 +		} +	} +	mFMP->childSetVisible("physics_status_message_text", physExceededVertexLimit); +	LLIconCtrl* physStatusIcon = mFMP->getChild<LLIconCtrl>("physics_status_message_icon"); +	physStatusIcon->setVisible(physExceededVertexLimit); +	if (physExceededVertexLimit) +	{ +		mFMP->childSetValue("physics_status_message_text", mFMP->getString("phys_status_vertex_limit_exceeded")); +		LLUIImagePtr img = LLUI::getUIImage("ModelImport_Status_Warning"); +		physStatusIcon->setImage(img);  	} -	bool errorStateFromLoader = getLoadState() >= LLModelLoader::ERROR_PARSING ? true : false; +	if (getLoadState() >= LLModelLoader::ERROR_PARSING) +	{ +		mModelNoErrors = false; +		LL_INFOS() << "Loader returned errors, model can't be uploaded" << LL_ENDL; +	} -	bool skinAndRigOk = true;  	bool uploadingSkin		     = mFMP->childGetValue("upload_skin").asBoolean();  	bool uploadingJointPositions = mFMP->childGetValue("upload_joints").asBoolean(); @@ -2763,19 +2778,23 @@ void LLModelPreview::updateStatusMessages()  	{  		if ( uploadingJointPositions && !isRigValidForJointPositionUpload() )  		{ -			skinAndRigOk = false; -		}	 +			mModelNoErrors = false; +			LL_INFOS() << "Invalid rig, there might be issues with uploading Joint positions" << LL_ENDL; +		}  	}  	if(mModelNoErrors && mModelLoader)  	{  		if(!mModelLoader->areTexturesReady() && mFMP->childGetValue("upload_textures").asBoolean())  		{ +			// Some textures are still loading, prevent upload until they are done  			mModelNoErrors = false;  		}  	} -	if (!mModelNoErrors || errorStateFromLoader || !skinAndRigOk || has_degenerate) +	// Todo: investigate use of has_degenerate and include into mModelNoErrors upload blocking mechanics +	// current use of has_degenerate won't block upload permanently - later checks will restore the button +	if (!mModelNoErrors || has_degenerate)  	{  		mFMP->childDisable("ok_btn");  	} 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 eb9244b537..7183b2f1f9 100755 --- a/indra/newview/skins/default/xui/en/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_model_preview.xml @@ -31,6 +31,7 @@    <string name="mesh_status_too_many_vertices">Level of detail has too many vertices.</string>    <string name="mesh_status_missing_lod">Missing required level of detail.</string>    <string name="mesh_status_invalid_material_list">LOD materials are not a subset of reference model.</string> +  <string name="phys_status_vertex_limit_exceeded">Some physical hulls exceed vertex limitations.</string>    <string name="layer_all">All</string> <!-- Text to display in physics layer combo box for "all layers" -->    <string name="decomposing">Analyzing...</string>    <string name="simplifying">Simplifying...</string> @@ -1027,19 +1028,19 @@                    bg_alpha_color="0 0 0 0"                    bg_opaque_color="0 0 0 0.3"                    follows="left|top" -                  height="16" +                  height="19"                    layout="topleft"                    left="18"                    name="physics info" -                  top_pad="15" -                  width="589"> +                  top_pad="12" +                  width="319">                      <text                        follows="top|left"                        height="15"                        layout="topleft"                        left="0"                        text_color="White" -                      top_pad="0" +                      top_pad="3"                        name="results_text"                        width="50">                        Results: @@ -1077,6 +1078,33 @@                        Hulls: [HULLS]                      </text>                  </panel> +                <panel +                 bg_alpha_color="0 0 0 0" +                 bg_opaque_color="0 0 0 0.3" +                 follows="left|top" +                 height="19" +                 layout="topleft" +                 left_pad="5" +                 top_delta="0" +                 name="physics message" +                 width="270"> +                     <icon +                      follows="left|top" +                      height="16" +                      left="0" +                      layout="topleft" +                      name="physics_status_message_icon" +                      top_pad="0" +                      width="16" /> +                     <text +                      follows="left|top" +                      height="15" +                      layout="topleft" +                      left_pad="2" +                      name="physics_status_message_text" +                      width="252" +                      top_delta="3"/> +                </panel>          </panel>        <!-- MODIFIERS PANEL -->       <panel | 
