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;  | 
