Link: make OverrideMaterial use the per-face override. (#23544)
* Link: make OverrideMaterial use the per-face override. * Fix small issue on per face transparency * update names * Update ViewProviderExt.cpp
This commit is contained in:
@@ -686,17 +686,19 @@ std::map<std::string,Base::Color> ViewProviderPartExt::getElementColors(const ch
|
||||
auto color = ShapeAppearance.getDiffuseColor();
|
||||
color.setTransparency(Base::fromPercent(Transparency.getValue()));
|
||||
bool singleColor = true;
|
||||
for(int i=0;i<size;++i) {
|
||||
if (ShapeAppearance.getDiffuseColor(i) != color) {
|
||||
ret[std::string(element, 4) + std::to_string(i + 1)] =
|
||||
ShapeAppearance.getDiffuseColor(i);
|
||||
for (int i = 0; i < size; ++i) {
|
||||
Base::Color faceColor = ShapeAppearance.getDiffuseColor(i);
|
||||
faceColor.setTransparency(ShapeAppearance.getTransparency(i));
|
||||
if (faceColor != color) {
|
||||
ret[std::string(element, 4) + std::to_string(i + 1)] = faceColor;
|
||||
}
|
||||
singleColor = singleColor
|
||||
&& ShapeAppearance.getDiffuseColor(0) == ShapeAppearance.getDiffuseColor(i);
|
||||
Base::Color firstFaceColor = ShapeAppearance.getDiffuseColor(0);
|
||||
firstFaceColor.setTransparency(ShapeAppearance.getTransparency(0));
|
||||
singleColor = singleColor && (faceColor == firstFaceColor);
|
||||
}
|
||||
if(size && singleColor) {
|
||||
if (size > 0 && singleColor) {
|
||||
color = ShapeAppearance.getDiffuseColor(0);
|
||||
color.setTransparency(Base::fromPercent(0.0F));
|
||||
color.setTransparency(ShapeAppearance.getTransparency(0));
|
||||
ret.clear();
|
||||
}
|
||||
ret["Face"] = color;
|
||||
@@ -1403,3 +1405,6 @@ void ViewProviderPartExt::handleChangedPropertyName(Base::XMLReader& reader,
|
||||
Gui::ViewProviderGeometryObject::handleChangedPropertyName(reader, TypeName, PropName);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user