diff options
Diffstat (limited to 'indra')
-rw-r--r-- | indra/newview/llfloatermodelpreview.cpp | 2 | ||||
-rw-r--r-- | indra/newview/llmodelpreview.cpp | 12 | ||||
-rw-r--r-- | indra/newview/llmodelpreview.h | 1 |
3 files changed, 15 insertions, 0 deletions
diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index ae9350867f..1aafd52ee7 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 04a818b2a4..54350fc63d 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 9b8200ab8a..3664a27a72 100644 --- a/indra/newview/llmodelpreview.h +++ b/indra/newview/llmodelpreview.h @@ -301,6 +301,7 @@ protected: U32 mLegacyRigFlags; bool mLastJointUpdate; + bool mFirstSkinUpdate; JointNameSet mJointsFromNode; JointTransformMap mJointTransformMap; |