public static IMachineElement ToViewModel(this MDE.MachineElement me, IMachineElement parent = null) { if (me is MDE.RootElement re) { return(Convert(re, parent).Decorate()); } else if (me is MDE.InserterElement ins) { return(Convert(ins, parent).Decorate()); } else if (me is MDE.InjectorElement inj) { return(Convert(inj, parent).Decorate()); } else if (me is MDE.ColliderElement ce) { return(Convert(ce, parent).Decorate()); } else if (me is MDE.ToolholderElement th) { return(Convert(th, parent).Decorate()); } else if (me is MDE.PanelHolderElement ph) { return(Convert(ph, parent).Decorate()); } else { return(Convert <ElementViewModel>(me, parent).Decorate()); } }
private static T Convert <T>(MDE.MachineElement machineElement, IMachineElement parent) where T : ElementViewModel, new() { var evm = new T() { MachineElementID = machineElement.MachineElementID, Name = machineElement.Name, ModelFile = machineElement.ModelFile, Color = machineElement.Color, Transformation = machineElement.Transformation, LinkToParent = ConvertLink(machineElement.LinkToParent, machineElement.Name), Parent = parent }; foreach (var item in machineElement.Children) { evm.Children.Add(item.ToViewModel(evm)); } //foreach (var item in evm.Children) item.Parent = evm; return(evm); }