Fix missing bed texture on single hotend printer
- Issue MatterHackers/MCCentral#5337 Bed grid does not render for single extrusion printer
This commit is contained in:
parent
d0d2317600
commit
b0fc918edf
1 changed files with 43 additions and 32 deletions
|
|
@ -93,7 +93,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
// only render if we are above the bed
|
||||
if (sceneContext.RendererOptions.RenderBed)
|
||||
{
|
||||
this.UpdateFloorImage(sceneContext.Scene.SelectedItem);
|
||||
this.EnsureBedTexture(sceneContext.Scene.SelectedItem);
|
||||
|
||||
GLHelper.Render(
|
||||
sceneContext.Mesh,
|
||||
|
|
@ -164,34 +164,16 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
}
|
||||
}
|
||||
|
||||
private void UpdateFloorImage(IObject3D selectedItem, bool clearToPlaceholderImage = true)
|
||||
private void EnsureBedTexture(IObject3D selectedItem, bool clearToPlaceholderImage = true)
|
||||
{
|
||||
// Early exit for invalid cases
|
||||
if (loadingTextures
|
||||
|| printer == null
|
||||
|| printer.Settings.Helpers.NumberOfHotends() != 2
|
||||
|| printer.Bed.BedShape != BedShape.Rectangular)
|
||||
|| printer == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (bedTextures != null)
|
||||
{
|
||||
int hotendIndex = GetActiveHotendIndex(selectedItem);
|
||||
|
||||
if (activeBedHotendClippingImage != hotendIndex)
|
||||
{
|
||||
// Clamp to the range that's currently supported
|
||||
if (hotendIndex > 2)
|
||||
{
|
||||
hotendIndex = -1;
|
||||
}
|
||||
|
||||
this.SetActiveTexture(bedTextures[hotendIndex + 1]);
|
||||
activeBedHotendClippingImage = hotendIndex;
|
||||
}
|
||||
}
|
||||
else
|
||||
if (bedTextures == null)
|
||||
{
|
||||
loadingTextures = true;
|
||||
|
||||
|
|
@ -213,19 +195,32 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
{
|
||||
var bedImage = BedMeshGenerator.CreatePrintBedImage(sceneContext.Printer);
|
||||
|
||||
bedTextures = new[]
|
||||
if (printer.Settings.Helpers.NumberOfHotends() > 1)
|
||||
{
|
||||
bedImage, // No limits, basic themed bed
|
||||
new ImageBuffer(bedImage), // T0 limits
|
||||
new ImageBuffer(bedImage), // T1 limits
|
||||
new ImageBuffer(bedImage) // Unioned T0 & T1 limits
|
||||
};
|
||||
bedTextures = new[]
|
||||
{
|
||||
bedImage, // No limits, basic themed bed
|
||||
new ImageBuffer(bedImage), // T0 limits
|
||||
new ImageBuffer(bedImage), // T1 limits
|
||||
new ImageBuffer(bedImage) // Unioned T0 & T1 limits
|
||||
};
|
||||
|
||||
GenerateNozzleLimitsTexture(printer, 0, bedTextures[1]);
|
||||
GenerateNozzleLimitsTexture(printer, 1, bedTextures[2]);
|
||||
GenerateNozzleLimitsTexture(printer, 0, bedTextures[1]);
|
||||
GenerateNozzleLimitsTexture(printer, 1, bedTextures[2]);
|
||||
|
||||
// Special case for union of both hotends
|
||||
GenerateNozzleLimitsTexture(printer, 2, bedTextures[3]);
|
||||
// Special case for union of both hotends
|
||||
GenerateNozzleLimitsTexture(printer, 2, bedTextures[3]);
|
||||
}
|
||||
else
|
||||
{
|
||||
bedTextures = new[]
|
||||
{
|
||||
bedImage, // No limits, basic themed bed
|
||||
};
|
||||
|
||||
this.SetActiveTexture(bedTextures[0]);
|
||||
activeBedHotendClippingImage = 0;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
|
@ -233,7 +228,23 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
|
||||
loadingTextures = false;
|
||||
});
|
||||
}
|
||||
else if (printer.Settings.Helpers.NumberOfHotends() > 1
|
||||
&& printer.Bed.BedShape == BedShape.Rectangular)
|
||||
{
|
||||
int hotendIndex = GetActiveHotendIndex(selectedItem);
|
||||
|
||||
if (activeBedHotendClippingImage != hotendIndex)
|
||||
{
|
||||
// Clamp to the range that's currently supported
|
||||
if (hotendIndex > 2)
|
||||
{
|
||||
hotendIndex = -1;
|
||||
}
|
||||
|
||||
this.SetActiveTexture(bedTextures[hotendIndex + 1]);
|
||||
activeBedHotendClippingImage = hotendIndex;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue