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;