/// <summary> /// Копирование доп. свойств базовой операции /// </summary> /// <param name="newOwner">Новая базовая операция-владелец</param> /// <returns></returns> private List <BaseParameter> CloneProperties(BaseOperation newOwner) { var properties = new List <BaseParameter>(); for (int i = 0; i < baseOperationProperties.Count; i++) { BaseParameter oldProperty = baseOperationProperties[i]; BaseParameter newProperty = oldProperty.Clone(); if (oldProperty.Owner is BaseTechObject) { var obj = oldProperty.Owner as BaseTechObject; if (obj.IsAttachable) { newProperty.Owner = oldProperty.Owner; } } else { newProperty.Owner = newOwner; } properties.Add(newProperty); } return(properties); }
/// <summary> /// Копирование объекта /// </summary> /// <returns></returns> public BaseOperation Clone() { var properties = new List <BaseParameter>(baseOperationProperties .Count); var operation = EmptyOperation(); for (int i = 0; i < baseOperationProperties.Count; i++) { BaseParameter oldProperty = baseOperationProperties[i]; BaseParameter newProperty = oldProperty.Clone(); if (oldProperty.Owner is BaseTechObject) { var obj = oldProperty.Owner as BaseTechObject; if (obj.IsAttachable) { newProperty.Owner = oldProperty.Owner; } } else { newProperty.Owner = operation; } properties.Add(newProperty); } var steps = new List <BaseStep>(); for (int i = 0; i < Steps.Count; i++) { var newStep = Steps[i].Clone(); newStep.Owner = operation; steps.Add(newStep); } operation.Name = operationName; operation.LuaName = luaOperationName; operation.Properties = properties; operation.Steps = steps; operation.owner = this.Owner; operation.DefaultPosition = DefaultPosition; operation.SetItems(); return(operation); }