Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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);
        }