From 13c7ca93be0c3786922b08fc2535b59bacab45d7 Mon Sep 17 00:00:00 2001 From: LarsBrubaker Date: Mon, 28 Jan 2019 07:53:38 -0800 Subject: [PATCH] Common invalidate for all operations source objects issue: MatterHackers/MCCentral#4941 changing color of inner object of curve not updating on screen color --- .../Operations/ArrayAdvancedObject3D.cs | 23 ---------------- .../Operations/ArrayLinearObject3D.cs | 25 +---------------- .../Operations/ArrayRadialObject3D.cs | 23 ---------------- .../DesignTools/Operations/CurveObject3D_2.cs | 21 --------------- .../Operations/MirrorObject3D_2.cs | 21 --------------- .../Operations/OperationSourceObject3D.cs | 27 ++++++++++++++++++- .../DesignTools/Operations/PinchObject3D_2.cs | 21 --------------- .../View3D/Actions/CombineObject3D_2.cs | 21 --------------- .../View3D/Actions/IntersectionObject3D_2.cs | 21 --------------- 9 files changed, 27 insertions(+), 176 deletions(-) diff --git a/MatterControlLib/DesignTools/Operations/ArrayAdvancedObject3D.cs b/MatterControlLib/DesignTools/Operations/ArrayAdvancedObject3D.cs index 639ad29d8..19407161c 100644 --- a/MatterControlLib/DesignTools/Operations/ArrayAdvancedObject3D.cs +++ b/MatterControlLib/DesignTools/Operations/ArrayAdvancedObject3D.cs @@ -57,29 +57,6 @@ namespace MatterHackers.MatterControl.DesignTools.Operations public bool ScaleOffset { get; set; } = true; - public override async void OnInvalidate(InvalidateArgs invalidateType) - { - if ((invalidateType.InvalidateType == InvalidateType.Content - || invalidateType.InvalidateType == InvalidateType.Matrix - || invalidateType.InvalidateType == InvalidateType.Mesh) - && invalidateType.Source != this - && !RebuildLocked) - { - await Rebuild(); - base.OnInvalidate(new InvalidateArgs(this, InvalidateType.Content, invalidateType.UndoBuffer)); - } - else if (invalidateType.InvalidateType == InvalidateType.Properties - && invalidateType.Source == this) - { - await Rebuild(); - base.OnInvalidate(new InvalidateArgs(this, InvalidateType.Content, invalidateType.UndoBuffer)); - } - else - { - base.OnInvalidate(invalidateType); - } - } - public override async Task Rebuild() { var rebuildLock = this.RebuildLock(); diff --git a/MatterControlLib/DesignTools/Operations/ArrayLinearObject3D.cs b/MatterControlLib/DesignTools/Operations/ArrayLinearObject3D.cs index 52cb33040..b717f73e2 100644 --- a/MatterControlLib/DesignTools/Operations/ArrayLinearObject3D.cs +++ b/MatterControlLib/DesignTools/Operations/ArrayLinearObject3D.cs @@ -49,30 +49,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations public int Count { get; set; } = 3; public DirectionVector Direction { get; set; } = new DirectionVector { Normal = new Vector3(1, 0, 0) }; public double Distance { get; set; } = 30; - - public override async void OnInvalidate(InvalidateArgs invalidateType) - { - if ((invalidateType.InvalidateType == InvalidateType.Content - || invalidateType.InvalidateType == InvalidateType.Matrix - || invalidateType.InvalidateType == InvalidateType.Mesh) - && invalidateType.Source != this - && !RebuildLocked) - { - await Rebuild(); - base.OnInvalidate(new InvalidateArgs(this, InvalidateType.Content, invalidateType.UndoBuffer)); - } - else if (invalidateType.InvalidateType == InvalidateType.Properties - && invalidateType.Source == this) - { - await Rebuild(); - base.OnInvalidate(new InvalidateArgs(this, InvalidateType.Content, invalidateType.UndoBuffer)); - } - else - { - base.OnInvalidate(invalidateType); - } - } - + public override async Task Rebuild() { var rebuildLock = this.RebuildLock(); diff --git a/MatterControlLib/DesignTools/Operations/ArrayRadialObject3D.cs b/MatterControlLib/DesignTools/Operations/ArrayRadialObject3D.cs index d072a390c..794ca4044 100644 --- a/MatterControlLib/DesignTools/Operations/ArrayRadialObject3D.cs +++ b/MatterControlLib/DesignTools/Operations/ArrayRadialObject3D.cs @@ -66,29 +66,6 @@ namespace MatterHackers.MatterControl.DesignTools.Operations [Description("Keep the entire extents of the part within the angle described.")] private bool KeepInAngle { get; set; } = false; - public override async void OnInvalidate(InvalidateArgs invalidateType) - { - if ((invalidateType.InvalidateType == InvalidateType.Content - || invalidateType.InvalidateType == InvalidateType.Matrix - || invalidateType.InvalidateType == InvalidateType.Mesh) - && invalidateType.Source != this - && !RebuildLocked) - { - await Rebuild(); - base.OnInvalidate(new InvalidateArgs(this, InvalidateType.Content, invalidateType.UndoBuffer)); - } - else if (invalidateType.InvalidateType == InvalidateType.Properties - && invalidateType.Source == this) - { - await Rebuild(); - base.OnInvalidate(new InvalidateArgs(this, InvalidateType.Content, invalidateType.UndoBuffer)); - } - else - { - base.OnInvalidate(invalidateType); - } - } - public override async Task Rebuild() { // check if we have initialized the Axis diff --git a/MatterControlLib/DesignTools/Operations/CurveObject3D_2.cs b/MatterControlLib/DesignTools/Operations/CurveObject3D_2.cs index 27883b9c7..e3d7024d2 100644 --- a/MatterControlLib/DesignTools/Operations/CurveObject3D_2.cs +++ b/MatterControlLib/DesignTools/Operations/CurveObject3D_2.cs @@ -86,27 +86,6 @@ namespace MatterHackers.MatterControl.DesignTools GL.Enable(EnableCap.Lighting); } - public override async void OnInvalidate(InvalidateArgs invalidateType) - { - if ((invalidateType.InvalidateType == InvalidateType.Content - || invalidateType.InvalidateType == InvalidateType.Matrix - || invalidateType.InvalidateType == InvalidateType.Mesh) - && invalidateType.Source != this - && !RebuildLocked) - { - await Rebuild(); - invalidateType = new InvalidateArgs(this, InvalidateType.Content, invalidateType.UndoBuffer); - } - else if (invalidateType.InvalidateType == InvalidateType.Properties - && invalidateType.Source == this) - { - await Rebuild(); - invalidateType = new InvalidateArgs(this, InvalidateType.Content, invalidateType.UndoBuffer); - } - - base.OnInvalidate(invalidateType); - } - public override Task Rebuild() { this.DebugDepth("Rebuild"); diff --git a/MatterControlLib/DesignTools/Operations/MirrorObject3D_2.cs b/MatterControlLib/DesignTools/Operations/MirrorObject3D_2.cs index de84d8522..bc8b2caa1 100644 --- a/MatterControlLib/DesignTools/Operations/MirrorObject3D_2.cs +++ b/MatterControlLib/DesignTools/Operations/MirrorObject3D_2.cs @@ -50,27 +50,6 @@ namespace MatterHackers.MatterControl.DesignTools public MirrorAxis MirrorOn { get; set; } = MirrorAxis.X_Axis; - public override async void OnInvalidate(InvalidateArgs invalidateType) - { - if ((invalidateType.InvalidateType == InvalidateType.Content - || invalidateType.InvalidateType == InvalidateType.Matrix - || invalidateType.InvalidateType == InvalidateType.Mesh) - && invalidateType.Source != this - && !RebuildLocked) - { - await Rebuild(); - invalidateType = new InvalidateArgs(this, InvalidateType.Content); - } - else if (invalidateType.InvalidateType == InvalidateType.Properties - && invalidateType.Source == this) - { - await Rebuild(); - invalidateType = new InvalidateArgs(this, InvalidateType.Content); - } - - base.OnInvalidate(invalidateType); - } - public override Task Rebuild() { this.DebugDepth("Rebuild"); diff --git a/MatterControlLib/DesignTools/Operations/OperationSourceObject3D.cs b/MatterControlLib/DesignTools/Operations/OperationSourceObject3D.cs index 0faade512..7aedbb84a 100644 --- a/MatterControlLib/DesignTools/Operations/OperationSourceObject3D.cs +++ b/MatterControlLib/DesignTools/Operations/OperationSourceObject3D.cs @@ -124,7 +124,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations replaceCommand.Do(); } - foreach(var child in newChildren[0].DescendantsAndSelf()) + foreach (var child in newChildren[0].DescendantsAndSelf()) { child.MakeNameNonColliding(); } @@ -133,6 +133,31 @@ namespace MatterHackers.MatterControl.DesignTools.Operations Invalidate(new InvalidateArgs(this, InvalidateType.Content, undoBuffer)); } + public override async void OnInvalidate(InvalidateArgs invalidateType) + { + // TODO: color and output type could have special consideration that would not require a rebulid + // They could jus propagate the color and output type to the corecty child and everything would be good + if ((invalidateType.InvalidateType == InvalidateType.Content + || invalidateType.InvalidateType == InvalidateType.Matrix + || invalidateType.InvalidateType == InvalidateType.Mesh + || invalidateType.InvalidateType == InvalidateType.Color + || invalidateType.InvalidateType == InvalidateType.OutputType) + && invalidateType.Source != this + && !RebuildLocked) + { + await Rebuild(); + invalidateType = new InvalidateArgs(this, InvalidateType.Content, invalidateType.UndoBuffer); + } + else if (invalidateType.InvalidateType == InvalidateType.Properties + && invalidateType.Source == this) + { + await Rebuild(); + invalidateType = new InvalidateArgs(this, InvalidateType.Content, invalidateType.UndoBuffer); + } + + base.OnInvalidate(invalidateType); + } + public override void Remove(UndoBuffer undoBuffer) { using (RebuildLock()) diff --git a/MatterControlLib/DesignTools/Operations/PinchObject3D_2.cs b/MatterControlLib/DesignTools/Operations/PinchObject3D_2.cs index 4e38e07dc..c73d66eff 100644 --- a/MatterControlLib/DesignTools/Operations/PinchObject3D_2.cs +++ b/MatterControlLib/DesignTools/Operations/PinchObject3D_2.cs @@ -48,27 +48,6 @@ namespace MatterHackers.MatterControl.DesignTools [DisplayName("Back Ratio")] public double PinchRatio { get; set; } = .5; - public override async void OnInvalidate(InvalidateArgs invalidateType) - { - if ((invalidateType.InvalidateType == InvalidateType.Content - || invalidateType.InvalidateType == InvalidateType.Matrix - || invalidateType.InvalidateType == InvalidateType.Mesh) - && invalidateType.Source != this - && !RebuildLocked) - { - await Rebuild(); - invalidateType = new InvalidateArgs(this, InvalidateType.Content, invalidateType.UndoBuffer); - } - else if (invalidateType.InvalidateType == InvalidateType.Properties - && invalidateType.Source == this) - { - await Rebuild(); - invalidateType = new InvalidateArgs(this, InvalidateType.Content, invalidateType.UndoBuffer); - } - - base.OnInvalidate(invalidateType); - } - public override Task Rebuild() { this.DebugDepth("Rebuild"); diff --git a/MatterControlLib/PartPreviewWindow/View3D/Actions/CombineObject3D_2.cs b/MatterControlLib/PartPreviewWindow/View3D/Actions/CombineObject3D_2.cs index 833006e28..5ee8d95a2 100644 --- a/MatterControlLib/PartPreviewWindow/View3D/Actions/CombineObject3D_2.cs +++ b/MatterControlLib/PartPreviewWindow/View3D/Actions/CombineObject3D_2.cs @@ -46,27 +46,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.View3D Name = "Combine"; } - public override async void OnInvalidate(InvalidateArgs invalidateType) - { - if ((invalidateType.InvalidateType == InvalidateType.Content - || invalidateType.InvalidateType == InvalidateType.Matrix - || invalidateType.InvalidateType == InvalidateType.Mesh) - && invalidateType.Source != this - && !RebuildLocked) - { - await Rebuild(); - invalidateType = new InvalidateArgs(this, InvalidateType.Content, invalidateType.UndoBuffer); - } - else if (invalidateType.InvalidateType == InvalidateType.Properties - && invalidateType.Source == this) - { - await Rebuild(); - invalidateType = new InvalidateArgs(this, InvalidateType.Content, invalidateType.UndoBuffer); - } - - base.OnInvalidate(invalidateType); - } - public override Task Rebuild() { this.DebugDepth("Rebuild"); diff --git a/MatterControlLib/PartPreviewWindow/View3D/Actions/IntersectionObject3D_2.cs b/MatterControlLib/PartPreviewWindow/View3D/Actions/IntersectionObject3D_2.cs index 6dce283f5..dfb158178 100644 --- a/MatterControlLib/PartPreviewWindow/View3D/Actions/IntersectionObject3D_2.cs +++ b/MatterControlLib/PartPreviewWindow/View3D/Actions/IntersectionObject3D_2.cs @@ -47,27 +47,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.View3D Name = "Intersection"; } - public override async void OnInvalidate(InvalidateArgs invalidateType) - { - if ((invalidateType.InvalidateType == InvalidateType.Content - || invalidateType.InvalidateType == InvalidateType.Matrix - || invalidateType.InvalidateType == InvalidateType.Mesh) - && invalidateType.Source != this - && !RebuildLocked) - { - await Rebuild(); - invalidateType = new InvalidateArgs(this, InvalidateType.Content, invalidateType.UndoBuffer); - } - else if (invalidateType.InvalidateType == InvalidateType.Properties - && invalidateType.Source == this) - { - await Rebuild(); - invalidateType = new InvalidateArgs(this, InvalidateType.Content, invalidateType.UndoBuffer); - } - - base.OnInvalidate(invalidateType); - } - public override Task Rebuild() { this.DebugDepth("Rebuild");