From d44520e4c15ab0c7b7f0d64529430b8bcdf826b2 Mon Sep 17 00:00:00 2001 From: LarsBrubaker Date: Fri, 3 May 2019 07:57:44 -0700 Subject: [PATCH] fix problem with checking printer when null issue: MatterHackers/MCCentral#5460 Test failures on automation server caused by emulator null reference --- .../View3D/MeshViewerWidget.cs | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/MatterControlLib/PartPreviewWindow/View3D/MeshViewerWidget.cs b/MatterControlLib/PartPreviewWindow/View3D/MeshViewerWidget.cs index 53e83f9e0..19f7f6e0d 100644 --- a/MatterControlLib/PartPreviewWindow/View3D/MeshViewerWidget.cs +++ b/MatterControlLib/PartPreviewWindow/View3D/MeshViewerWidget.cs @@ -53,20 +53,20 @@ namespace MatterHackers.MatterControl.PartPreviewWindow private Color darkWireframe = new Color("#3334"); private Color gCodeMeshColor; - private InteractiveScene scene; + private readonly InteractiveScene scene; - private ISceneContext sceneContext; + private readonly ISceneContext sceneContext; - private ThemeConfig theme; - private FloorDrawable floorDrawable; + private readonly ThemeConfig theme; + private readonly FloorDrawable floorDrawable; private ModelRenderStyle modelRenderStyle = ModelRenderStyle.Wireframe; - private List drawables = new List(); - private List itemDrawables = new List(); - private Vector3 lastEmulatorPosition; + private readonly List drawables = new List(); + private readonly List itemDrawables = new List(); private bool emulatorHooked; private long lastEmulatorDrawMs; + private readonly Mesh emulatorNozzleMesh = PlatonicSolids.CreateCube(1, 1, 10); public bool AllowBedRenderingWhenEmpty { get; set; } @@ -467,7 +467,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow } } - if (sceneContext.Printer.Connection.serialPort is PrinterEmulator.Emulator emulator) + if (sceneContext.Printer?.Connection?.serialPort is PrinterEmulator.Emulator emulator) { void NozzlePositionChanged(object s, EventArgs e2) { @@ -481,7 +481,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow } var matrix = Matrix4X4.CreateTranslation(emulator.CurrentPosition + new Vector3(.5, .5, 5)); - GLHelper.Render(PlatonicSolids.CreateCube(1, 1, 10), + GLHelper.Render(emulatorNozzleMesh, MaterialRendering.Color(emulator.ExtruderIndex), matrix, RenderTypes.Shaded, @@ -494,8 +494,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow } Closed += (s, e3) => emulator.DestinationChanged -= NozzlePositionChanged; - - lastEmulatorPosition = emulator.CurrentPosition; } transparentMeshes.Sort(BackToFrontXY);