Change the Invalidate Type to flags

remove undo buffer from invalidate type
This commit is contained in:
Lars Brubaker 2019-01-28 14:19:40 -08:00
parent 0d74b4b5d8
commit f0728e0610
56 changed files with 283 additions and 261 deletions

View file

@ -652,7 +652,7 @@ namespace MatterHackers.MatterControl
var selectedItem = scene.SelectedItem;
var align = new AlignObject3D();
align.AddSelectionAsChildren(scene, selectedItem);
align.Invalidate(new InvalidateArgs(align, InvalidateType.Properties, null));
align.Invalidate(new InvalidateArgs(align, InvalidateType.Properties));
},
Icon = AggContext.StaticData.LoadIcon("align_left_dark.png", 16, 16, theme.InvertIcons).SetPreMultiply(),
IsEnabled = (scene) => scene.SelectedItem is SelectionGroupObject3D,
@ -722,7 +722,7 @@ namespace MatterHackers.MatterControl
{
var array = new ArrayLinearObject3D();
array.AddSelectionAsChildren(sceneContext.Scene, sceneContext.Scene.SelectedItem);
array.Invalidate(new InvalidateArgs(array, InvalidateType.Properties, null));
array.Invalidate(new InvalidateArgs(array, InvalidateType.Properties));
},
Icon = AggContext.StaticData.LoadIcon("array_linear.png").SetPreMultiply(),
IsEnabled = (scene) => scene.SelectedItem != null && !(scene.SelectedItem is SelectionGroupObject3D),
@ -735,7 +735,7 @@ namespace MatterHackers.MatterControl
{
var array = new ArrayRadialObject3D();
array.AddSelectionAsChildren(sceneContext.Scene, sceneContext.Scene.SelectedItem);
array.Invalidate(new InvalidateArgs(array, InvalidateType.Properties, null));
array.Invalidate(new InvalidateArgs(array, InvalidateType.Properties));
},
Icon = AggContext.StaticData.LoadIcon("array_radial.png").SetPreMultiply(),
IsEnabled = (scene) => scene.SelectedItem != null && !(scene.SelectedItem is SelectionGroupObject3D),
@ -748,7 +748,7 @@ namespace MatterHackers.MatterControl
{
var array = new ArrayAdvancedObject3D();
array.AddSelectionAsChildren(sceneContext.Scene, sceneContext.Scene.SelectedItem);
array.Invalidate(new InvalidateArgs(array, InvalidateType.Properties, null));
array.Invalidate(new InvalidateArgs(array, InvalidateType.Properties));
},
Icon = AggContext.StaticData.LoadIcon("array_advanced.png").SetPreMultiply(),
IsEnabled = (scene) => scene.SelectedItem != null && !(scene.SelectedItem is SelectionGroupObject3D),
@ -1133,7 +1133,7 @@ namespace MatterHackers.MatterControl
scene.UndoBuffer.AddAndDo(new ReplaceCommand(new[] { sceneItem }, new[] { path }));
scene.SelectedItem = null;
scene.SelectedItem = path;
path.Invalidate(new InvalidateArgs(path, InvalidateType.Properties, null));
path.Invalidate(new InvalidateArgs(path, InvalidateType.Properties));
}
return Task.CompletedTask;
@ -1249,7 +1249,7 @@ namespace MatterHackers.MatterControl
scene.SelectedItem = null;
scene.SelectedItem = component;
// Invalidate image to kick off rebuild of ImageConverter stack
imageObject.Invalidate(new InvalidateArgs(imageObject, InvalidateType.Image, null));
imageObject.Invalidate(new InvalidateArgs(imageObject, InvalidateType.Image));
return Task.CompletedTask;
},
@ -1373,7 +1373,7 @@ namespace MatterHackers.MatterControl
scene.UndoBuffer.AddAndDo(new ReplaceCommand(new[] { sceneItem }, new[] { extrude }));
scene.SelectedItem = null;
scene.SelectedItem = extrude;
extrude.Invalidate(new InvalidateArgs(extrude, InvalidateType.Properties, null));
extrude.Invalidate(new InvalidateArgs(extrude, InvalidateType.Properties));
}
return Task.CompletedTask;
@ -1401,7 +1401,7 @@ namespace MatterHackers.MatterControl
scene.UndoBuffer.AddAndDo(new ReplaceCommand(new[] { sceneItem }, new[] { smoothPath }));
scene.SelectedItem = null;
scene.SelectedItem = smoothPath;
smoothPath.Invalidate(new InvalidateArgs(smoothPath, InvalidateType.Properties, null));
smoothPath.Invalidate(new InvalidateArgs(smoothPath, InvalidateType.Properties));
}
return Task.CompletedTask;
@ -1429,7 +1429,7 @@ namespace MatterHackers.MatterControl
scene.UndoBuffer.AddAndDo(new ReplaceCommand(new[] { sceneItem }, new[] { inflatePath }));
scene.SelectedItem = null;
scene.SelectedItem = inflatePath;
inflatePath.Invalidate(new InvalidateArgs(inflatePath, InvalidateType.Properties, null));
inflatePath.Invalidate(new InvalidateArgs(inflatePath, InvalidateType.Properties));
}
return Task.CompletedTask;
@ -1455,7 +1455,7 @@ namespace MatterHackers.MatterControl
};
newChild.Matrix = Matrix4X4.Identity;
baseMesh.Children.Add(newChild);
baseMesh.Invalidate(new InvalidateArgs(baseMesh, InvalidateType.Properties, null));
baseMesh.Invalidate(new InvalidateArgs(baseMesh, InvalidateType.Properties));
scene.UndoBuffer.AddAndDo(
new ReplaceCommand(

View file

@ -58,7 +58,7 @@ namespace MatterHackers.MatterControl.DesignTools
public override void OnInvalidate(InvalidateArgs invalidateType)
{
if (invalidateType.InvalidateType == InvalidateType.Properties
if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties)
&& invalidateType.Source == this)
{
Rebuild(null);
@ -96,7 +96,7 @@ namespace MatterHackers.MatterControl.DesignTools
Height = BaseHeight
};
textObject.Invalidate(new InvalidateArgs(textObject, InvalidateType.Properties, null));
textObject.Invalidate(new InvalidateArgs(textObject, InvalidateType.Properties));
IObject3D letterObject = new RotateObject3D(textObject, MathHelper.Tau / 4);
letterObject = new AlignObject3D(letterObject, FaceAlign.Bottom | FaceAlign.Front, brailleLetter, FaceAlign.Top | FaceAlign.Front, 0, 0, 3.5);
letterObject = new SetCenterObject3D(letterObject, brailleLetter.GetCenter(), true, false, false);
@ -129,7 +129,7 @@ namespace MatterHackers.MatterControl.DesignTools
}
}
Invalidate(new InvalidateArgs(this, InvalidateType.Content));
Invalidate(new InvalidateArgs(this, InvalidateType.Children));
}
}
}

View file

@ -86,7 +86,7 @@ namespace MatterHackers.MatterControl.DesignTools
public override void OnInvalidate(InvalidateArgs invalidateType)
{
if (invalidateType.InvalidateType == InvalidateType.Properties
if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties)
&& invalidateType.Source == this)
{
Rebuild(null);
@ -267,7 +267,7 @@ namespace MatterHackers.MatterControl.DesignTools
}
}
Invalidate(new InvalidateArgs(this, InvalidateType.Content));
Invalidate(new InvalidateArgs(this, InvalidateType.Children));
}
}
}

View file

@ -65,24 +65,25 @@ namespace MatterHackers.MatterControl.Plugins.Lithophane
public Vector3 ImageOffset { get; private set; } = Vector3.Zero;
public override void OnInvalidate(InvalidateArgs invalidateType)
public override void OnInvalidate(InvalidateArgs invalidateArgs)
{
if ((invalidateType.InvalidateType == InvalidateType.Content
|| invalidateType.InvalidateType == InvalidateType.Matrix
|| invalidateType.InvalidateType == InvalidateType.Mesh)
&& invalidateType.Source != this
var invalidateType = invalidateArgs.InvalidateType;
if ((invalidateType.HasFlag(InvalidateType.Children)
|| invalidateArgs.InvalidateType.HasFlag(InvalidateType.Matrix)
|| invalidateArgs.InvalidateType.HasFlag(InvalidateType.Mesh))
&& invalidateArgs.Source != this
&& !RebuildLocked)
{
Rebuild(null);
}
else if (invalidateType.InvalidateType == InvalidateType.Properties
&& invalidateType.Source == this)
else if (invalidateArgs.InvalidateType.HasFlag(InvalidateType.Properties)
&& invalidateArgs.Source == this)
{
Rebuild(null);
}
else
{
base.OnInvalidate(invalidateType);
base.OnInvalidate(invalidateArgs);
}
}
@ -113,6 +114,8 @@ namespace MatterHackers.MatterControl.Plugins.Lithophane
// Apply offset
this.Matrix *= Matrix4X4.CreateTranslation(-this.ImageOffset);
base.OnInvalidate(new InvalidateArgs(this, InvalidateType.Children));
return Task.CompletedTask;
});
}

View file

@ -53,23 +53,23 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.View3D
public override async void OnInvalidate(InvalidateArgs invalidateType)
{
if ((invalidateType.InvalidateType == InvalidateType.Content
|| invalidateType.InvalidateType == InvalidateType.Matrix
|| invalidateType.InvalidateType == InvalidateType.Mesh)
if ((invalidateType.InvalidateType.HasFlag(InvalidateType.Children)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Matrix)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Mesh))
&& invalidateType.Source != this
&& !RebuildLocked)
{
await Rebuild();
invalidateType = new InvalidateArgs(this, InvalidateType.Content, invalidateType.UndoBuffer);
}
else if (invalidateType.InvalidateType == InvalidateType.Properties
else if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties)
&& invalidateType.Source == this)
{
await Rebuild();
invalidateType = new InvalidateArgs(this, InvalidateType.Content, invalidateType.UndoBuffer);
}
base.OnInvalidate(invalidateType);
else
{
base.OnInvalidate(invalidateType);
}
}
public override Task Rebuild()
@ -96,6 +96,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.View3D
}
rebuildLocks.Dispose();
base.OnInvalidate(new InvalidateArgs(this, InvalidateType.Children));
return Task.CompletedTask;
});
}

View file

@ -150,15 +150,15 @@ namespace MatterHackers.MatterControl.DesignTools
public override void OnInvalidate(InvalidateArgs invalidateType)
{
if ((invalidateType.InvalidateType == InvalidateType.Content
|| invalidateType.InvalidateType == InvalidateType.Matrix
|| invalidateType.InvalidateType == InvalidateType.Mesh)
if ((invalidateType.InvalidateType.HasFlag(InvalidateType.Children)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Matrix)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Mesh))
&& invalidateType.Source != this
&& !RebuildLocked)
{
Rebuild(null);
}
else if (invalidateType.InvalidateType == InvalidateType.Properties
else if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties)
&& invalidateType.Source == this)
{
Rebuild(null);

View file

@ -101,7 +101,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
list.AddRange(ScaleItem.Children);
});
}
Invalidate(new InvalidateArgs(this, InvalidateType.Content));
Invalidate(new InvalidateArgs(this, InvalidateType.Children));
}
public override void Remove(UndoBuffer undoBuffer)
@ -122,20 +122,20 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
});
}
Invalidate(new InvalidateArgs(this, InvalidateType.Content));
Invalidate(new InvalidateArgs(this, InvalidateType.Children));
}
public override void OnInvalidate(InvalidateArgs invalidateType)
{
if ((invalidateType.InvalidateType == InvalidateType.Content
|| invalidateType.InvalidateType == InvalidateType.Matrix
|| invalidateType.InvalidateType == InvalidateType.Mesh)
if ((invalidateType.InvalidateType.HasFlag(InvalidateType.Children)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Matrix)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Mesh))
&& invalidateType.Source != this
&& !RebuildLocked)
{
Rebuild(null);
}
else if (invalidateType.InvalidateType == InvalidateType.Properties
else if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties)
&& invalidateType.Source == this)
{
Rebuild(null);

View file

@ -53,23 +53,23 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.View3D
public override async void OnInvalidate(InvalidateArgs invalidateType)
{
if ((invalidateType.InvalidateType == InvalidateType.Content
|| invalidateType.InvalidateType == InvalidateType.Matrix
|| invalidateType.InvalidateType == InvalidateType.Mesh)
if ((invalidateType.InvalidateType.HasFlag(InvalidateType.Children)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Matrix)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Mesh))
&& invalidateType.Source != this
&& !RebuildLocked)
{
await Rebuild();
invalidateType = new InvalidateArgs(this, InvalidateType.Content, invalidateType.UndoBuffer);
}
else if (invalidateType.InvalidateType == InvalidateType.Properties
else if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties)
&& invalidateType.Source == this)
{
await Rebuild();
invalidateType = new InvalidateArgs(this, InvalidateType.Content, invalidateType.UndoBuffer);
}
base.OnInvalidate(invalidateType);
else
{
base.OnInvalidate(invalidateType);
}
}
public override Task Rebuild()
@ -85,23 +85,17 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.View3D
{
Intersect(cancellationToken, reporter);
}
catch { }
UiThread.RunOnIdle(() =>
catch
{
rebuildLocks.Dispose();
base.Invalidate(new InvalidateArgs(this, InvalidateType.Content));
});
}
rebuildLocks.Dispose();
base.Invalidate(new InvalidateArgs(this, InvalidateType.Children));
return Task.CompletedTask;
});
}
public void Intersect()
{
Intersect(CancellationToken.None, null);
}
private void Intersect(CancellationToken cancellationToken, IProgress<ProgressStatus> reporter)
{
ResetMeshWrapperMeshes(Object3DPropertyFlags.All, cancellationToken);

View file

@ -93,22 +93,22 @@ namespace MatterHackers.MatterControl.DesignTools
this.Matrix = oldMatrix;
}
base.Invalidate(new InvalidateArgs(this, InvalidateType.Content));
base.Invalidate(new InvalidateArgs(this, InvalidateType.Children));
return Task.CompletedTask;
}
public override void OnInvalidate(InvalidateArgs invalidateType)
{
if ((invalidateType.InvalidateType == InvalidateType.Content
|| invalidateType.InvalidateType == InvalidateType.Matrix
|| invalidateType.InvalidateType == InvalidateType.Mesh)
if ((invalidateType.InvalidateType.HasFlag(InvalidateType.Children)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Matrix)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Mesh))
&& invalidateType.Source != this
&& !RebuildLocked)
{
Rebuild();
}
else if (invalidateType.InvalidateType == InvalidateType.Properties
else if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties)
&& invalidateType.Source == this)
{
Rebuild();

View file

@ -57,15 +57,15 @@ namespace MatterHackers.MatterControl.DesignTools
public override void OnInvalidate(InvalidateArgs invalidateType)
{
if ((invalidateType.InvalidateType == InvalidateType.Content
|| invalidateType.InvalidateType == InvalidateType.Matrix
|| invalidateType.InvalidateType == InvalidateType.Mesh)
if ((invalidateType.InvalidateType.HasFlag(InvalidateType.Children)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Matrix)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Mesh))
&& invalidateType.Source != this
&& !RebuildLocked)
{
Rebuild(null);
}
else if (invalidateType.InvalidateType == InvalidateType.Properties
else if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties)
&& invalidateType.Source == this)
{
Rebuild(null);
@ -124,7 +124,7 @@ namespace MatterHackers.MatterControl.DesignTools
Matrix = currentMatrix;
}
base.Invalidate(new InvalidateArgs(this, InvalidateType.Content));
base.Invalidate(new InvalidateArgs(this, InvalidateType.Children));
}
}
}

View file

@ -97,27 +97,27 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
}
}
Invalidate(new InvalidateArgs(this, InvalidateType.Matrix, null));
Invalidate(new InvalidateArgs(this, InvalidateType.Matrix));
return Task.CompletedTask;
}
public override void OnInvalidate(InvalidateArgs invalidateType)
{
if ((invalidateType.InvalidateType == InvalidateType.Content
|| invalidateType.InvalidateType == InvalidateType.Matrix
|| invalidateType.InvalidateType == InvalidateType.Mesh)
if ((invalidateType.InvalidateType.HasFlag(InvalidateType.Children)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Matrix)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Mesh))
&& invalidateType.Source != this
&& !RebuildLocked)
{
Rebuild();
invalidateType = new InvalidateArgs(this, InvalidateType.Matrix, invalidateType.UndoBuffer);
invalidateType = new InvalidateArgs(this, InvalidateType.Matrix);
}
else if (invalidateType.InvalidateType == InvalidateType.Properties
else if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties)
&& invalidateType.Source == this)
{
Rebuild();
invalidateType = new InvalidateArgs(this, InvalidateType.Matrix, invalidateType.UndoBuffer);
invalidateType = new InvalidateArgs(this, InvalidateType.Matrix);
}
base.OnInvalidate(invalidateType);

View file

@ -296,23 +296,24 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
return positionToAlignTo + extraOffset;
}
public override void OnInvalidate(InvalidateArgs invalidateType)
public override async void OnInvalidate(InvalidateArgs invalidateType)
{
if ((invalidateType.InvalidateType == InvalidateType.Content
|| invalidateType.InvalidateType == InvalidateType.Matrix
|| invalidateType.InvalidateType == InvalidateType.Mesh)
if ((invalidateType.InvalidateType.HasFlag(InvalidateType.Children)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Matrix)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Mesh))
&& invalidateType.Source != this
&& !RebuildLocked)
{
Rebuild();
base.OnInvalidate(new InvalidateArgs(this, InvalidateType.Matrix, invalidateType.UndoBuffer));
await Rebuild();
}
else if (invalidateType.InvalidateType == InvalidateType.Properties
else if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties)
&& invalidateType.Source == this)
{
Rebuild();
base.OnInvalidate(new InvalidateArgs(this, InvalidateType.Matrix, invalidateType.UndoBuffer));
await Rebuild();
}
// and also always pass back the actual type
base.OnInvalidate(invalidateType);
}
public override Task Rebuild()
@ -442,6 +443,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
}));
}
base.OnInvalidate(new InvalidateArgs(this, InvalidateType.Matrix));
return Task.CompletedTask;
}
@ -464,7 +466,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
base.Remove(undoBuffer);
}
Invalidate(new InvalidateArgs(this, InvalidateType.Content));
Invalidate(new InvalidateArgs(this, InvalidateType.Children));
}
public void UpdateControls(PublicPropertyChange change)

View file

@ -100,6 +100,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
});
SourceContainer.Visible = false;
rebuildLock.Dispose();
base.OnInvalidate(new InvalidateArgs(this, InvalidateType.Children));
return Task.CompletedTask;
});
}

View file

@ -84,6 +84,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
SourceContainer.Visible = false;
rebuildLock.Dispose();
base.OnInvalidate(new InvalidateArgs(this, InvalidateType.Children));
return Task.CompletedTask;
});
}

View file

@ -127,6 +127,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
});
SourceContainer.Visible = false;
rebuildLock.Dispose();
base.OnInvalidate(new InvalidateArgs(this, InvalidateType.Children));
return Task.CompletedTask;
});
}

View file

@ -48,8 +48,8 @@ namespace MatterHackers.MatterControl.DesignTools
{
public class CurveObject3D_2 : OperationSourceContainerObject3D, IEditorDraw
{
// holds where we rotate the object
private Vector2 rotationCenter;
// this needs to serialize but not be editable
public Vector3 rotationOffset;
public CurveObject3D_2()
{
@ -79,7 +79,7 @@ namespace MatterHackers.MatterControl.DesignTools
var currentMatrixInv = Matrix.Inverted;
var aabb = this.GetAxisAlignedBoundingBox(currentMatrixInv);
layer.World.RenderCylinderOutline(this.WorldMatrix(), new Vector3(rotationCenter, aabb.Center.Z), Diameter, aabb.ZSize, 30, Color.Red);
layer.World.RenderCylinderOutline(this.WorldMatrix(), Vector3.Zero, Diameter, aabb.ZSize, 30, Color.Red);
}
// turn the lighting back on
@ -105,6 +105,7 @@ namespace MatterHackers.MatterControl.DesignTools
null,
(reporter, cancellationToken) =>
{
this.Translate(-rotationOffset);
SourceContainer.Visible = true;
RemoveAllButSource();
@ -125,7 +126,15 @@ namespace MatterHackers.MatterControl.DesignTools
{
var radius = Diameter / 2;
var circumference = MathHelper.Tau * radius;
rotationCenter = new Vector2(aabb.MinXYZ.X + (aabb.MaxXYZ.X - aabb.MinXYZ.X) * (StartPercent / 100), aabb.MaxXYZ.Y + radius);
var rotationCenter = new Vector3(aabb.MinXYZ.X + (aabb.MaxXYZ.X - aabb.MinXYZ.X) * (StartPercent / 100), aabb.MaxXYZ.Y + radius, aabb.Center.Z);
rotationOffset = rotationCenter;
if (!BendCcw)
{
// fix the stored center so we draw correctly
rotationOffset.Y = aabb.MinXYZ.Y - radius;
}
foreach (var sourceItem in SourceContainer.VisibleMeshes())
{
var originalMesh = sourceItem.Mesh;
@ -152,7 +161,8 @@ namespace MatterHackers.MatterControl.DesignTools
var rotatePosition = new Vector3Float(Math.Cos(angleToRotate), Math.Sin(angleToRotate), 0) * distanceFromCenter;
rotatePosition.Z = worldPosition.Z;
var worldWithBend = rotatePosition + new Vector3Float(rotationCenter.X, radius + aabb.MaxXYZ.Y, 0);
transformedMesh.Vertices[i] = worldWithBend.Transform(invItemMatrix);
transformedMesh.Vertices[i] = worldWithBend.Transform(invItemMatrix) - new Vector3Float(rotationOffset);
}
transformedMesh.MarkAsChanged();
@ -165,18 +175,14 @@ namespace MatterHackers.MatterControl.DesignTools
newMesh.CopyWorldProperties(sourceItem, this, Object3DPropertyFlags.All);
this.Children.Add(newMesh);
}
if (!BendCcw)
{
// fix the stored center so we draw correctly
rotationCenter = new Vector2(rotationCenter.X, aabb.MinXYZ.Y - radius);
}
}
// set the matrix back
Matrix = currentMatrix;
this.Translate(new Vector3(rotationOffset));
SourceContainer.Visible = false;
rebuildLocks.Dispose();
base.OnInvalidate(new InvalidateArgs(this, InvalidateType.Children));
return Task.CompletedTask;
});
}

View file

@ -137,25 +137,26 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
public override async void OnInvalidate(InvalidateArgs invalidateType)
{
if ((invalidateType.InvalidateType == InvalidateType.Content
|| invalidateType.InvalidateType == InvalidateType.Matrix
|| invalidateType.InvalidateType == InvalidateType.Mesh)
if ((invalidateType.InvalidateType.HasFlag(InvalidateType.Children)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Matrix)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Mesh))
&& invalidateType.Source != this
&& !RebuildLocked)
{
await Rebuild();
}
else if (invalidateType.InvalidateType == InvalidateType.Properties
else if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties)
&& invalidateType.Source == this)
{
await Rebuild();
}
else if ((invalidateType.InvalidateType == InvalidateType.Properties
|| invalidateType.InvalidateType == InvalidateType.Matrix
|| invalidateType.InvalidateType == InvalidateType.Mesh
|| invalidateType.InvalidateType == InvalidateType.Content))
else if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Matrix)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Mesh)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Children))
{
cacheThisMatrix = Matrix4X4.Identity;
base.OnInvalidate(invalidateType);
}
base.OnInvalidate(invalidateType);
@ -186,6 +187,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
}
}
base.OnInvalidate(new InvalidateArgs(this, InvalidateType.Matrix));
return Task.CompletedTask;
}
@ -266,7 +268,10 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
set
{
boundsSize.X = value;
Rebuild();
if (this.Children.Count() > 0)
{
Rebuild();
}
}
}
@ -277,7 +282,10 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
set
{
boundsSize.Y = value;
Rebuild();
if (this.Children.Count() > 0)
{
Rebuild();
}
}
}
@ -288,7 +296,10 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
set
{
boundsSize.Z = value;
Rebuild();
if (this.Children.Count() > 0)
{
Rebuild();
}
}
}

View file

@ -310,19 +310,19 @@ namespace MatterHackers.MatterControl.DesignTools
{
this.DebugDepth("Invalidate");
if (invalidateType.InvalidateType == InvalidateType.Image
if (invalidateType.InvalidateType.HasFlag(InvalidateType.Image)
&& invalidateType.Source != this
&& !RebuildLocked)
{
await Rebuild();
base.OnInvalidate(new InvalidateArgs(this, InvalidateType.Path, invalidateType.UndoBuffer));
base.OnInvalidate(new InvalidateArgs(this, InvalidateType.Path));
}
else if (invalidateType.InvalidateType == InvalidateType.Properties
else if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties)
&& invalidateType.Source == this)
{
UpdateHistogramDisplay();
await Rebuild();
base.OnInvalidate(new InvalidateArgs(this, InvalidateType.Path, invalidateType.UndoBuffer));
base.OnInvalidate(new InvalidateArgs(this, InvalidateType.Path));
}
}
@ -384,11 +384,11 @@ namespace MatterHackers.MatterControl.DesignTools
if (propertyUpdated)
{
UpdateHistogramDisplay();
Invalidate(new InvalidateArgs(this, InvalidateType.Properties, null));
Invalidate(new InvalidateArgs(this, InvalidateType.Properties));
}
rebuildLock.Dispose();
Invalidate(new InvalidateArgs(this, InvalidateType.Path, null));
Invalidate(new InvalidateArgs(this, InvalidateType.Path));
return Task.CompletedTask;
});
}

View file

@ -80,7 +80,7 @@ namespace MatterHackers.MatterControl.DesignTools
undoBuffer.AddAndDo(new ReplaceCommand(new[] { this }, new[] { meshOnlyItem }));
}
Invalidate(new InvalidateArgs(this, InvalidateType.Content));
Invalidate(new InvalidateArgs(this, InvalidateType.Children));
}
public LinearExtrudeObject3D()
@ -92,19 +92,21 @@ namespace MatterHackers.MatterControl.DesignTools
{
this.DebugDepth("Invalidate");
if ((eventArgs.InvalidateType == InvalidateType.Path
|| eventArgs.InvalidateType == InvalidateType.Content)
if ((eventArgs.InvalidateType.HasFlag(InvalidateType.Path)
|| eventArgs.InvalidateType.HasFlag(InvalidateType.Children))
&& eventArgs.Source != this
&& !RebuildLocked)
{
await Rebuild();
base.OnInvalidate(new InvalidateArgs(this, InvalidateType.Mesh, eventArgs.UndoBuffer));
}
else if (eventArgs.InvalidateType == InvalidateType.Properties
else if (eventArgs.InvalidateType.HasFlag(InvalidateType.Properties)
&& eventArgs.Source == this)
{
await Rebuild();
base.OnInvalidate(new InvalidateArgs(this, InvalidateType.Mesh, eventArgs.UndoBuffer));
}
else
{
base.OnInvalidate(eventArgs);
}
}

View file

@ -106,6 +106,7 @@ namespace MatterHackers.MatterControl.DesignTools
this.Matrix = oldMatrix;
SourceContainer.Visible = false;
rebuildLock.Dispose();
base.OnInvalidate(new InvalidateArgs(this, InvalidateType.Children));
return Task.CompletedTask;
});
}

View file

@ -130,32 +130,32 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
}
}
Invalidate(new InvalidateArgs(this, InvalidateType.Content, undoBuffer));
Invalidate(new InvalidateArgs(this, InvalidateType.Children));
}
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)
if ((invalidateType.InvalidateType.HasFlag(InvalidateType.Children)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Matrix)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Mesh)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Color)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.OutputType))
&& invalidateType.Source != this
&& !RebuildLocked)
{
await Rebuild();
invalidateType = new InvalidateArgs(this, InvalidateType.Content, invalidateType.UndoBuffer);
}
else if (invalidateType.InvalidateType == InvalidateType.Properties
else if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties)
&& invalidateType.Source == this)
{
await Rebuild();
invalidateType = new InvalidateArgs(this, InvalidateType.Content, invalidateType.UndoBuffer);
}
base.OnInvalidate(invalidateType);
else
{
base.OnInvalidate(invalidateType);
}
}
public override void Remove(UndoBuffer undoBuffer)
@ -188,7 +188,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
}
}
Invalidate(new InvalidateArgs(this, InvalidateType.Content, undoBuffer));
Invalidate(new InvalidateArgs(this, InvalidateType.Children));
}
public void RemoveAllButSource()
@ -239,7 +239,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
// and select this
scene.SelectedItem = this;
this.Invalidate(new InvalidateArgs(this, InvalidateType.Content));
this.Invalidate(new InvalidateArgs(this, InvalidateType.Children));
}
}

View file

@ -58,15 +58,15 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
public override void OnInvalidate(InvalidateArgs invalidateType)
{
if ((invalidateType.InvalidateType == InvalidateType.Content
|| invalidateType.InvalidateType == InvalidateType.Matrix
|| invalidateType.InvalidateType == InvalidateType.Path)
if ((invalidateType.InvalidateType.HasFlag(InvalidateType.Children)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Matrix)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Path))
&& invalidateType.Source != this
&& !RebuildLocked)
{
Rebuild(null);
}
else if (invalidateType.InvalidateType == InvalidateType.Properties
else if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties)
&& invalidateType.Source == this)
{
Rebuild(null);

View file

@ -61,23 +61,23 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
{
this.DebugDepth("Invalidate");
if ((invalidateType.InvalidateType == InvalidateType.Content
|| invalidateType.InvalidateType == InvalidateType.Matrix
|| invalidateType.InvalidateType == InvalidateType.Path)
if ((invalidateType.InvalidateType.HasFlag(InvalidateType.Children)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Matrix)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Path))
&& invalidateType.Source != this
&& !RebuildLocked)
{
await Rebuild();
invalidateType = new InvalidateArgs(this, InvalidateType.Content, invalidateType.UndoBuffer);
}
else if (invalidateType.InvalidateType == InvalidateType.Properties
else if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties)
&& invalidateType.Source == this)
{
await Rebuild();
invalidateType = new InvalidateArgs(this, InvalidateType.Content, invalidateType.UndoBuffer);
}
base.OnInvalidate(invalidateType);
else
{
base.OnInvalidate(invalidateType);
}
}
public override Task Rebuild()
@ -93,7 +93,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
DoSmoothing((long)(SmoothDistance * 1000), Iterations);
rebuildLock.Dispose();
Invalidate(new InvalidateArgs(this, InvalidateType.Path, null));
Invalidate(new InvalidateArgs(this, InvalidateType.Path));
return Task.CompletedTask;
});
}

View file

@ -102,21 +102,23 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
public override void OnInvalidate(InvalidateArgs invalidateArgs)
{
if ((invalidateArgs.InvalidateType == InvalidateType.Content
|| invalidateArgs.InvalidateType == InvalidateType.Matrix
|| invalidateArgs.InvalidateType == InvalidateType.Mesh)
if ((invalidateArgs.InvalidateType.HasFlag(InvalidateType.Children)
|| invalidateArgs.InvalidateType.HasFlag(InvalidateType.Matrix)
|| invalidateArgs.InvalidateType.HasFlag(InvalidateType.Mesh))
&& invalidateArgs.Source != this
&& !RebuildLocked)
{
Rebuild();
}
else if (invalidateArgs.InvalidateType == InvalidateType.Properties
else if (invalidateArgs.InvalidateType.HasFlag(InvalidateType.Properties)
&& invalidateArgs.Source == this)
{
Rebuild();
}
base.OnInvalidate(invalidateArgs);
else
{
base.OnInvalidate(invalidateArgs);
}
}
public override Task Rebuild()
@ -127,7 +129,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
TransformItem.Matrix = RotationMatrix;
}
Invalidate(new InvalidateArgs(this, InvalidateType.Matrix, null));
Invalidate(new InvalidateArgs(this, InvalidateType.Matrix));
return Task.CompletedTask;
}

View file

@ -183,21 +183,23 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
public override void OnInvalidate(InvalidateArgs invalidateArgs)
{
if ((invalidateArgs.InvalidateType == InvalidateType.Content
|| invalidateArgs.InvalidateType == InvalidateType.Matrix
|| invalidateArgs.InvalidateType == InvalidateType.Mesh)
if ((invalidateArgs.InvalidateType.HasFlag(InvalidateType.Children)
|| invalidateArgs.InvalidateType.HasFlag(InvalidateType.Matrix)
|| invalidateArgs.InvalidateType.HasFlag(InvalidateType.Mesh))
&& invalidateArgs.Source != this
&& !RebuildLocked)
{
Rebuild();
}
else if (invalidateArgs.InvalidateType == InvalidateType.Properties
else if (invalidateArgs.InvalidateType.HasFlag(InvalidateType.Properties)
&& invalidateArgs.Source == this)
{
Rebuild();
}
base.OnInvalidate(invalidateArgs);
else
{
base.OnInvalidate(invalidateArgs);
}
}
public override Task Rebuild()
@ -211,7 +213,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
TransformItem.Matrix *= Matrix4X4.CreateTranslation(ScaleAbout);
}
Invalidate(new InvalidateArgs(this, InvalidateType.Matrix, null));
Invalidate(new InvalidateArgs(this, InvalidateType.Matrix));
return Task.CompletedTask;
}

View file

@ -94,7 +94,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
list.AddRange(TransformItem.Children);
});
}
Invalidate(new InvalidateArgs(this, InvalidateType.Content));
Invalidate(new InvalidateArgs(this, InvalidateType.Children));
}
public override void Remove(UndoBuffer undoBuffer)
@ -115,7 +115,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
});
}
Invalidate(new InvalidateArgs(this, InvalidateType.Content));
Invalidate(new InvalidateArgs(this, InvalidateType.Children));
}
public virtual void WrapItem(IObject3D item, UndoBuffer undoBuffer = null)
@ -170,7 +170,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
itemLock?.Dispose();
}
item.Parent?.Invalidate(new InvalidateArgs(item, InvalidateType.Content));
item.Parent?.Invalidate(new InvalidateArgs(item, InvalidateType.Children));
}
}
}

View file

@ -78,21 +78,23 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
public override void OnInvalidate(InvalidateArgs invalidateType)
{
if ((invalidateType.InvalidateType == InvalidateType.Content
|| invalidateType.InvalidateType == InvalidateType.Matrix
|| invalidateType.InvalidateType == InvalidateType.Mesh)
if ((invalidateType.InvalidateType.HasFlag(InvalidateType.Children)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Matrix)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Mesh))
&& invalidateType.Source != this
&& !RebuildLocked)
{
Rebuild();
}
else if (invalidateType.InvalidateType == InvalidateType.Properties
else if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties)
&& invalidateType.Source == this)
{
Rebuild();
}
base.OnInvalidate(invalidateType);
else
{
base.OnInvalidate(invalidateType);
}
}
public override Task Rebuild()
@ -105,7 +107,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
TransformItem.Matrix = Matrix4X4.CreateTranslation(Translation);
}
Invalidate(new InvalidateArgs(this, InvalidateType.Matrix, null));
Invalidate(new InvalidateArgs(this, InvalidateType.Matrix));
return Task.CompletedTask;
}
}

View file

@ -115,16 +115,16 @@ namespace MatterHackers.MatterControl.DesignTools
public override void OnInvalidate(InvalidateArgs invalidateType)
{
if ((invalidateType.InvalidateType == InvalidateType.Content
|| invalidateType.InvalidateType == InvalidateType.Matrix
|| invalidateType.InvalidateType == InvalidateType.Path
|| invalidateType.InvalidateType == InvalidateType.Mesh)
if ((invalidateType.InvalidateType.HasFlag(InvalidateType.Children)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Matrix)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Path)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Mesh))
&& invalidateType.Source != this
&& !RebuildLocked)
{
Rebuild(null);
}
else if (invalidateType.InvalidateType == InvalidateType.Properties
else if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties)
&& invalidateType.Source == this)
{
Rebuild(null);
@ -149,8 +149,8 @@ namespace MatterHackers.MatterControl.DesignTools
this.Children.Modify(list =>
{
list.Clear();
// add back in the sourceContainer
list.Add(firstChild);
// add back in the sourceContainer
list.Add(firstChild);
});
// and create the base

View file

@ -96,7 +96,7 @@ namespace MatterHackers.MatterControl.DesignTools
undoBuffer.AddAndDo(new ReplaceCommand(new[] { this }, newChildren));
}
Invalidate(new InvalidateArgs(this, InvalidateType.Content, undoBuffer));
Invalidate(new InvalidateArgs(this, InvalidateType.Children));
}
public override void Remove(UndoBuffer undoBuffer)
@ -127,7 +127,7 @@ namespace MatterHackers.MatterControl.DesignTools
}
}
parent.Invalidate(new InvalidateArgs(this, InvalidateType.Content, null));
parent.Invalidate(new InvalidateArgs(this, InvalidateType.Children));
}
else
{

View file

@ -63,7 +63,7 @@ namespace MatterHackers.MatterControl.DesignTools
public override void OnInvalidate(InvalidateArgs invalidateType)
{
if (invalidateType.InvalidateType == InvalidateType.Properties
if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties)
&& invalidateType.Source == this)
{
Rebuild(null);

View file

@ -70,7 +70,7 @@ namespace MatterHackers.MatterControl.DesignTools
public override void OnInvalidate(InvalidateArgs invalidateType)
{
if (invalidateType.InvalidateType == InvalidateType.Properties
if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties)
&& invalidateType.Source == this)
{
Rebuild();

View file

@ -121,7 +121,7 @@ namespace MatterHackers.MatterControl.DesignTools
public override void OnInvalidate(InvalidateArgs invalidateType)
{
if (invalidateType.InvalidateType == InvalidateType.Properties
if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties)
&& invalidateType.Source == this)
{
Rebuild(null);

View file

@ -60,7 +60,7 @@ namespace MatterHackers.MatterControl.DesignTools
public override void OnInvalidate(InvalidateArgs invalidateType)
{
if (invalidateType.InvalidateType == InvalidateType.Properties
if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties)
&& invalidateType.Source == this)
{
Rebuild(null);

View file

@ -68,7 +68,7 @@ namespace MatterHackers.MatterControl.DesignTools
public override void OnInvalidate(InvalidateArgs invalidateType)
{
if (invalidateType.InvalidateType == InvalidateType.Properties
if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties)
&& invalidateType.Source == this)
{
Rebuild(null);

View file

@ -60,7 +60,7 @@ namespace MatterHackers.MatterControl.DesignTools
public override void OnInvalidate(InvalidateArgs invalidateType)
{
if (invalidateType.InvalidateType == InvalidateType.Properties
if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties)
&& invalidateType.Source == this)
{
Rebuild(null);

View file

@ -59,7 +59,7 @@ namespace MatterHackers.MatterControl.DesignTools
public override void OnInvalidate(InvalidateArgs invalidateType)
{
if (invalidateType.InvalidateType == InvalidateType.Properties
if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties)
&& invalidateType.Source == this)
{
Rebuild(null);

View file

@ -78,7 +78,7 @@ namespace MatterHackers.MatterControl.DesignTools
public override void OnInvalidate(InvalidateArgs invalidateType)
{
if (invalidateType.InvalidateType == InvalidateType.Properties
if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties)
&& invalidateType.Source == this)
{
Rebuild(null);

View file

@ -73,7 +73,7 @@ namespace MatterHackers.MatterControl.DesignTools
public override void OnInvalidate(InvalidateArgs invalidateType)
{
if (invalidateType.InvalidateType == InvalidateType.Properties
if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties)
&& invalidateType.Source == this)
{
Rebuild(null);

View file

@ -58,7 +58,7 @@ namespace MatterHackers.MatterControl.DesignTools
{
var item = new TextObject3D();
item.Invalidate(new InvalidateArgs(null, InvalidateType.Content, null));
item.Invalidate(new InvalidateArgs(null, InvalidateType.Children));
return item;
}
@ -89,23 +89,23 @@ namespace MatterHackers.MatterControl.DesignTools
public override async void OnInvalidate(InvalidateArgs invalidateType)
{
if ((invalidateType.InvalidateType == InvalidateType.Content
|| invalidateType.InvalidateType == InvalidateType.Matrix
|| invalidateType.InvalidateType == InvalidateType.Mesh)
if ((invalidateType.InvalidateType.HasFlag(InvalidateType.Children)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Matrix)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Mesh))
&& invalidateType.Source != this
&& !RebuildLocked)
{
await Rebuild();
invalidateType = new InvalidateArgs(this, InvalidateType.Content, invalidateType.UndoBuffer);
}
else if (invalidateType.InvalidateType == InvalidateType.Properties
else if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties)
&& invalidateType.Source == this)
{
await Rebuild();
invalidateType = new InvalidateArgs(this, InvalidateType.Content, invalidateType.UndoBuffer);
}
base.OnInvalidate(invalidateType);
else
{
base.OnInvalidate(invalidateType);
}
}
public override Task Rebuild()
@ -153,6 +153,7 @@ namespace MatterHackers.MatterControl.DesignTools
}
rebuildLock.Dispose();
base.OnInvalidate(new InvalidateArgs(this, InvalidateType.Children));
return Task.CompletedTask;
});
}

View file

@ -90,15 +90,15 @@ namespace MatterHackers.MatterControl.DesignTools
public override void OnInvalidate(InvalidateArgs invalidateType)
{
if ((invalidateType.InvalidateType == InvalidateType.Content
|| invalidateType.InvalidateType == InvalidateType.Matrix
|| invalidateType.InvalidateType == InvalidateType.Mesh)
if ((invalidateType.InvalidateType.HasFlag(InvalidateType.Children)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Matrix)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Mesh))
&& invalidateType.Source != this
&& !RebuildLocked)
{
Rebuild(null);
}
else if (invalidateType.InvalidateType == InvalidateType.Properties
else if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties)
&& invalidateType.Source == this)
{
Rebuild(null);
@ -144,7 +144,7 @@ namespace MatterHackers.MatterControl.DesignTools
base.Mesh = null;
}
this.Invalidate(new InvalidateArgs(this, InvalidateType.Content));
this.Invalidate(new InvalidateArgs(this, InvalidateType.Path));
}
public override Mesh Mesh

View file

@ -64,7 +64,7 @@ namespace MatterHackers.MatterControl.DesignTools
public override void OnInvalidate(InvalidateArgs invalidateType)
{
if (invalidateType.InvalidateType == InvalidateType.Properties
if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties)
&& invalidateType.Source == this)
{
Rebuild(null);

View file

@ -61,7 +61,7 @@ namespace MatterHackers.MatterControl.DesignTools
public override void OnInvalidate(InvalidateArgs invalidateType)
{
if (invalidateType.InvalidateType == InvalidateType.Properties
if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties)
&& invalidateType.Source == this)
{
Rebuild(null);

View file

@ -194,7 +194,7 @@ namespace MatterHackers.MatterControl.DesignTools
};
updateButton.Click += (s, e) =>
{
context.item.Invalidate(new InvalidateArgs(context.item, InvalidateType.Properties, undoBuffer));
context.item.Invalidate(new InvalidateArgs(context.item, InvalidateType.Properties));
};
mainContainer.AddChild(updateButton);
}
@ -313,20 +313,20 @@ namespace MatterHackers.MatterControl.DesignTools
undoBuffer.AddAndDo(new UndoRedoActions(() =>
{
property.SetValue(valueFromString(oldValue));
object3D?.Invalidate(new InvalidateArgs(context.item, InvalidateType.Properties, undoBuffer));
object3D?.Invalidate(new InvalidateArgs(context.item, InvalidateType.Properties));
propertyGridModifier?.UpdateControls(new PublicPropertyChange(context, property.PropertyInfo.Name));
},
() =>
{
property.SetValue(valueFromString(newValue));
object3D?.Invalidate(new InvalidateArgs(context.item, InvalidateType.Properties, undoBuffer));
object3D?.Invalidate(new InvalidateArgs(context.item, InvalidateType.Properties));
propertyGridModifier?.UpdateControls(new PublicPropertyChange(context, property.PropertyInfo.Name));
}));
}
else
{
property.SetValue(valueFromString(newValue));
object3D?.Invalidate(new InvalidateArgs(context.item, InvalidateType.Properties, undoBuffer));
object3D?.Invalidate(new InvalidateArgs(context.item, InvalidateType.Properties));
propertyGridModifier?.UpdateControls(new PublicPropertyChange(context, property.PropertyInfo.Name));
}
};
@ -342,7 +342,7 @@ namespace MatterHackers.MatterControl.DesignTools
void RefreshField(object s, InvalidateArgs e)
{
if (e.InvalidateType == InvalidateType.Properties)
if (e.InvalidateType.HasFlag(InvalidateType.Properties))
{
double newValue = (double)property.Value;
if (newValue != field.DoubleValue)
@ -364,7 +364,7 @@ namespace MatterHackers.MatterControl.DesignTools
field.ValueChanged += (s, e) =>
{
property.SetValue(field.Color);
object3D?.Invalidate(new InvalidateArgs(context.item, InvalidateType.Properties, undoBuffer));
object3D?.Invalidate(new InvalidateArgs(context.item, InvalidateType.Properties));
propertyGridModifier?.UpdateControls(new PublicPropertyChange(context, property.PropertyInfo.Name));
};
@ -406,7 +406,7 @@ namespace MatterHackers.MatterControl.DesignTools
field.ValueChanged += (s, e) =>
{
property.SetValue(field.DirectionVector);
object3D?.Invalidate(new InvalidateArgs(context.item, InvalidateType.Properties, undoBuffer));
object3D?.Invalidate(new InvalidateArgs(context.item, InvalidateType.Properties));
propertyGridModifier?.UpdateControls(new PublicPropertyChange(context, property.PropertyInfo.Name));
};
@ -454,7 +454,7 @@ namespace MatterHackers.MatterControl.DesignTools
Normal = field1.DirectionVector.Normal,
Origin = property.Item.Children.First().GetAxisAlignedBoundingBox().Center + field2.Vector3
});
object3D?.Invalidate(new InvalidateArgs(context.item, InvalidateType.Properties, undoBuffer));
object3D?.Invalidate(new InvalidateArgs(context.item, InvalidateType.Properties));
propertyGridModifier?.UpdateControls(new PublicPropertyChange(context, property.PropertyInfo.Name));
};
field2.ValueChanged += (s, e) =>
@ -464,7 +464,7 @@ namespace MatterHackers.MatterControl.DesignTools
Normal = field1.DirectionVector.Normal,
Origin = property.Item.Children.First().GetAxisAlignedBoundingBox().Center + field2.Vector3
});
object3D?.Invalidate(new InvalidateArgs(context.item, InvalidateType.Properties, undoBuffer));
object3D?.Invalidate(new InvalidateArgs(context.item, InvalidateType.Properties));
propertyGridModifier?.UpdateControls(new PublicPropertyChange(context, property.PropertyInfo.Name));
};
@ -530,7 +530,7 @@ namespace MatterHackers.MatterControl.DesignTools
void RefreshField(object s, InvalidateArgs e)
{
if (e.InvalidateType == InvalidateType.Properties)
if (e.InvalidateType.HasFlag(InvalidateType.Properties))
{
int newValue = (int)property.Value;
if (newValue != field.IntValue)
@ -586,7 +586,7 @@ namespace MatterHackers.MatterControl.DesignTools
field.ValueChanged += (s, e) =>
{
property.SetValue(Convert.ToChar(field.Value));
object3D?.Invalidate(new InvalidateArgs(context.item, InvalidateType.Properties, undoBuffer));
object3D?.Invalidate(new InvalidateArgs(context.item, InvalidateType.Properties));
propertyGridModifier?.UpdateControls(new PublicPropertyChange(context, property.PropertyInfo.Name));
};
@ -619,7 +619,7 @@ namespace MatterHackers.MatterControl.DesignTools
field.ValueChanged += (s, e) =>
{
property.SetValue(Enum.Parse(property.PropertyType, field.Value));
object3D?.Invalidate(new InvalidateArgs(context.item, InvalidateType.Properties, undoBuffer));
object3D?.Invalidate(new InvalidateArgs(context.item, InvalidateType.Properties));
propertyGridModifier?.UpdateControls(new PublicPropertyChange(context, property.PropertyInfo.Name));
};

View file

@ -147,7 +147,7 @@ namespace MatterHackers.MatterControl.Library
this.Children.Remove(placeholderItem);
this.Collapse();
this.Invalidate(new InvalidateArgs(this, InvalidateType.Content));
this.Invalidate(new InvalidateArgs(this, InvalidateType.Children));
}));
}

View file

@ -202,7 +202,7 @@ namespace MatterHackers.MatterControl.DesignTools
imageObject.Invalidated += (s, e) =>
{
if (e.InvalidateType == InvalidateType.Image
if (e.InvalidateType.HasFlag(InvalidateType.Image)
&& activeImage != imageObject.Image)
{
thumbnailImage = SetImage(theme, imageObject);

View file

@ -122,7 +122,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.View3D
}
}
Invalidate(new InvalidateArgs(this, InvalidateType.Content, undoBuffer));
Invalidate(new InvalidateArgs(this, InvalidateType.Children));
}
/// <summary>
@ -199,7 +199,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.View3D
}
}
Invalidate(new InvalidateArgs(this, InvalidateType.Content));
Invalidate(new InvalidateArgs(this, InvalidateType.Children));
}
public void ResetMeshWrapperMeshes(Object3DPropertyFlags flags, CancellationToken cancellationToken)
@ -266,7 +266,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.View3D
}
}
Invalidate(new InvalidateArgs(this, InvalidateType.Properties, null));
Invalidate(new InvalidateArgs(this, InvalidateType.Properties));
}
public void WrapItems(List<IObject3D> items)
@ -290,7 +290,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.View3D
this.MakeNameNonColliding();
}
Invalidate(new InvalidateArgs(this, InvalidateType.Properties, null));
Invalidate(new InvalidateArgs(this, InvalidateType.Properties));
}
private void AddMeshWrapperToAllChildren()

View file

@ -49,12 +49,12 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.View3D
var firstChild = this.Children.FirstOrDefault();
if (firstChild != null)
{
if (invalidateType.InvalidateType == InvalidateType.Color)
if (invalidateType.InvalidateType.HasFlag(InvalidateType.Color))
{
this.Color = firstChild.Color;
}
if (invalidateType.InvalidateType == InvalidateType.Material)
if (invalidateType.InvalidateType.HasFlag(InvalidateType.Material))
{
this.MaterialIndex = firstChild.MaterialIndex;
}

View file

@ -57,23 +57,23 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.View3D
public override async void OnInvalidate(InvalidateArgs invalidateType)
{
if ((invalidateType.InvalidateType == InvalidateType.Content
|| invalidateType.InvalidateType == InvalidateType.Matrix
|| invalidateType.InvalidateType == InvalidateType.Mesh)
if ((invalidateType.InvalidateType.HasFlag(InvalidateType.Children)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Matrix)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Mesh))
&& invalidateType.Source != this
&& !RebuildLocked)
{
await Rebuild();
invalidateType = new InvalidateArgs(this, InvalidateType.Content, invalidateType.UndoBuffer);
}
else if (invalidateType.InvalidateType == InvalidateType.Properties
else if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties)
&& invalidateType.Source == this)
{
await Rebuild();
invalidateType = new InvalidateArgs(this, InvalidateType.Content, invalidateType.UndoBuffer);
}
base.OnInvalidate(invalidateType);
else
{
base.OnInvalidate(invalidateType);
}
}
public void SubtractAndReplace()
@ -172,11 +172,8 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.View3D
{
}
UiThread.RunOnIdle(() =>
{
rebuildLocks.Dispose();
base.Invalidate(new InvalidateArgs(this, InvalidateType.Content));
});
rebuildLocks.Dispose();
base.Invalidate(new InvalidateArgs(this, InvalidateType.Children));
return Task.CompletedTask;
});

View file

@ -131,20 +131,18 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.View3D
public override async void OnInvalidate(InvalidateArgs invalidateType)
{
if ((invalidateType.InvalidateType == InvalidateType.Content
|| invalidateType.InvalidateType == InvalidateType.Matrix
|| invalidateType.InvalidateType == InvalidateType.Mesh)
if ((invalidateType.InvalidateType.HasFlag(InvalidateType.Children)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Matrix)
|| invalidateType.InvalidateType.HasFlag(InvalidateType.Mesh))
&& invalidateType.Source != this
&& !RebuildLocked)
{
await Rebuild();
invalidateType = new InvalidateArgs(this, InvalidateType.Content, invalidateType.UndoBuffer);
}
else if (invalidateType.InvalidateType == InvalidateType.Properties
else if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties)
&& invalidateType.Source == this)
{
await Rebuild();
invalidateType = new InvalidateArgs(this, InvalidateType.Content, invalidateType.UndoBuffer);
}
base.OnInvalidate(invalidateType);
@ -172,11 +170,8 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.View3D
{
}
UiThread.RunOnIdle(() =>
{
rebuildLocks.Dispose();
base.Invalidate(new InvalidateArgs(this, InvalidateType.Content));
});
rebuildLocks.Dispose();
base.Invalidate(new InvalidateArgs(this, InvalidateType.Children));
return Task.CompletedTask;
});

View file

@ -75,7 +75,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
scene.SelectLastChild();
scene.Invalidate(new InvalidateArgs(null, InvalidateType.Content));
scene.Invalidate(new InvalidateArgs(null, InvalidateType.Children));
}
public void Undo()
@ -95,7 +95,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
scene.AddToSelection(item);
}
scene.Invalidate(new InvalidateArgs(null, InvalidateType.Content));
scene.Invalidate(new InvalidateArgs(null, InvalidateType.Children));
}
}
}

View file

@ -67,7 +67,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
scene.AddToSelection(item);
}
scene.Invalidate(new InvalidateArgs(null, InvalidateType.Content));
scene.Invalidate(new InvalidateArgs(null, InvalidateType.Children));
}
public void Undo()
@ -86,7 +86,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
scene.SelectedItem = null;
}
scene.Invalidate(new InvalidateArgs(null, InvalidateType.Content));
scene.Invalidate(new InvalidateArgs(null, InvalidateType.Children));
}
}
}

View file

@ -68,7 +68,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
});
scene.SelectLastChild();
scene.Invalidate(new InvalidateArgs(null, InvalidateType.Content));
scene.Invalidate(new InvalidateArgs(null, InvalidateType.Children));
}
public void Undo()
@ -93,7 +93,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
});
scene.SelectLastChild();
scene.Invalidate(new InvalidateArgs(null, InvalidateType.Content));
scene.Invalidate(new InvalidateArgs(null, InvalidateType.Children));
}
}
}

View file

@ -1069,7 +1069,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
this.deferEditorTillMouseUp = false;
Scene_SelectionChanged(null, null);
Scene.Invalidate(new InvalidateArgs(null, InvalidateType.Content, null));
Scene.Invalidate(new InvalidateArgs(null, InvalidateType.Children));
// Set focus to View3DWidget after drag-drop
UiThread.RunOnIdle(this.Focus);
@ -1886,14 +1886,14 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
private void Scene_Invalidated(object sender, InvalidateArgs e)
{
if (e.InvalidateType == InvalidateType.Content
if (e.InvalidateType.HasFlag(InvalidateType.Children)
&& !rebuildTreePending)
{
rebuildTreePending = true;
UiThread.RunOnIdle(this.RebuildTree);
}
if (e.InvalidateType == InvalidateType.Name)
if (e.InvalidateType.HasFlag(InvalidateType.Name))
{
// clear and restore the selection so we have the name change
var lastSelectedItem = Scene.SelectedItem;

View file

@ -815,7 +815,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
}
}
scene.Invalidate(new InvalidateArgs(null, InvalidateType.Content, null));
scene.Invalidate(new InvalidateArgs(null, InvalidateType.Children));
}
}

@ -1 +1 @@
Subproject commit a1e536bd0d14cd92af62cf3bdc90f9a53d4c1cff
Subproject commit 41050ad01f14621325efb3b56541f6e1a3c80deb

View file

@ -539,7 +539,7 @@ namespace MatterControl.Tests.MatterControl
AppContext.Platform = AggContext.CreateInstanceFrom<INativePlatformFeatures>(platformFeaturesProvider);
AppContext.Platform.ProcessCommandline();
//DoAabbCalculatedCorrectlyForCurvedFitObjects();
DoAabbCalculatedCorrectlyForCurvedFitObjects();
}
public async void DoAabbCalculatedCorrectlyForCurvedFitObjects()