diff options
author | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2024-07-02 11:44:14 +0300 |
---|---|---|
committer | Andrey Kleshchev <117672381+akleshchev@users.noreply.github.com> | 2024-07-02 19:34:37 +0300 |
commit | 886be2faf19343843d8b2bf7a24c91bdeb1a9294 (patch) | |
tree | 69e301ea4c1665eb994e8a34fad8c0afabebe5d1 | |
parent | cb2795748eec373b11154c2825a3ecf2633938be (diff) |
viewer#1857 Reset texture transforms when terrain PBR is applied
ctrls aren't dynamically alocated so getChild is preferable, but since other elements use findchild and validy checks used findChild as well
-rw-r--r-- | indra/newview/llfloaterregioninfo.cpp | 27 | ||||
-rw-r--r-- | indra/newview/llfloaterregioninfo.h | 2 |
2 files changed, 28 insertions, 1 deletions
diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index c019bd047d..d6ffab5825 100644 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -1561,7 +1561,7 @@ bool LLPanelRegionTerrainInfo::postBuild() { mTextureDetailCtrl[i]->setBakeTextureEnabled(false); } - initAndSetCtrl(mMaterialDetailCtrl[i], llformat("material_detail_%d", i)); + initMaterialCtrl(mMaterialDetailCtrl[i], llformat("material_detail_%d", i), i); initAndSetCtrl(mMaterialScaleUCtrl[i], llformat("terrain%dScaleU", i)); initAndSetCtrl(mMaterialScaleVCtrl[i], llformat("terrain%dScaleV", i)); @@ -1958,6 +1958,31 @@ bool LLPanelRegionTerrainInfo::sendUpdate() return true; } +void LLPanelRegionTerrainInfo::initMaterialCtrl(LLTextureCtrl*& ctrl, const std::string& name, S32 index) +{ + ctrl = findChild<LLTextureCtrl>(name, true); + if (!ctrl) return; + + // consume cancel events, otherwise they will trigger commit callbacks + ctrl->setOnCancelCallback([](LLUICtrl* ctrl, const LLSD& param) {}); + ctrl->setCommitCallback( + [this, index](LLUICtrl* ctrl, const LLSD& param) + { + if (!mMaterialScaleUCtrl[index] + || !mMaterialScaleVCtrl[index] + || !mMaterialRotationCtrl[index] + || !mMaterialOffsetUCtrl[index] + || !mMaterialOffsetVCtrl[index]) return; + + mMaterialScaleUCtrl[index]->setValue(1.f); + mMaterialScaleVCtrl[index]->setValue(1.f); + mMaterialRotationCtrl[index]->setValue(0.f); + mMaterialOffsetUCtrl[index]->setValue(0.f); + mMaterialOffsetVCtrl[index]->setValue(0.f); + onChangeAnything(); + }); +} + bool LLPanelRegionTerrainInfo::callbackTextureHeights(const LLSD& notification, const LLSD& response) { S32 option = LLNotificationsUtil::getSelectedOption(notification, response); diff --git a/indra/newview/llfloaterregioninfo.h b/indra/newview/llfloaterregioninfo.h index 5623bc20cb..60564435d7 100644 --- a/indra/newview/llfloaterregioninfo.h +++ b/indra/newview/llfloaterregioninfo.h @@ -273,6 +273,8 @@ public: protected: bool sendUpdate() override; + void initMaterialCtrl(LLTextureCtrl*& ctrl, const std::string& name, S32 index); + private: bool mConfirmedTextureHeights; bool mAskedTextureHeights; |