Changing to await able create methods

issue: MatterHackers/MCCentral#4966
async Rebuild calls must be awaited in Create methods
This commit is contained in:
Lars Brubaker 2019-03-04 14:00:52 -08:00
parent 457e31ef10
commit a055192700
18 changed files with 88 additions and 86 deletions

View file

@ -124,7 +124,7 @@ namespace MatterHackers.MatterControl.DesignTools
basePlate = new SetCenterObject3D(basePlate, brailleLetter.GetCenter(), true, false, false);
this.Children.Add(basePlate);
IObject3D underline = CubeObject3D.Create(basePlate.XSize(), .2, 1);
IObject3D underline = await CubeObject3D.Create(basePlate.XSize(), .2, 1);
underline = new AlignObject3D(underline, FaceAlign.Bottom, brailleLetter, FaceAlign.Top);
underline = new AlignObject3D(underline, FaceAlign.Back | FaceAlign.Left, basePlate, FaceAlign.Front | FaceAlign.Left, 0, .01);
this.Children.Add(underline);

View file

@ -59,11 +59,11 @@ namespace MatterHackers.MatterControl.DesignTools
Rebuild();
}
public static BrailleObject3D Create()
public static async Task<BrailleObject3D> Create()
{
var item = new BrailleObject3D();
item.Rebuild();
await item.Rebuild();
return item;
}

View file

@ -148,7 +148,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
}
}
public static FitToBoundsObject3D Create(IObject3D itemToFit)
public static async Task<FitToBoundsObject3D> Create(IObject3D itemToFit)
{
FitToBoundsObject3D fitToBounds = new FitToBoundsObject3D();
var aabb = itemToFit.GetAxisAlignedBoundingBox();
@ -163,6 +163,8 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
fitToBounds.Children.Add(scaleItem);
scaleItem.Children.Add(itemToFit);
await fitToBounds.Rebuild();
return fitToBounds;
}

View file

@ -31,11 +31,9 @@ using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using MatterHackers.Agg.UI;
using MatterHackers.DataConverters3D;
using MatterHackers.MatterControl.PartPreviewWindow.View3D;
using MatterHackers.VectorMath;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;

View file

@ -58,7 +58,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
}
}
public static TranslateObject3D Create(IObject3D itemToTranslate)
public static async Task<TranslateObject3D> Create(IObject3D itemToTranslate)
{
var translate = new TranslateObject3D();
var aabb = itemToTranslate.GetAxisAlignedBoundingBox();
@ -67,6 +67,8 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
translate.Children.Add(translateItem);
translateItem.Children.Add(itemToTranslate);
await translate.Rebuild();
return translate;
}

View file

@ -49,14 +49,14 @@ namespace MatterHackers.MatterControl.DesignTools
public double Depth { get; set; } = 20;
public double Height { get; set; } = 20;
public static CubeObject3D Create()
public static async Task<CubeObject3D> Create()
{
var item = new CubeObject3D();
item.Rebuild();
await item.Rebuild();
return item;
}
public static CubeObject3D Create(double x, double y, double z)
public static async Task<CubeObject3D> Create(double x, double y, double z)
{
var item = new CubeObject3D()
{
@ -65,7 +65,7 @@ namespace MatterHackers.MatterControl.DesignTools
Height = z,
};
item.Rebuild();
await item.Rebuild();
return item;
}

View file

@ -57,17 +57,17 @@ namespace MatterHackers.MatterControl.DesignTools
Rebuild();
}
public static CylinderObject3D Create(double diameter, double height, int sides, Alignment alignment = Alignment.Z)
public static async Task<CylinderObject3D> Create(double diameter, double height, int sides, Alignment alignment = Alignment.Z)
{
if (alignment == Alignment.Z)
{
return new CylinderObject3D(diameter, height, sides);
}
return Create(diameter, diameter, height, sides, alignment);
return await Create(diameter, diameter, height, sides, alignment);
}
public static CylinderObject3D Create(double diameterBottom, double diameterTop, double height, int sides, Alignment alignment = Alignment.Z)
public static async Task<CylinderObject3D> Create(double diameterBottom, double diameterTop, double height, int sides, Alignment alignment = Alignment.Z)
{
var item = new CylinderObject3D()
{
@ -78,7 +78,7 @@ namespace MatterHackers.MatterControl.DesignTools
Sides = sides,
};
item.Rebuild();
await item.Rebuild();
switch (alignment)
{
case Alignment.X:
@ -103,11 +103,11 @@ namespace MatterHackers.MatterControl.DesignTools
return item;
}
public static CylinderObject3D Create()
public static async Task<CylinderObject3D> Create()
{
var item = new CylinderObject3D();
item.Rebuild();
await item.Rebuild();
return item;
}

View file

@ -45,11 +45,11 @@ namespace MatterHackers.MatterControl.DesignTools
Color = Operations.Object3DExtensions.PrimitiveColors["HalfCylinder"];
}
public static HalfCylinderObject3D Create()
public static async Task<HalfCylinderObject3D> Create()
{
var item = new HalfCylinderObject3D();
item.Rebuild();
await item.Rebuild();
return item;
}

View file

@ -53,11 +53,11 @@ namespace MatterHackers.MatterControl.DesignTools
Rebuild();
}
public static HalfSphereObject3D Create()
public static async Task<HalfSphereObject3D> Create()
{
var item = new HalfSphereObject3D();
item.Rebuild();
await item.Rebuild();
return item;
}

View file

@ -43,11 +43,11 @@ namespace MatterHackers.MatterControl.DesignTools
Color = Operations.Object3DExtensions.PrimitiveColors["HalfWedge"];
}
public static HalfWedgeObject3D Create()
public static async Task<HalfWedgeObject3D> Create()
{
var item = new HalfWedgeObject3D();
item.Rebuild();
await item.Rebuild();
return item;
}

View file

@ -44,11 +44,11 @@ namespace MatterHackers.MatterControl.DesignTools
Color = Operations.Object3DExtensions.PrimitiveColors["Pyramid"];
}
public static PyramidObject3D Create()
public static async Task<PyramidObject3D> Create()
{
var item = new PyramidObject3D();
item.Rebuild();
await item.Rebuild();
return item;
}

View file

@ -56,11 +56,11 @@ namespace MatterHackers.MatterControl.DesignTools
Rebuild();
}
public static RingObject3D Create()
public static async Task<RingObject3D> Create()
{
var item = new RingObject3D();
item.Rebuild();
await item.Rebuild();
return item;
}

View file

@ -54,11 +54,11 @@ namespace MatterHackers.MatterControl.DesignTools
Rebuild();
}
public static SphereObject3D Create()
public static async Task<SphereObject3D> Create()
{
var item = new SphereObject3D();
item.Rebuild();
await item.Rebuild();
return item;
}

View file

@ -55,11 +55,11 @@ namespace MatterHackers.MatterControl.DesignTools
Color = Operations.Object3DExtensions.PrimitiveColors["Text"];
}
public static TextPathObject3D Create()
public static async Task<TextPathObject3D> Create()
{
var item = new TextPathObject3D();
item.Rebuild();
await item.Rebuild();
return item;
}

View file

@ -45,10 +45,10 @@ namespace MatterHackers.MatterControl.DesignTools
Color = Operations.Object3DExtensions.PrimitiveColors["Torus"];
}
public static TorusObject3D Create()
public static async Task<TorusObject3D> Create()
{
var item = new TorusObject3D();
item.Rebuild();
await item.Rebuild();
return item;
}

View file

@ -43,11 +43,11 @@ namespace MatterHackers.MatterControl.DesignTools
Color = Operations.Object3DExtensions.PrimitiveColors["Wedge"];
}
public static WedgeObject3D Create()
public static async Task<WedgeObject3D> Create()
{
var item = new WedgeObject3D();
item.Rebuild();
await item.Rebuild();
return item;
}

View file

@ -54,19 +54,19 @@ namespace MatterHackers.MatterControl.Library
{
new GeneratorItem(
() => "Cube".Localize(),
() => Task.FromResult<IObject3D>(CubeObject3D.Create()))
async () => await CubeObject3D.Create())
{ DateCreated = new System.DateTime(index++) },
new GeneratorItem(
() => "Pyramid".Localize(),
() => Task.FromResult<IObject3D>(PyramidObject3D.Create()))
async () => await PyramidObject3D.Create())
{ DateCreated = new System.DateTime(index++) },
new GeneratorItem(
() => "Wedge".Localize(),
() => Task.FromResult<IObject3D>(WedgeObject3D.Create()))
async () => await WedgeObject3D.Create())
{ DateCreated = new System.DateTime(index++) },
new GeneratorItem(
() => "Half Wedge".Localize(),
() => Task.FromResult<IObject3D>(HalfWedgeObject3D.Create()))
async () => await HalfWedgeObject3D.Create())
{ DateCreated = new System.DateTime(index++) },
new GeneratorItem(
() => "Text".Localize(),
@ -75,12 +75,12 @@ namespace MatterHackers.MatterControl.Library
#if DEBUG
new GeneratorItem(
() => "Text".Localize(),
() => Task.FromResult<IObject3D>(TextPathObject3D.Create()))
async () => await TextPathObject3D.Create())
{ DateCreated = new System.DateTime(index++) },
#endif
new GeneratorItem(
() => "Cylinder".Localize(),
() => Task.FromResult<IObject3D>(CylinderObject3D.Create()))
async () => await CylinderObject3D.Create())
{ DateCreated = new System.DateTime(index++) },
new GeneratorItem(
() => "Cone".Localize(),
@ -88,23 +88,23 @@ namespace MatterHackers.MatterControl.Library
{ DateCreated = new System.DateTime(index++) },
new GeneratorItem(
() => "Half Cylinder".Localize(),
() => Task.FromResult<IObject3D>(HalfCylinderObject3D.Create()))
async () => await HalfCylinderObject3D.Create())
{ DateCreated = new System.DateTime(index++) },
new GeneratorItem(
() => "Torus".Localize(),
() => Task.FromResult<IObject3D>(TorusObject3D.Create()))
async () => await TorusObject3D.Create())
{ DateCreated = new System.DateTime(index++) },
new GeneratorItem(
() => "Ring".Localize(),
() => Task.FromResult<IObject3D>(RingObject3D.Create()))
async () => await RingObject3D.Create())
{ DateCreated = new System.DateTime(index++) },
new GeneratorItem(
() => "Sphere".Localize(),
() => Task.FromResult<IObject3D>(SphereObject3D.Create()))
async () => await SphereObject3D.Create())
{ DateCreated = new System.DateTime(index++) },
new GeneratorItem(
() => "Half Sphere".Localize(),
() => Task.FromResult<IObject3D>(HalfSphereObject3D.Create()))
async () => await HalfSphereObject3D.Create())
{ DateCreated = new System.DateTime(index++) },
new GeneratorItem(
() => "Image Converter".Localize(),

View file

@ -47,13 +47,13 @@ namespace MatterControl.Tests.MatterControl
public class InteractiveSceneTests
{
[Test, Category("InteractiveScene")]
public void CombineTests()
public async Task CombineTests()
{
// Combine has correct results
{
var root = new Object3D();
var cubeA = CubeObject3D.Create(20, 20, 20);
var cubeB = CubeObject3D.Create(20, 20, 20);
var cubeA = await CubeObject3D.Create(20, 20, 20);
var cubeB = await CubeObject3D.Create(20, 20, 20);
var offsetCubeB = new TranslateObject3D(cubeB, 10);
Assert.IsTrue(offsetCubeB.GetAxisAlignedBoundingBox().Equals(new AxisAlignedBoundingBox(
0, -10, -10,
@ -89,8 +89,8 @@ namespace MatterControl.Tests.MatterControl
// Combine has correct results when inner content is changed
{
var root = new Object3D();
var cubeA = CubeObject3D.Create(20, 20, 20);
var cubeB = CubeObject3D.Create(20, 20, 20);
var cubeA = await CubeObject3D.Create(20, 20, 20);
var cubeB = await CubeObject3D.Create(20, 20, 20);
var union = new CombineObject3D_2();
union.Children.Add(cubeA);
@ -118,8 +118,8 @@ namespace MatterControl.Tests.MatterControl
// now make sure undo has the right results for flatten
{
var root = new Object3D();
var cubeA = CubeObject3D.Create(20, 20, 20);
var cubeB = CubeObject3D.Create(20, 20, 20);
var cubeA = await CubeObject3D.Create(20, 20, 20);
var cubeB = await CubeObject3D.Create(20, 20, 20);
var offsetCubeB = new TranslateObject3D(cubeB, 10);
var combine = new CombineObject3D_2();
@ -152,9 +152,9 @@ namespace MatterControl.Tests.MatterControl
// now make sure undo has the right results for remove
{
var root = new Object3D();
var cubeA = CubeObject3D.Create(20, 20, 20);
var cubeA = await CubeObject3D.Create(20, 20, 20);
cubeA.Name = "cubeA";
var cubeB = CubeObject3D.Create(20, 20, 20);
var cubeB = await CubeObject3D.Create(20, 20, 20);
cubeB.Name = "cubeB";
var combine = new CombineObject3D_2();
@ -186,8 +186,8 @@ namespace MatterControl.Tests.MatterControl
// now make sure undo has the right results for remove
{
var root = new Object3D();
var cubeA = CubeObject3D.Create(20, 20, 20);
var cubeB = CubeObject3D.Create(20, 20, 20);
var cubeA = await CubeObject3D.Create(20, 20, 20);
var cubeB = await CubeObject3D.Create(20, 20, 20);
var offsetCubeB = new TranslateObject3D(cubeB, 10);
var combine = new CombineObject3D_2();
@ -218,8 +218,8 @@ namespace MatterControl.Tests.MatterControl
// make sure the MatterCAD add function is working
{
var cubeA = CubeObject3D.Create(20, 20, 20);
var cubeB = CubeObject3D.Create(20, 20, 20);
var cubeA = await CubeObject3D.Create(20, 20, 20);
var cubeB = await CubeObject3D.Create(20, 20, 20);
var offsetCubeB = new TranslateObject3D(cubeB, 10);
var plus = cubeA.Plus(offsetCubeB, true);
@ -235,8 +235,8 @@ namespace MatterControl.Tests.MatterControl
// test single object combine
{
var root = new Object3D();
var cubeA = CubeObject3D.Create(20, 20, 20);
var cubeB = CubeObject3D.Create(20, 20, 20);
var cubeA = await CubeObject3D.Create(20, 20, 20);
var cubeB = await CubeObject3D.Create(20, 20, 20);
var offsetCubeB = new TranslateObject3D(cubeB, 10);
var group = new Object3D();
@ -264,13 +264,13 @@ namespace MatterControl.Tests.MatterControl
[Test, Category("InteractiveScene")]
public void SubtractTests()
public async Task SubtractTests()
{
// Subtract has correct number of results
{
var root = new Object3D();
var cubeA = CubeObject3D.Create(20, 20, 20);
var cubeB = CubeObject3D.Create(20, 20, 20);
var cubeA = await CubeObject3D.Create(20, 20, 20);
var cubeB = await CubeObject3D.Create(20, 20, 20);
var offsetCubeB = new TranslateObject3D(cubeB, 10);
var subtract = new SubtractObject3D();
@ -291,8 +291,8 @@ namespace MatterControl.Tests.MatterControl
// make sure the MatterCAD subtract function is working
{
var cubeA = CubeObject3D.Create(20, 20, 20);
var cubeB = CubeObject3D.Create(20, 20, 20);
var cubeA = await CubeObject3D.Create(20, 20, 20);
var cubeB = await CubeObject3D.Create(20, 20, 20);
var offsetCubeB = new TranslateObject3D(cubeB, 10);
var subtract = cubeA.Minus(offsetCubeB);
@ -321,11 +321,11 @@ namespace MatterControl.Tests.MatterControl
// build without pinch
{
var root = new Object3D();
var cube = CubeObject3D.Create(20, 20, 20);
var cube = await CubeObject3D.Create(20, 20, 20);
root.Children.Add(cube);
Assert.IsTrue(root.GetAxisAlignedBoundingBox().Equals(new AxisAlignedBoundingBox(new Vector3(-10, -10, -10), new Vector3(10, 10, 10)), .001));
root.Children.Remove(cube);
var fit = FitToBoundsObject3D_2.Create(cube).Result;
var fit = await FitToBoundsObject3D_2.Create(cube);
fit.SizeX = 50;
fit.SizeY = 20;
@ -338,8 +338,8 @@ namespace MatterControl.Tests.MatterControl
// build with pinch
{
var root = new Object3D();
var cube = CubeObject3D.Create(20, 20, 20);
var fit = FitToBoundsObject3D_2.Create(cube).Result;
var cube = await CubeObject3D.Create(20, 20, 20);
var fit = await FitToBoundsObject3D_2.Create(cube);
fit.SizeX = 50;
fit.SizeY = 20;
@ -356,7 +356,7 @@ namespace MatterControl.Tests.MatterControl
// build with translate
{
var root = new Object3D();
var cube = CubeObject3D.Create(20, 20, 20);
var cube = await CubeObject3D.Create(20, 20, 20);
var translate = new TranslateObject3D(cube, 11, 0, 0);
@ -368,7 +368,7 @@ namespace MatterControl.Tests.MatterControl
// build with pinch and translate
{
var root = new Object3D();
var cube = CubeObject3D.Create(20, 20, 20);
var cube = await CubeObject3D.Create(20, 20, 20);
var translate = new TranslateObject3D(cube, 11, 0, 0);
@ -383,8 +383,8 @@ namespace MatterControl.Tests.MatterControl
// build with pinch and translate
{
var root = new Object3D();
var cube = CubeObject3D.Create(20, 20, 20);
var fit = FitToBoundsObject3D_2.Create(cube).Result;
var cube = await CubeObject3D.Create(20, 20, 20);
var fit = await FitToBoundsObject3D_2.Create(cube);
fit.SizeX = 50;
fit.SizeY = 20;
@ -402,13 +402,13 @@ namespace MatterControl.Tests.MatterControl
}
[Test, Category("InteractiveScene")]
public void ScaleObjectMantainsCorrectAabb()
public async Task ScaleObjectMantainsCorrectAabb()
{
// build cube with scale and undo
{
// create a simple cube with translation
var root = new Object3D();
var cube = CubeObject3D.Create(20, 20, 20);
var cube = await CubeObject3D.Create(20, 20, 20);
cube.Matrix = Matrix4X4.CreateTranslation(50, 60, 10);
root.Children.Add(cube);
Assert.AreEqual(2, root.DescendantsAndSelf().Count());
@ -434,7 +434,7 @@ namespace MatterControl.Tests.MatterControl
{
// create a simple cube with translation
var root = new Object3D();
var cube = CubeObject3D.Create(20, 20, 20);
var cube = await CubeObject3D.Create(20, 20, 20);
cube.Matrix = Matrix4X4.CreateTranslation(50, 60, 10);
root.Children.Add(cube);
Assert.AreEqual(2, root.DescendantsAndSelf().Count());
@ -455,12 +455,12 @@ namespace MatterControl.Tests.MatterControl
}
[Test, Category("InteractiveScene")]
public void ScaleAndRotateMantainsCorrectAabb()
public async Task ScaleAndRotateMantainsCorrectAabb()
{
{
// create a simple cube with translation
var root = new Object3D();
var cube = CubeObject3D.Create(20, 20, 20);
var cube = await CubeObject3D.Create(20, 20, 20);
cube.Matrix = Matrix4X4.CreateTranslation(50, 60, 10);
root.Children.Add(cube);
Assert.AreEqual(2, root.DescendantsAndSelf().Count());
@ -490,12 +490,12 @@ namespace MatterControl.Tests.MatterControl
}
[Test, Category("InteractiveScene")]
public void RotateMantainsCorrectAabb()
public async Task RotateMantainsCorrectAabb()
{
{
// create a simple cube with translation
var root = new Object3D();
var cube = CubeObject3D.Create(20, 20, 20);
var cube = await CubeObject3D.Create(20, 20, 20);
cube.Matrix = Matrix4X4.CreateTranslation(50, 60, 10);
root.Children.Add(cube);
Assert.AreEqual(2, root.DescendantsAndSelf().Count());
@ -527,8 +527,8 @@ namespace MatterControl.Tests.MatterControl
AppContext.Platform.ProcessCommandline();
var root = new Object3D();
var cube = CubeObject3D.Create(20, 20, 20);
var fit = FitToBoundsObject3D_2.Create(cube).Result;
var cube = await CubeObject3D.Create(20, 20, 20);
var fit = await FitToBoundsObject3D_2.Create(cube);
fit.SizeX = 10;
fit.SizeY = 10;
@ -536,7 +536,7 @@ namespace MatterControl.Tests.MatterControl
Assert.IsTrue(fit.GetAxisAlignedBoundingBox().Equals(new AxisAlignedBoundingBox(new Vector3(-5, -5, -10), new Vector3(5, 5, -4)), .01));
var bigCube = CubeObject3D.Create(20, 20, 20);
var bigCube = await CubeObject3D.Create(20, 20, 20);
Assert.IsTrue(bigCube.GetAxisAlignedBoundingBox().Equals(new AxisAlignedBoundingBox(new Vector3(-10, -10, -10), new Vector3(10, 10, 10)), .01));
@ -575,8 +575,8 @@ namespace MatterControl.Tests.MatterControl
AppContext.Platform.ProcessCommandline();
var root = new Object3D();
var cube = CubeObject3D.Create(20, 20, 20);
var fit = FitToBoundsObject3D_2.Create(cube).Result;
var cube = await CubeObject3D.Create(20, 20, 20);
var fit = await FitToBoundsObject3D_2.Create(cube);
fit.SizeX = 50;
fit.SizeY = 20;