Decrease amount of nested if statements

Wont add anything to speed, but it will make it easier to read

CURA-7106
This commit is contained in:
Jaime van Kessel 2020-06-23 10:05:05 +02:00
parent f00e3f7363
commit ba34fb6e35
No known key found for this signature in database
GPG key ID: 3710727397403C91

View file

@ -188,64 +188,66 @@ class SolidView(View):
self._enabled_shader.setUniformValue("u_overhangAngle", math.cos(math.radians(0))) self._enabled_shader.setUniformValue("u_overhangAngle", math.cos(math.radians(0)))
for node in DepthFirstIterator(scene.getRoot()): for node in DepthFirstIterator(scene.getRoot()):
if not node.render(renderer): if node.render(renderer):
if node.getMeshData() and node.isVisible(): continue
uniforms = {}
shade_factor = 1.0
per_mesh_stack = node.callDecoration("getStack") if node.getMeshData() and node.isVisible():
uniforms = {}
shade_factor = 1.0
extruder_index = node.callDecoration("getActiveExtruderPosition") per_mesh_stack = node.callDecoration("getStack")
if extruder_index is None:
extruder_index = "0"
extruder_index = int(extruder_index)
try: extruder_index = node.callDecoration("getActiveExtruderPosition")
material_color = self._extruders_model.getItem(extruder_index)["color"] if extruder_index is None:
except KeyError: extruder_index = "0"
material_color = self._extruders_model.defaultColors[0] extruder_index = int(extruder_index)
if extruder_index != ExtruderManager.getInstance().activeExtruderIndex: try:
# Shade objects that are printed with the non-active extruder 25% darker material_color = self._extruders_model.getItem(extruder_index)["color"]
shade_factor = 0.6 except KeyError:
material_color = self._extruders_model.defaultColors[0]
try: if extruder_index != ExtruderManager.getInstance().activeExtruderIndex:
# Colors are passed as rgb hex strings (eg "#ffffff"), and the shader needs # Shade objects that are printed with the non-active extruder 25% darker
# an rgba list of floats (eg [1.0, 1.0, 1.0, 1.0]) shade_factor = 0.6
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.) try:
#face = Selection.getHoverFace() # Colors are passed as rgb hex strings (eg "#ffffff"), and the shader needs
uniforms["hover_face"] = -1 #if not face or node != face[0] else face[1] # an rgba list of floats (eg [1.0, 1.0, 1.0, 1.0])
except ValueError: uniforms["diffuse_color"] = [
pass 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
]
if node.callDecoration("isNonPrintingMesh"): # Color the currently selected face-id. (Disable for now.)
if per_mesh_stack and (node.callDecoration("isInfillMesh") or node.callDecoration("isCuttingMesh")): #face = Selection.getHoverFace()
renderer.queueNode(node, shader = self._non_printing_shader, uniforms = uniforms, transparent = True) uniforms["hover_face"] = -1 #if not face or node != face[0] else face[1]
else: except ValueError:
renderer.queueNode(node, shader = self._non_printing_shader, transparent = True) pass
elif getattr(node, "_outside_buildarea", False):
renderer.queueNode(node, shader = self._disabled_shader) if node.callDecoration("isNonPrintingMesh"):
elif per_mesh_stack and node.callDecoration("isSupportMesh"): if per_mesh_stack and (node.callDecoration("isInfillMesh") or node.callDecoration("isCuttingMesh")):
# Render support meshes with a vertical stripe that is darker renderer.queueNode(node, shader = self._non_printing_shader, uniforms = uniforms, transparent = True)
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: else:
renderer.queueNode(node, shader = self._enabled_shader, uniforms = uniforms) renderer.queueNode(node, shader = self._non_printing_shader, transparent = True)
if node.callDecoration("isGroup") and Selection.isSelected(node): elif getattr(node, "_outside_buildarea", False):
renderer.queueNode(scene.getRoot(), mesh = node.getBoundingBoxMesh(), mode = RenderBatch.RenderMode.LineLoop) 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): def endRendering(self):
# check whether the xray overlay is showing badness # check whether the xray overlay is showing badness