diff options
author | Jaime van Kessel <nallath@gmail.com> | 2020-06-23 11:05:05 +0300 |
---|---|---|
committer | Jaime van Kessel <nallath@gmail.com> | 2020-06-23 11:05:05 +0300 |
commit | ba34fb6e35bc6b128a6c705a9adf62b52a7fbf09 (patch) | |
tree | 2bf67c7c474ead613661948c84e6c088d9e3920b /plugins/SolidView | |
parent | f00e3f736317c8d6578866f6cb67fe2f7e973e90 (diff) |
Decrease amount of nested if statements
Wont add anything to speed, but it will make it easier to read
CURA-7106
Diffstat (limited to 'plugins/SolidView')
-rw-r--r-- | plugins/SolidView/SolidView.py | 116 |
1 files changed, 59 insertions, 57 deletions
diff --git a/plugins/SolidView/SolidView.py b/plugins/SolidView/SolidView.py index fd5a2c7dc8..f16f696150 100644 --- a/plugins/SolidView/SolidView.py +++ b/plugins/SolidView/SolidView.py @@ -188,64 +188,66 @@ class SolidView(View): self._enabled_shader.setUniformValue("u_overhangAngle", math.cos(math.radians(0))) for node in DepthFirstIterator(scene.getRoot()): - if not node.render(renderer): - if node.getMeshData() and node.isVisible(): - uniforms = {} - shade_factor = 1.0 - - per_mesh_stack = node.callDecoration("getStack") - - extruder_index = node.callDecoration("getActiveExtruderPosition") - if extruder_index is None: - extruder_index = "0" - extruder_index = int(extruder_index) - - try: - material_color = self._extruders_model.getItem(extruder_index)["color"] - except KeyError: - material_color = self._extruders_model.defaultColors[0] - - if extruder_index != ExtruderManager.getInstance().activeExtruderIndex: - # Shade objects that are printed with the non-active extruder 25% darker - shade_factor = 0.6 - - try: - # Colors are passed as rgb hex strings (eg "#ffffff"), and the shader needs - # an rgba list of floats (eg [1.0, 1.0, 1.0, 1.0]) - uniforms["diffuse_color"] = [ - shade_factor * int(material_color[1:3], 16) / 255, - shade_factor * int(material_color[3:5], 16) / 255, - shade_factor * int(material_color[5:7], 16) / 255, - 1.0 - ] - - # Color the currently selected face-id. (Disable for now.) - #face = Selection.getHoverFace() - uniforms["hover_face"] = -1 #if not face or node != face[0] else face[1] - except ValueError: - pass - - if node.callDecoration("isNonPrintingMesh"): - if per_mesh_stack and (node.callDecoration("isInfillMesh") or node.callDecoration("isCuttingMesh")): - renderer.queueNode(node, shader = self._non_printing_shader, uniforms = uniforms, transparent = True) - else: - renderer.queueNode(node, shader = self._non_printing_shader, transparent = True) - elif getattr(node, "_outside_buildarea", False): - renderer.queueNode(node, shader = self._disabled_shader) - elif per_mesh_stack and node.callDecoration("isSupportMesh"): - # Render support meshes with a vertical stripe that is darker - shade_factor = 0.6 - uniforms["diffuse_color_2"] = [ - uniforms["diffuse_color"][0] * shade_factor, - uniforms["diffuse_color"][1] * shade_factor, - uniforms["diffuse_color"][2] * shade_factor, - 1.0 - ] - renderer.queueNode(node, shader = self._support_mesh_shader, uniforms = uniforms) + if node.render(renderer): + continue + + if node.getMeshData() and node.isVisible(): + uniforms = {} + shade_factor = 1.0 + + per_mesh_stack = node.callDecoration("getStack") + + extruder_index = node.callDecoration("getActiveExtruderPosition") + if extruder_index is None: + extruder_index = "0" + extruder_index = int(extruder_index) + + try: + material_color = self._extruders_model.getItem(extruder_index)["color"] + except KeyError: + material_color = self._extruders_model.defaultColors[0] + + if extruder_index != ExtruderManager.getInstance().activeExtruderIndex: + # Shade objects that are printed with the non-active extruder 25% darker + shade_factor = 0.6 + + try: + # Colors are passed as rgb hex strings (eg "#ffffff"), and the shader needs + # an rgba list of floats (eg [1.0, 1.0, 1.0, 1.0]) + uniforms["diffuse_color"] = [ + shade_factor * int(material_color[1:3], 16) / 255, + shade_factor * int(material_color[3:5], 16) / 255, + shade_factor * int(material_color[5:7], 16) / 255, + 1.0 + ] + + # Color the currently selected face-id. (Disable for now.) + #face = Selection.getHoverFace() + uniforms["hover_face"] = -1 #if not face or node != face[0] else face[1] + except ValueError: + pass + + if node.callDecoration("isNonPrintingMesh"): + if per_mesh_stack and (node.callDecoration("isInfillMesh") or node.callDecoration("isCuttingMesh")): + renderer.queueNode(node, shader = self._non_printing_shader, uniforms = uniforms, transparent = True) else: - renderer.queueNode(node, shader = self._enabled_shader, uniforms = uniforms) - if node.callDecoration("isGroup") and Selection.isSelected(node): - renderer.queueNode(scene.getRoot(), mesh = node.getBoundingBoxMesh(), mode = RenderBatch.RenderMode.LineLoop) + renderer.queueNode(node, shader = self._non_printing_shader, transparent = True) + elif getattr(node, "_outside_buildarea", False): + renderer.queueNode(node, shader = self._disabled_shader) + elif per_mesh_stack and node.callDecoration("isSupportMesh"): + # Render support meshes with a vertical stripe that is darker + shade_factor = 0.6 + uniforms["diffuse_color_2"] = [ + uniforms["diffuse_color"][0] * shade_factor, + uniforms["diffuse_color"][1] * shade_factor, + uniforms["diffuse_color"][2] * shade_factor, + 1.0 + ] + renderer.queueNode(node, shader = self._support_mesh_shader, uniforms = uniforms) + else: + renderer.queueNode(node, shader = self._enabled_shader, uniforms = uniforms) + if node.callDecoration("isGroup") and Selection.isSelected(node): + renderer.queueNode(scene.getRoot(), mesh = node.getBoundingBoxMesh(), mode = RenderBatch.RenderMode.LineLoop) def endRendering(self): # check whether the xray overlay is showing badness |