From 511cb45b6f367b2b842050c98abd8f1ea271b139 Mon Sep 17 00:00:00 2001 From: Michael Smith Date: Sun, 21 Feb 2016 20:08:17 -0800 Subject: [PATCH] + Removed Mimic, because it doesn't really make sense with the new Position() and Bounds() features --- .../OSCADSharp.UnitTests/OSCADObjectTests.cs | 39 +------------------ OSCADSharp/OSCADSharp/OSCADObject.cs | 28 +------------ OSCADSharp/OSCADSharp/OSCADSharp.csproj | 1 - .../OSCADSharp/Transforms/ColoredObject.cs | 9 +---- OSCADSharp/OSCADSharp/Transforms/IMimicer.cs | 13 ------- .../OSCADSharp/Transforms/MirroredObject.cs | 7 +--- .../OSCADSharp/Transforms/ResizedObject.cs | 9 +---- .../OSCADSharp/Transforms/RotatedObject.cs | 9 +---- .../OSCADSharp/Transforms/ScaledObject.cs | 9 +---- .../OSCADSharp/Transforms/TranslatedObject.cs | 9 +---- 10 files changed, 13 insertions(+), 120 deletions(-) delete mode 100644 OSCADSharp/OSCADSharp/Transforms/IMimicer.cs diff --git a/OSCADSharp/OSCADSharp.UnitTests/OSCADObjectTests.cs b/OSCADSharp/OSCADSharp.UnitTests/OSCADObjectTests.cs index 975a761..717c52c 100644 --- a/OSCADSharp/OSCADSharp.UnitTests/OSCADObjectTests.cs +++ b/OSCADSharp/OSCADSharp.UnitTests/OSCADObjectTests.cs @@ -43,44 +43,7 @@ namespace OSCADSharp.UnitTests //But the child should be a different instance Assert.IsFalse(clone.Children().FirstOrDefault() == text.Children().FirstOrDefault()); } - - [TestMethod] - public void OSCADObject_MimickedObjectHasSameTransform() - { - var cube = new Cube(null, true).Translate(10, 0, 5); - var sphere = new Sphere().Mimic(cube); - - Assert.IsTrue(sphere.GetType() == cube.GetType()); - Assert.IsTrue(cube.ToString().StartsWith("translate(")); - Assert.IsTrue(sphere.ToString().StartsWith("translate(")); - } - - [TestMethod] - public void OSCADObject_MimicTakesMultipleTransformsFromObject() - { - var cube = new Cube(null, true) - .Translate(10, 0, 5).Rotate(0, 30, 0).Scale(1, 1.5, 1); - var sphere = new Sphere().Mimic(cube); - - - Assert.IsTrue(sphere.GetType() == cube.GetType()); - var mimicedChildren = sphere.Children(); - - Assert.IsTrue(mimicedChildren.ElementAt(0).ToString().StartsWith("rotate(")); - Assert.IsTrue(mimicedChildren.ElementAt(1).ToString().StartsWith("translate(")); - Assert.IsTrue(mimicedChildren.ElementAt(2).ToString().StartsWith("sphere(")); - } - - [TestMethod] - public void OSCADObject_MimicDoesNothingOnObjectWithNoTransforms() - { - var cube = new Cube(null, true); - var sphere = new Sphere().Mimic(cube); - - Assert.IsFalse(sphere.GetType() == cube.GetType()); - Assert.AreEqual(0, sphere.Children().Count()); - } - + [TestMethod] public void OSCADObject_IdsAreSequentialAndDistinct() { diff --git a/OSCADSharp/OSCADSharp/OSCADObject.cs b/OSCADSharp/OSCADSharp/OSCADObject.cs index 7d70590..5daa886 100644 --- a/OSCADSharp/OSCADSharp/OSCADObject.cs +++ b/OSCADSharp/OSCADSharp/OSCADObject.cs @@ -302,33 +302,7 @@ namespace OSCADSharp { return this.Children().Where(predicate); } - - /// - /// Copies the transforms that have been applied to another OSCADObject, and applies - /// the same transforms to this object. (Only pure transforms, like Translate, Rotate, Scale, Color) - /// - /// - /// - public OSCADObject Mimic(OSCADObject other) - { - OSCADObject finalObject = this; - - Stack toTraverse = new Stack(); - toTraverse.Push(other); - other.Children().ToList().ForEach(child => toTraverse.Push(child)); - - while(toTraverse.Count > 0) - { - var current = toTraverse.Pop() as IMimic; - if(current != null) - { - finalObject = current.MimicObject(finalObject); - } - } - - return finalObject; - } - + /// /// Writes the script for this OSCADObject to the file specified /// diff --git a/OSCADSharp/OSCADSharp/OSCADSharp.csproj b/OSCADSharp/OSCADSharp/OSCADSharp.csproj index 17885d9..23a88dd 100644 --- a/OSCADSharp/OSCADSharp/OSCADSharp.csproj +++ b/OSCADSharp/OSCADSharp/OSCADSharp.csproj @@ -47,7 +47,6 @@ - diff --git a/OSCADSharp/OSCADSharp/Transforms/ColoredObject.cs b/OSCADSharp/OSCADSharp/Transforms/ColoredObject.cs index e0e2e26..1d57142 100644 --- a/OSCADSharp/OSCADSharp/Transforms/ColoredObject.cs +++ b/OSCADSharp/OSCADSharp/Transforms/ColoredObject.cs @@ -11,7 +11,7 @@ namespace OSCADSharp.Transforms /// /// An object that has color and/or opacity applied to it /// - internal class ColoredObject : OSCADObject, IMimic + internal class ColoredObject : OSCADObject { #region Attributes internal string ColorName { get; set; } = "Yellow"; @@ -49,12 +49,7 @@ namespace OSCADSharp.Transforms Name = this.Name }; } - - public OSCADObject MimicObject(OSCADObject obj) - { - return new ColoredObject(obj, this.ColorName, this.Opacity); - } - + public override Vector3 Position() { return this.obj.Position(); diff --git a/OSCADSharp/OSCADSharp/Transforms/IMimicer.cs b/OSCADSharp/OSCADSharp/Transforms/IMimicer.cs deleted file mode 100644 index afaeb4c..0000000 --- a/OSCADSharp/OSCADSharp/Transforms/IMimicer.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace OSCADSharp.Transforms -{ - internal interface IMimic - { - OSCADObject MimicObject(OSCADObject obj); - } -} diff --git a/OSCADSharp/OSCADSharp/Transforms/MirroredObject.cs b/OSCADSharp/OSCADSharp/Transforms/MirroredObject.cs index 8b555da..68796d2 100644 --- a/OSCADSharp/OSCADSharp/Transforms/MirroredObject.cs +++ b/OSCADSharp/OSCADSharp/Transforms/MirroredObject.cs @@ -11,7 +11,7 @@ namespace OSCADSharp.Transforms /// /// An object that's mirrored on a plane /// - internal class MirroredObject : OSCADObject, IMimic + internal class MirroredObject : OSCADObject { /// /// The normal vector of a plane intersecting the origin of the object, @@ -49,11 +49,6 @@ namespace OSCADSharp.Transforms }; } - public OSCADObject MimicObject(OSCADObject obj) - { - return new MirroredObject(obj, this.Normal); - } - // TODO: This will yield incorrect positions if mirroring on multiple axes // fix mirrored positions for multiple-axis mirroring public override Vector3 Position() diff --git a/OSCADSharp/OSCADSharp/Transforms/ResizedObject.cs b/OSCADSharp/OSCADSharp/Transforms/ResizedObject.cs index fb6b361..b185896 100644 --- a/OSCADSharp/OSCADSharp/Transforms/ResizedObject.cs +++ b/OSCADSharp/OSCADSharp/Transforms/ResizedObject.cs @@ -11,7 +11,7 @@ namespace OSCADSharp.Transforms /// /// An object that's been resized to a specified set of X/Y/Z dimensions /// - internal class ResizedObject : OSCADObject, IMimic + internal class ResizedObject : OSCADObject { /// /// Size of the object in terms of X/Y/Z @@ -47,12 +47,7 @@ namespace OSCADSharp.Transforms Name = this.Name }; } - - public OSCADObject MimicObject(OSCADObject obj) - { - return new ResizedObject(obj, this.Size); - } - + public override Vector3 Position() { throw new NotSupportedException("Position is not supported on Resized objects."); diff --git a/OSCADSharp/OSCADSharp/Transforms/RotatedObject.cs b/OSCADSharp/OSCADSharp/Transforms/RotatedObject.cs index 88c73d4..460123d 100644 --- a/OSCADSharp/OSCADSharp/Transforms/RotatedObject.cs +++ b/OSCADSharp/OSCADSharp/Transforms/RotatedObject.cs @@ -11,7 +11,7 @@ namespace OSCADSharp.Transforms /// /// An object with rotation applied /// - internal class RotatedObject : OSCADObject, IMimic + internal class RotatedObject : OSCADObject { /// /// The angle to rotate, in terms of X/Y/Z euler angles @@ -47,12 +47,7 @@ namespace OSCADSharp.Transforms Name = this.Name }; } - - public OSCADObject MimicObject(OSCADObject obj) - { - return new RotatedObject(obj, this.Angle); - } - + public override Vector3 Position() { return Matrix.GetRotatedPoint(this.obj.Position(), this.Angle.X, this.Angle.Y, this.Angle.Z); diff --git a/OSCADSharp/OSCADSharp/Transforms/ScaledObject.cs b/OSCADSharp/OSCADSharp/Transforms/ScaledObject.cs index e6f59f9..5bcee35 100644 --- a/OSCADSharp/OSCADSharp/Transforms/ScaledObject.cs +++ b/OSCADSharp/OSCADSharp/Transforms/ScaledObject.cs @@ -11,7 +11,7 @@ namespace OSCADSharp.Transforms /// /// An object that's been rescaled /// - internal class ScaledObject : OSCADObject, IMimic + internal class ScaledObject : OSCADObject { /// /// The scale factor to be applied @@ -47,12 +47,7 @@ namespace OSCADSharp.Transforms Name = this.Name }; } - - public OSCADObject MimicObject(OSCADObject obj) - { - return new ScaledObject(obj, this.ScaleFactor); - } - + public override Vector3 Position() { return obj.Position() * this.ScaleFactor; diff --git a/OSCADSharp/OSCADSharp/Transforms/TranslatedObject.cs b/OSCADSharp/OSCADSharp/Transforms/TranslatedObject.cs index a820447..a1cd635 100644 --- a/OSCADSharp/OSCADSharp/Transforms/TranslatedObject.cs +++ b/OSCADSharp/OSCADSharp/Transforms/TranslatedObject.cs @@ -11,7 +11,7 @@ namespace OSCADSharp.Transforms /// /// An object or objects that have been moved along the specified vector /// - internal class TranslatedObject : OSCADObject, IMimic + internal class TranslatedObject : OSCADObject { internal Vector3 Vector { get; set; } private OSCADObject obj; @@ -44,12 +44,7 @@ namespace OSCADSharp.Transforms Name = this.Name }; } - - public OSCADObject MimicObject(OSCADObject obj) - { - return new TranslatedObject(obj, this.Vector); - } - + public override Vector3 Position() { return this.obj.Position() + this.Vector;