SL-18346 Fixed tools floater not editing pbr texture offsets correctly

meow-7.2.2
Andrey Kleshchev 2022-10-12 22:50:59 +03:00
parent fad5ece612
commit 17f421fb2e
1 changed files with 61 additions and 17 deletions

View File

@ -119,10 +119,23 @@ std::string USE_TEXTURE;
LLRender::eTexIndex LLPanelFace::getTextureChannelToEdit()
{
LLRadioGroup* radio_mat_type = getChild<LLRadioGroup>("radio_material_type");
LLRender::eTexIndex channel_to_edit = (mComboMatMedia && mComboMatMedia->getCurrentIndex() == MATMEDIA_MATERIAL) ?
(radio_mat_type ? (LLRender::eTexIndex)radio_mat_type->getSelectedIndex() : LLRender::DIFFUSE_MAP) : LLRender::DIFFUSE_MAP;
LLRender::eTexIndex channel_to_edit = LLRender::DIFFUSE_MAP;
if (mComboMatMedia)
{
U32 matmedia_selection = mComboMatMedia->getCurrentIndex();
if (matmedia_selection = MATMEDIA_MATERIAL)
{
LLRadioGroup* radio_mat_type = getChild<LLRadioGroup>("radio_material_type");
channel_to_edit = (LLRender::eTexIndex)radio_mat_type->getSelectedIndex();
}
if (matmedia_selection = MATMEDIA_PBR)
{
LLRadioGroup* radio_mat_type = getChild<LLRadioGroup>("radio_pbr_type");
channel_to_edit = (LLRender::eTexIndex)radio_mat_type->getSelectedIndex();
}
}
channel_to_edit = (channel_to_edit == LLRender::NORMAL_MAP) ? (getCurrentNormalMap().isNull() ? LLRender::DIFFUSE_MAP : channel_to_edit) : channel_to_edit;
channel_to_edit = (channel_to_edit == LLRender::SPECULAR_MAP) ? (getCurrentSpecularMap().isNull() ? LLRender::DIFFUSE_MAP : channel_to_edit) : channel_to_edit;
@ -517,20 +530,42 @@ struct LLPanelFaceSetTEFunctor : public LLSelectedTEFunctor
{
BOOL valid;
F32 value;
LLRadioGroup * radio_mat_type = mPanel->getChild<LLRadioGroup>("radio_material_type");
std::string prefix;
switch (radio_mat_type->getSelectedIndex())
U32 materials_media = mPanel->getChild<LLComboBox>("combobox matmedia")->getCurrentIndex();
if (MATMEDIA_PBR == materials_media)
{
case MATTYPE_DIFFUSE:
prefix = "Tex";
break;
case MATTYPE_NORMAL:
prefix = "bumpy";
break;
case MATTYPE_SPECULAR:
prefix = "shiny";
break;
LLRadioGroup * radio_pbr_type = mPanel->getChild<LLRadioGroup>("radio_pbr_type");
switch (radio_pbr_type->getSelectedIndex())
{
case PBRTYPE_BASE_COLOR:
prefix = "Tex";
break;
case PBRTYPE_NORMAL:
prefix = "bumpy";
break;
case PBRTYPE_METALLIC:
prefix = "shiny";
break;
}
}
else
{
// Effectively the same as MATMEDIA_PBR sans using different radio,
// separate for the sake of clarity
LLRadioGroup * radio_mat_type = mPanel->getChild<LLRadioGroup>("radio_material_type");
switch (radio_mat_type->getSelectedIndex())
{
case MATTYPE_DIFFUSE:
prefix = "Tex";
break;
case MATTYPE_NORMAL:
prefix = "bumpy";
break;
case MATTYPE_SPECULAR:
prefix = "shiny";
break;
}
}
LLSpinCtrl * ctrlTexScaleS = mPanel->getChild<LLSpinCtrl>(prefix + "ScaleU");
@ -3468,11 +3503,20 @@ void LLPanelFace::onCommitRepeatsPerMeter(LLUICtrl* ctrl, void* userdata)
LLPanelFace* self = (LLPanelFace*) userdata;
LLUICtrl* repeats_ctrl = self->getChild<LLUICtrl>("rptctrl");
LLRadioGroup* radio_mat_type = self->getChild<LLRadioGroup>("radio_material_type");
U32 materials_media = self->mComboMatMedia->getCurrentIndex();
U32 material_type = 0;
if (materials_media == MATMEDIA_PBR)
{
LLRadioGroup* radio_mat_type = self->getChild<LLRadioGroup>("radio_pbr_type");
material_type = radio_mat_type->getSelectedIndex();
}
if (materials_media == MATMEDIA_MATERIAL)
{
LLRadioGroup* radio_mat_type = self->getChild<LLRadioGroup>("radio_material_type");
material_type = radio_mat_type->getSelectedIndex();
}
U32 material_type = (materials_media == MATMEDIA_MATERIAL) ? radio_mat_type->getSelectedIndex() : 0;
F32 repeats_per_meter = repeats_ctrl->getValue().asReal();
F32 obj_scale_s = 1.0f;