Skip to content

Commit

Permalink
#5565: Fix sort value not being set properly on the material
Browse files Browse the repository at this point in the history
  • Loading branch information
codereader committed Mar 25, 2021
1 parent e0fb7ce commit 2b5faac
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 2 deletions.
13 changes: 13 additions & 0 deletions libs/materials/ParseLib.h
Expand Up @@ -142,6 +142,19 @@ inline std::string getStringForSortRequestValue(float value)
return std::string();
}

inline float getSortRequestValueForString(const std::string& value)
{
for (const auto& pair : PredefinedSortValues)
{
if (value == pair.first)
{
return static_cast<float>(pair.second);
}
}

return string::convert<float>(value, Material::SORT_OPAQUE);
}

constexpr std::pair<const char*, IShaderLayer::MapType> MapTypeNames[]
{
{ "map", IShaderLayer::MapType::Map },
Expand Down
9 changes: 7 additions & 2 deletions radiant/ui/materials/editor/MaterialEditor.cpp
Expand Up @@ -307,7 +307,10 @@ void MaterialEditor::setupMaterialProperties()
}
else
{
material->setSortRequest(Material::SORT_OPAQUE);
auto sortValue = getControl<wxComboBox>("MaterialSortValue")->GetValue().ToStdString();
material->setSortRequest(!sortValue.empty() ?
shaders::getSortRequestValueForString(sortValue) :
static_cast<float>(Material::SORT_OPAQUE));
}
},
[this]() { onMaterialChanged(); }));
Expand Down Expand Up @@ -2056,7 +2059,9 @@ void MaterialEditor::_onSortRequestChanged(wxCommandEvent& ev)
if (!_material || _materialUpdateInProgress) return;

auto sortDropdown = getControl<wxComboBox>("MaterialSortValue");
_material->setSortRequest(string::convert<float>(sortDropdown->GetValue().ToStdString(), Material::SORT_OPAQUE));
auto value = sortDropdown->GetValue().ToStdString();
_material->setSortRequest(shaders::getSortRequestValueForString(value));

onMaterialChanged();
}

Expand Down

0 comments on commit 2b5faac

Please sign in to comment.