diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index ae9350867fe89085d00183825ad4313d3c9fbf1f..1aafd52ee7f83105c16bffbc7698957388566032 100644 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -348,6 +348,8 @@ void LLFloaterModelPreview::onUploadOptionChecked(LLUICtrl* ctrl) auto name = ctrl->getName(); // update the option and notifications // (this is a bit convoluted, because of the current structure of mModelPreview) + // FIX ME! mViewOption is malfunctioning here! mViewOption doesn't have values like "upload_skin"! + // This needs to translate values like "upload_skin" into "show_skin_weights" mModelPreview->mViewOption[name] = !mModelPreview->mViewOption[name]; mModelPreview->refresh(); // a 'dirty' flag for render mModelPreview->resetPreviewTarget(); diff --git a/indra/newview/llmodelpreview.cpp b/indra/newview/llmodelpreview.cpp index 04a818b2a424c2f4f72bf867a2c7323219a42b94..54350fc63d87fa2489d25c9b87553c9a35792336 100644 --- a/indra/newview/llmodelpreview.cpp +++ b/indra/newview/llmodelpreview.cpp @@ -180,6 +180,7 @@ LLModelPreview::LLModelPreview(S32 width, S32 height, LLFloater* fmp) , mResetJoints(false) , mModelNoErrors(true) , mLastJointUpdate(false) + , mFirstSkinUpdate(true) , mHasDegenerate(false) , mImporterDebug(LLCachedControl<bool>(gSavedSettings, "ImporterDebug", false)) { @@ -2799,11 +2800,22 @@ BOOL LLModelPreview::render() { if (flags == LEGACY_RIG_OK) { + if (mFirstSkinUpdate) + { + // auto enable weight upload if weights are present + // (note: all these UI updates need to be somewhere that is not render) + mViewOption["show_skin_weight"] = true; + skin_weight = true; + fmp->childSetValue("upload_skin", true); + mFirstSkinUpdate = false; + } + fmp->enableViewOption("show_skin_weight"); fmp->setViewOptionEnabled("show_joint_overrides", skin_weight); fmp->setViewOptionEnabled("show_joint_positions", skin_weight); mFMP->childEnable("upload_skin"); mFMP->childSetValue("show_skin_weight", skin_weight); + } else if ((flags & LEGACY_RIG_FLAG_TOO_MANY_JOINTS) > 0) { diff --git a/indra/newview/llmodelpreview.h b/indra/newview/llmodelpreview.h index 9b8200ab8a46bc9e131d7917b8476f5d1fd00dc2..3664a27a72487d8c5faae31fd8ac7854fe9dd559 100644 --- a/indra/newview/llmodelpreview.h +++ b/indra/newview/llmodelpreview.h @@ -301,6 +301,7 @@ class LLModelPreview : public LLViewerDynamicTexture, public LLMutex U32 mLegacyRigFlags; bool mLastJointUpdate; + bool mFirstSkinUpdate; JointNameSet mJointsFromNode; JointTransformMap mJointTransformMap;