Example #1
0
        public void Do()
        {
            var metaInput    = InputParent.GetMetaInput(InputToPublish);
            var newMetaInput = metaInput.Clone();

            newMetaInput.Name = _newName;

            var addInputCommand = new AddInputCommand(CompositionOperator, newMetaInput);

            addInputCommand.Do();

            var opPartToUpdate    = CompositionOperator.Inputs[CompositionOperator.Inputs.Count - 1];
            var func              = InputToPublish.Func.Clone() as Utilities.ValueFunction;
            var updateFuncCommand = new UpdateOperatorPartValueFunctionCommand(opPartToUpdate, func.Value);

            updateFuncCommand.Do();

            var connection = new MetaConnection(Guid.Empty, newMetaInput.ID, InputToPublish.Parent.ID, metaInput.ID);
            var insertConnectionCommand = new InsertConnectionCommand(CompositionOperator.Definition, connection, 0);

            insertConnectionCommand.Do();

            _commands.Clear();
            _commands.AddRange(new ICommand[] { addInputCommand, updateFuncCommand, insertConnectionCommand });
        }
Example #2
0
        private List <ICommand> SetupSingleAnimation(OperatorPart opPart, double keyframeTime)
        {
            var context = new OperatorPartContext()
            {
                Time = (float)keyframeTime
            };
            float currentValue = opPart.Eval(context).Value;

            // this command is needed to restore the original value correctly when undoing this, for doing it it's redundant
            var setValueCommand = new SetFloatValueCommand(opPart, currentValue);

            var compOp            = opPart.Parent.Parent;
            var addCurveOpCommand = new AddOperatorCommand(compOp, CurveID, 100, 100, 100, false);
            var curveOpInstanceId = addCurveOpCommand.AddedInstanceID;
            var addTimeOpCommand  = new AddOperatorCommand(compOp, CurrentTimeID, 100, 100, 100, false);

            var curveMetaOp = MetaManager.Instance.GetMetaOperator(CurveID);
            var timeMetaOp  = MetaManager.Instance.GetMetaOperator(CurrentTimeID);

            var timeToCurve = new MetaConnection(addTimeOpCommand.AddedInstanceID, timeMetaOp.Outputs[0].ID,
                                                 addCurveOpCommand.AddedInstanceID, curveMetaOp.Inputs[0].ID);
            var connectionTimeToCurveCommand = new InsertConnectionCommand(compOp.Definition, timeToCurve, 0);

            var curveToCurrent = new MetaConnection(addCurveOpCommand.AddedInstanceID, curveMetaOp.Outputs[0].ID,
                                                    opPart.Parent.ID, opPart.ID);
            var connectionCurveToCurrentCommand = new InsertConnectionCommand(compOp.Definition, curveToCurrent, 0);

            var addKeyframeCommand = new AddOrUpdateKeyframeCommand(keyframeTime, currentValue, compOp, curveOpInstanceId, curveMetaOp.Inputs[0].ID);

            return(new List <ICommand>()
            {
                setValueCommand,
                addCurveOpCommand,
                addTimeOpCommand,
                connectionTimeToCurveCommand,
                connectionCurveToCurrentCommand,
                addKeyframeCommand
            });
        }