diff --git a/OSCADSharp/OSCADSharp/OSCADObject.cs b/OSCADSharp/OSCADSharp/OSCADObject.cs index 7f77cb3..35a16a7 100644 --- a/OSCADSharp/OSCADSharp/OSCADObject.cs +++ b/OSCADSharp/OSCADSharp/OSCADObject.cs @@ -238,26 +238,18 @@ namespace OSCADSharp /// public OSCADObject Mimic(OSCADObject other) { - IEnumerable children = other.Children(); - Stack stack = new Stack(); OSCADObject finalObject = this; - stack.Push(other); - foreach (var child in children) - { - stack.Push(child); - } + Stack toTraverse = new Stack(); + toTraverse.Push(other); + other.Children().ToList().ForEach(child => toTraverse.Push(child)); - while(stack.Count > 0) + while(toTraverse.Count > 0) { - var current = stack.Pop(); - if(!(current is IMimic)) + var current = toTraverse.Pop() as IMimic; + if(current != null) { - continue; - } - else - { - finalObject = ((IMimic)current).MimicObject(finalObject); + finalObject = current.MimicObject(finalObject); } }