diff --git a/ApplicationView/ApplicationController.cs b/ApplicationView/ApplicationController.cs index 9b2327f35..b21fd4d5c 100644 --- a/ApplicationView/ApplicationController.cs +++ b/ApplicationView/ApplicationController.cs @@ -70,6 +70,9 @@ namespace MatterHackers.MatterControl public class BedConfig { public GCodeFile LoadedGCode { get; set; } + + // TODO: Make assignment private, wire up post slicing initialization here + public GCodeRenderer GCodeRenderer { get; set; } } public class PrinterConfig diff --git a/PartPreviewWindow/ViewGcodeBasic.cs b/PartPreviewWindow/ViewGcodeBasic.cs index a13472b52..ce001ef5d 100644 --- a/PartPreviewWindow/ViewGcodeBasic.cs +++ b/PartPreviewWindow/ViewGcodeBasic.cs @@ -400,7 +400,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow private void TrackballTumbleWidget_DrawGlContent(object sender, EventArgs e) { - if (loadedGCode == null || gcodeViewWidget.gCodeRenderer == null) + if (loadedGCode == null || printer.BedPlate.GCodeRenderer == null) { return; } @@ -417,7 +417,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow new Vector2[] { ActiveSliceSettings.Instance.Helpers.ExtruderOffset(0), ActiveSliceSettings.Instance.Helpers.ExtruderOffset(1) }, MeshViewerWidget.GetMaterialColor); - gcodeViewWidget.gCodeRenderer.Render3D(renderInfo); + printer.BedPlate.GCodeRenderer.Render3D(renderInfo); } private void SetAnimationPosition() diff --git a/PartPreviewWindow/ViewGcodeWidget.cs b/PartPreviewWindow/ViewGcodeWidget.cs index 1177d589c..849a2ca23 100644 --- a/PartPreviewWindow/ViewGcodeWidget.cs +++ b/PartPreviewWindow/ViewGcodeWidget.cs @@ -88,8 +88,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow private Vector2 unscaledRenderOffset = new Vector2(0, 0); - public GCodeRenderer gCodeRenderer { get; private set; } - public event EventHandler ActiveLayerChanged; private GCodeFile loadedGCode => printer.BedPlate.LoadedGCode; @@ -107,7 +105,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow { activeLayerIndex = value; - if (gCodeRenderer == null || activeLayerIndex < 0) + if (printer.BedPlate.GCodeRenderer == null || activeLayerIndex < 0) { activeLayerIndex = 0; } @@ -177,9 +175,10 @@ namespace MatterHackers.MatterControl.PartPreviewWindow internal void Clear3DGCode() { - if (gCodeRenderer != null) + var renderer = printer.BedPlate.GCodeRenderer; + if (renderer != null) { - gCodeRenderer.Clear3DGCode(); + renderer.Clear3DGCode(); this.Invalidate(); } } @@ -223,7 +222,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow //using (new PerformanceTimer("GCode Timer", "Render")) { - gCodeRenderer?.Render(graphics2D, renderInfo); + printer.BedPlate.GCodeRenderer?.Render(graphics2D, renderInfo); } } } @@ -446,6 +445,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow } } + // TODO: The bulk of this should move to the data model rather than in this widget public async void LoadInBackground(string gcodePathAndFileName) { printer.BedPlate.LoadedGCode = await GCodeFileLoaded.LoadInBackground(gcodePathAndFileName, this.progressReporter); @@ -465,7 +465,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow CenterPartInView(); } - gCodeRenderer = new GCodeRenderer(loadedGCode); + printer.BedPlate.GCodeRenderer = new GCodeRenderer(loadedGCode); if (ActiveSliceSettings.Instance.PrinterSelected) { @@ -481,14 +481,15 @@ namespace MatterHackers.MatterControl.PartPreviewWindow try { // TODO: Why call this then throw away the result? What does calling initialize the otherwise would be invalid? - gCodeRenderer.GCodeFileToDraw?.GetFilamentUsedMm(ActiveSliceSettings.Instance.GetValue(SettingsKey.filament_diameter)); + printer.BedPlate.GCodeRenderer.GCodeFileToDraw?.GetFilamentUsedMm(ActiveSliceSettings.Instance.GetValue(SettingsKey.filament_diameter)); } catch (Exception ex) { Debug.Print(ex.Message); GuiWidget.BreakInDebugger(); } - gCodeRenderer.CreateFeaturesForLayerIfRequired(0); + + printer.BedPlate.GCodeRenderer.CreateFeaturesForLayerIfRequired(0); }); DoneLoading?.Invoke(this, null); @@ -496,11 +497,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow public override void OnClosed(ClosedEventArgs e) { - if (gCodeRenderer != null) - { - gCodeRenderer.Dispose(); - } - + printer.BedPlate.GCodeRenderer?.Dispose(); base.OnClosed(e); } @@ -519,7 +516,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow { layerScale = layerScale * (Width / oldWidth); } - else if (gCodeRenderer != null) + else if (printer.BedPlate.GCodeRenderer != null) { CenterPartInView(); }