Making fit to bounds recalculate aabb when matrix changes

issue: MatterHackers/MCCentral#3831
Fit to bounds has bad rotation axis' after being moved
This commit is contained in:
LarsBrubaker 2018-07-11 07:37:43 -07:00
parent e80f773cb9
commit d1d71f9603
4 changed files with 13 additions and 6 deletions

View file

@ -56,7 +56,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
public double Width { get; set; } public double Width { get; set; }
public double Depth { get; set; } public double Depth { get; set; }
public double Diameter { get; set; } public double Diameter { get; set; }
public double Height { get; set; } public double Height { get; set; }
[Description("Set the rules for how to maintain the part while scaling.")] [Description("Set the rules for how to maintain the part while scaling.")]
public MaintainRatio MaintainRatio { get; set; } = MaintainRatio.X_Y; public MaintainRatio MaintainRatio { get; set; } = MaintainRatio.X_Y;

View file

@ -49,7 +49,8 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
private Vector3 cacheBounds; private Vector3 cacheBounds;
private Matrix4X4 cacheMatrix; private Matrix4X4 cacheParentMatrix;
private Matrix4X4 cacheThisMatrix;
public FitToBoundsObject3D_2() public FitToBoundsObject3D_2()
{ {
@ -110,7 +111,8 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
{ {
if (Children.Count == 2) if (Children.Count == 2)
{ {
if (cacheMatrix != matrix if (cacheParentMatrix != matrix
|| cacheThisMatrix != Matrix
|| cacheBounds != boundsSize) || cacheBounds != boundsSize)
{ {
using (FitBounds.RebuildLock()) using (FitBounds.RebuildLock())
@ -119,7 +121,8 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
cacheAabb = base.GetAxisAlignedBoundingBox(matrix); cacheAabb = base.GetAxisAlignedBoundingBox(matrix);
FitBounds.Visible = false; FitBounds.Visible = false;
} }
cacheMatrix = matrix; cacheParentMatrix = matrix;
cacheThisMatrix = Matrix;
cacheBounds = boundsSize; cacheBounds = boundsSize;
} }
@ -144,6 +147,10 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
{ {
Rebuild(null); Rebuild(null);
} }
else if(invalidateType.InvalidateType == InvalidateType.Matrix)
{
cacheThisMatrix = Matrix4X4.Identity;
}
else else
{ {
base.OnInvalidate(invalidateType); base.OnInvalidate(invalidateType);

@ -1 +1 @@
Subproject commit a294e67725162baedc55a40570d197f3f60d6e3c Subproject commit 25566d561cf4431d0d1536c4eb70ae008924233e

@ -1 +1 @@
Subproject commit 83a061238145ccde64e2effc10e55468b39b5b8d Subproject commit 222d93bbf054ab869c073b9d8810011b73d3d1af