From 43e0834fb44261b7f056a1cd463feedb19ac99e7 Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Thu, 7 Jul 2016 12:46:25 -0300 Subject: [PATCH] Part: Enabled per-face transparency --- src/Mod/Part/Gui/ViewProviderExt.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Mod/Part/Gui/ViewProviderExt.cpp b/src/Mod/Part/Gui/ViewProviderExt.cpp index a07aa71066..7e4155e704 100644 --- a/src/Mod/Part/Gui/ViewProviderExt.cpp +++ b/src/Mod/Part/Gui/ViewProviderExt.cpp @@ -644,14 +644,20 @@ void ViewProviderPartExt::setHighlightedFaces(const std::vector& col if (size > 1 && size == this->faceset->partIndex.getNum()) { pcShapeBind->value = SoMaterialBinding::PER_PART; pcShapeMaterial->diffuseColor.setNum(size); + pcShapeMaterial->transparency.setNum(size); SbColor* ca = pcShapeMaterial->diffuseColor.startEditing(); - for (int i = 0; i < size; i++) + float *t = pcShapeMaterial->transparency.startEditing(); + for (int i = 0; i < size; i++) { ca[i].setValue(colors[i].r, colors[i].g, colors[i].b); + t[i] = colors[i].a; + } pcShapeMaterial->diffuseColor.finishEditing(); + pcShapeMaterial->transparency.finishEditing(); } else if (colors.size() == 1) { pcShapeBind->value = SoMaterialBinding::OVERALL; pcShapeMaterial->diffuseColor.setValue(colors[0].r, colors[0].g, colors[0].b); + pcShapeMaterial->transparency = colors[0].a; } } @@ -695,6 +701,7 @@ void ViewProviderPartExt::setHighlightedFaces(const std::vector& void ViewProviderPartExt::unsetHighlightedFaces() { ShapeMaterial.touch(); + Transparency.touch(); } void ViewProviderPartExt::setHighlightedEdges(const std::vector& colors)