Example #1
0
        private void CreateFloatInputGroup(string defaultName, string[] extensions, float min, float max, float scale)
        {
            var inputWindow = new Components.Dialogs.TextInputWindow();

            inputWindow.XTextBox.Text = defaultName;
            inputWindow.XTextBox.SelectAll();
            inputWindow.XTextBox.Focus();
            inputWindow.XText.Text        = "Input Group";
            inputWindow.XOKButton.Content = "Create";
            inputWindow.Title             = "Create input group";
            inputWindow.ShowDialog();

            if (inputWindow.DialogResult == true && inputWindow.XTextBox.Text != String.Empty)
            {
                var opTitle = inputWindow.XTextBox.Text;

                var opPart      = BasicMetaTypes.FloatMeta;
                var inputsToAdd = new MetaInput[extensions.Length];
                for (int i = 0; i < extensions.Length; i++)
                {
                    var metaInput = new MetaInput(Guid.NewGuid(), opTitle + "." + extensions[i], opPart, new Float(1.0f), false);
                    metaInput.Min   = min;
                    metaInput.Max   = max;
                    metaInput.Scale = scale;
                    metaInput.Name  = opTitle + "." + extensions[i];
                    inputsToAdd[i]  = metaInput;
                }
                AddInputToComposition(inputsToAdd);
            }
        }
Example #2
0
        private void OnAddTriggerInput(object sender, RoutedEventArgs e)
        {
            var opPart    = BasicMetaTypes.FloatMeta;
            var metaInput = new MetaInput(Guid.NewGuid(), "Trigger", opPart, new Float(0.0f), false);

            metaInput.Min = 0;
            metaInput.Max = 1;
            AddInputToComposition(metaInput);
        }
Example #3
0
        private void AddInputToComposition(MetaInput inputToAdd)
        {
            var compositionView = UIHelper.FindParent <CompositionView>(this);
            var compOp          = compositionView.CompositionGraphView.CompositionOperator;

            var command = new AddInputCommand(compOp, inputToAdd);

            App.Current.UndoRedoStack.AddAndExecute(command);
        }
Example #4
0
        private void OnAddFloatInput(object sender, RoutedEventArgs e)
        {
            var inputDefinition = new MetaInput(Guid.NewGuid(), "Value", BasicMetaTypes.FloatMeta, new Float(0.0f), false);

            inputDefinition.Min   = -10000.0f;
            inputDefinition.Max   = 10000.0f;
            inputDefinition.Scale = 0.1f;
            AddInputToComposition(inputDefinition);
        }
        private void AddRestoredInputToMetaOp()
        {
            var metaOp        = MetaManager.Instance.GetMetaOperator(_metaOpID);
            var restoredInput = new MetaInput(_metaInputID, _metaInputName, BasicMetaTypes.GetMetaOperatorPartOf(_metaOpPartType), _metaInputDefaultValue, _metaInputIsMultiInput)
            {
                Relevance = _metaInputRelevance
            };

            metaOp.InsertInput(_metaInputIndex, restoredInput);
        }
Example #6
0
        public void RemoveInput_AddAndRemoveInput_OperatorDoesNotContainNewInput()
        {
            const string newInputName = "newTestInput";
            var          newInput     = new MetaInput(Guid.NewGuid(), newInputName, BasicMetaTypes.FloatMeta, new Float(0.0f), false);

            _operator.Definition.AddInput(newInput);
            var inputToRemove      = _operator.Inputs.Find(input => input.Name == newInputName);
            var removeInputCommand = new RemoveInputCommand(_operator, inputToRemove);

            removeInputCommand.Do();
            Assert.IsNull(_operator.Inputs.Find(input => input.Name == newInputName));
        }
 public Entry(MetaInput input)
 {
     DefaultValue = input.DefaultValue;
     Relevance    = input.Relevance;
     IsMultiInput = input.IsMultiInput;
     if (input.OpPart.Type == FunctionType.Float)
     {
         Min       = input.Min;
         Max       = input.Max;
         Scale     = input.Scale;
         ScaleType = input.ScaleType;
     }
 }
Example #8
0
 public AddInputCommand(Operator compOp, MetaInput inputDefinition)
     : this(compOp, inputDefinition.OpPart.Type, inputDefinition.Name, inputDefinition.ID)
 {
     _isMultiInput    = inputDefinition.IsMultiInput;
     _relevance       = inputDefinition.Relevance;
     _description     = inputDefinition.Description;
     _min             = inputDefinition.Min;
     _max             = inputDefinition.Max;
     _scale           = inputDefinition.Scale;
     _scaleType       = inputDefinition.ScaleType;
     _enumValues      = new List <MetaInput.EnumEntry>(inputDefinition.EnumValues);
     _applyProperties = true;
 }
Example #9
0
        public static MetaOperator CreateSubMetaOp(float inputValue1, float inputValue2)
        {
            var input0 = new MetaInput(Guid.Parse("{AA522720-BB43-449F-9EAC-2FA2B13822C6}"), "Input0", BasicMetaTypes.FloatMeta, new Float(inputValue1), false);
            var input1 = new MetaInput(Guid.Parse("{9FC79D4C-3639-4A44-9ED8-69E8C5FF3E05}"), "Input1", BasicMetaTypes.FloatMeta, new Float(inputValue2), false);
            var output = new MetaOutput(Guid.Parse("{82B5272B-4884-4622-8891-2A9465550E18}"), "Output", BasicMetaTypes.FloatMeta);

            var opPartID = Guid.Parse("{3A6EA1C9-F479-4D89-A117-286D4DA49BCF}");
            var opPart   = new MetaOperatorPart(Guid.Parse("{E6FA8A63-AAA5-4533-BC02-BD8E04157A2F}"))
            {
                IsMultiInput = true,
                Name         = "Func",
                Type         = FunctionType.Float
            };

            var metaOp = new MetaOperator(Guid.Parse("{5732DB8C-A1CC-48E7-85E3-3B3428957AF5}"))
            {
                Name   = "SimpleOp",
                Inputs = new[] { input0, input1 }.ToList(),
                Outputs = new[] { output }.ToList(),
                OperatorParts = new[] { new Tuple <Guid, MetaOperatorPart>(opPartID, opPart) }.ToList(),
                Connections = new[]
                {
                    new MetaConnection(Guid.Empty, input0.ID, Guid.Empty, opPartID),
                    new MetaConnection(Guid.Empty, input1.ID, Guid.Empty, opPartID),
                    new MetaConnection(Guid.Empty, opPartID, Guid.Empty, output.ID)
                }.ToList()
            };

            var script = @"using System;
                           using System.Collections.Generic;
                           namespace Framefield.Core.IDca9a3a0e_c1c7_42b6_a0e5_cdb4c61d0b18
                           {
                               public class Class_Sub : OperatorPart.Function
                               {
                                   public override OperatorPartContext Eval(OperatorPartContext context, List<OperatorPart> inputs, int outputIdx) 
                                   {
                                        context.Value = input[0].Eval(context).Value - input[1].Eval(context).Value;
                                        return context;
                                   }
                               }
                           }";

            opPart.Script = script;
            opPart.Compile();

            return(metaOp);
        }
Example #10
0
        public void Replace_OperatorWith1InWithOperatorWith1In_ConnectionHasSameSourceAndNewOpAsTarget()
        {
            var internalSourceID   = Guid.NewGuid();
            var targetOpPartID     = Guid.NewGuid();
            var sourceOpPartID     = Guid.NewGuid();
            var connectionSourceOp = new MetaOperator(internalSourceID);

            var metaOutput = new MetaOutput(sourceOpPartID, "targetOutput", new MetaOperatorPart(Guid.NewGuid()));

            connectionSourceOp.AddOutput(metaOutput);

            var internalOldID = Guid.NewGuid();
            var floatMetaOld  = OperatorTests.CreateMetaFloatWithoutConnections();
            var floatInput    = new MetaInput(targetOpPartID, "targetInputOld", new MetaOperatorPart(Guid.NewGuid()), new Float(5.0f), false);

            floatMetaOld.AddInput(floatInput);

            var floatMetaNew = OperatorTests.CreateMetaFloatWithoutConnections();

            floatMetaNew.AddInput(new MetaInput(Guid.NewGuid(), "targetInputNew", new MetaOperatorPart(Guid.NewGuid()), new Float(5.0f), false));

            var metacompositionOp = new MetaOperator(Guid.NewGuid());

            metacompositionOp.AddOperator(connectionSourceOp);
            metacompositionOp.AddOperator(floatMetaOld, internalOldID);
            metacompositionOp.Connections = new[]
            {
                new MetaConnection(internalSourceID, sourceOpPartID, internalOldID, targetOpPartID)
            }.ToList();

            MetaManager.Instance.AddMetaOperator(floatMetaOld.ID, floatMetaOld);
            MetaManager.Instance.AddMetaOperator(floatMetaNew.ID, floatMetaNew);
            MetaManager.Instance.AddMetaOperator(metacompositionOp.ID, metacompositionOp);

            var replaceCommand = new ReplaceOperatorCommand(metacompositionOp, floatMetaOld, floatMetaNew, internalOldID);

            replaceCommand.Do();

            var targetID = metacompositionOp.Connections.ElementAt(0).TargetOpID;

            Assert.AreEqual(metacompositionOp.Connections.Count, 1);
            Assert.AreEqual(metacompositionOp.Operators[targetID].Item1, floatMetaNew);

            MetaManager.Instance.RemoveMetaOperator(metacompositionOp.ID);
            MetaManager.Instance.RemoveMetaOperator(floatMetaNew.ID);
            MetaManager.Instance.RemoveMetaOperator(floatMetaOld.ID);
        }
Example #11
0
        private void ApplyEntryToInput(Entry entry)
        {
            MetaInput inputToUpdate = GetInputToUpdate();

            inputToUpdate.OpPart       = BasicMetaTypes.GetMetaOperatorPartOf(entry.FunctionType);
            inputToUpdate.Name         = entry.Name;
            inputToUpdate.DefaultValue = entry.DefaultValue;
            inputToUpdate.Relevance    = entry.Relevance;
            inputToUpdate.IsMultiInput = entry.IsMultiInput;

            if (entry.FunctionType == FunctionType.Float)
            {
                ApplyFloatEntriesToInput(entry);
            }

            MetaOp.UpdateInput(inputToUpdate);
        }
        public void UpdateInputParameter_AddNewInputToOperatorThenChangeInputRelevancy_NewInputHasNewRelevancy()
        {
            const string newInputName = "newTestInput";
            var          newInput     = new MetaInput(Guid.NewGuid(), newInputName, BasicMetaTypes.FloatMeta, new Float(0.0f), false);

            _operator.Definition.AddInput(newInput);
            var newRelevancy = MetaInput.RelevanceType.Required;
            var changes      = new UpdateInputParameterCommand.Entry(newInput)
            {
                Relevance = newRelevancy
            };
            var updateInputCommand = new UpdateInputParameterCommand(_operator, newInput.ID, changes);

            updateInputCommand.Do();

            Assert.IsTrue(_operator.Definition.Inputs.Find(input => input.Name == newInputName).Relevance == newRelevancy);
        }
Example #13
0
        public void RemoveInput_AddAndRemoveInputSerializeCommand_CommandIsUndoableAfterDeserialisation()
        {
            const string newInputName = "newTestInput";
            var          newInput     = new MetaInput(Guid.NewGuid(), newInputName, BasicMetaTypes.FloatMeta, new Float(0.0f), false);

            _operator.Definition.AddInput(newInput);
            var inputToRemove      = _operator.Inputs.Find(input => input.Name == newInputName);
            var removeInputCommand = new RemoveInputCommand(_operator, inputToRemove);

            removeInputCommand.Do();

            var jsonString = SerializeCommand(removeInputCommand);
            var command    = JsonConvert.DeserializeObject <PersistentCommand>(jsonString, _serializerSettings);

            command.Command.Undo();

            Assert.IsNotNull(_operator.Inputs.Find(input => input.Name == newInputName));
        }
Example #14
0
        public void RemoveInput_AddAndRemoveInputWithInGoingConnection_ConnectionsAreRestoredAfterUndo()
        {
            const string newInputName = "newTestInput";
            var          newInput     = new MetaInput(Guid.NewGuid(), newInputName, BasicMetaTypes.FloatMeta, new Float(0.0f), false);

            _operator.Definition.AddInput(newInput);

            var internalOp    = _parentOperator.InternalOps.Find(op => op.Definition.ID == _operator.Definition.ID);
            var internalInput = _operator.Definition.Inputs.Find(input => input.Name == newInputName);
            var inputToRemove = _operator.Inputs.Find(input => input.Name == newInputName);

            _operator.Definition.Connections       = new[] { new MetaConnection(Guid.Empty, internalInput.ID, Guid.Empty, _operator.Definition.Outputs[0].ID) }.ToList();
            _parentOperator.Definition.Connections = new[] { (new MetaConnection(Guid.Empty, _parentOperator.Definition.Inputs[0].ID, internalOp.ID, internalInput.ID)) }.ToList();

            var removeInputCommand = new RemoveInputCommand(_operator, inputToRemove);

            removeInputCommand.Do();
            removeInputCommand.Undo();

            Assert.IsNotNull(_operator.Definition.Connections.Find(connection => connection.SourceOpPartID == internalInput.ID && connection.TargetOpPartID == _operator.Definition.Outputs[0].ID));
            Assert.IsNotNull(_parentOperator.Definition.Connections.Find(connection => connection.TargetOpID == internalOp.ID && connection.TargetOpPartID == internalInput.ID));
        }
Example #15
0
        public void UndoReplace_OperatorWith1InAnd1OutWithOperatorWith1InAnd1Out_OldOperatorIsPartOfConnectionsAgain()
        {
            var internalSourceID   = Guid.NewGuid();
            var sourceOpPartID     = Guid.NewGuid();
            var connectionSourceOp = new MetaOperator(internalSourceID);

            var metaOutput = new MetaOutput(sourceOpPartID, "targetOutput", new MetaOperatorPart(Guid.NewGuid()));

            connectionSourceOp.AddOutput(metaOutput);

            var internalTargetID   = Guid.NewGuid();
            var targetOpPartID     = Guid.NewGuid();
            var connectionTargetOp = new MetaOperator(internalTargetID);

            var floatInput = new MetaInput(targetOpPartID, "targetInput", new MetaOperatorPart(Guid.NewGuid()), new Float(5.0f), false);

            connectionTargetOp.AddInput(floatInput);

            var internalOldID     = Guid.NewGuid();
            var sourceOpPartIDOld = Guid.NewGuid();
            var targetOpPartIDOld = Guid.NewGuid();
            var floatMetaOld      = OperatorTests.CreateMetaFloatWithoutConnections();
            var floatOutput       = new MetaOutput(sourceOpPartIDOld, "sourceOutputOld", new MetaOperatorPart(Guid.NewGuid()));

            floatMetaOld.AddOutput(floatOutput);
            var floatInputOld = new MetaInput(targetOpPartIDOld, "targetInputOld", new MetaOperatorPart(Guid.NewGuid()), new Float(5.0f), false);

            floatMetaOld.AddInput(floatInputOld);

            var floatMetaNew = OperatorTests.CreateMetaFloatWithoutConnections();

            floatMetaNew.AddInput(new MetaInput(Guid.NewGuid(), "targetInputNew", new MetaOperatorPart(Guid.NewGuid()), new Float(5.0f), false));
            floatMetaNew.AddOutput(new MetaOutput(Guid.NewGuid(), "sourceOutputNew", new MetaOperatorPart(Guid.NewGuid())));

            var metacompositionOp = new MetaOperator(Guid.NewGuid());

            metacompositionOp.AddOperator(connectionTargetOp);
            metacompositionOp.AddOperator(connectionSourceOp);
            metacompositionOp.AddOperator(floatMetaOld, internalOldID);
            metacompositionOp.Connections = new[]
            {
                new MetaConnection(internalSourceID, sourceOpPartID, internalOldID, targetOpPartIDOld),
                new MetaConnection(internalOldID, sourceOpPartIDOld, internalTargetID, targetOpPartID)
            }.ToList();

            MetaManager.Instance.AddMetaOperator(floatMetaOld.ID, floatMetaOld);
            MetaManager.Instance.AddMetaOperator(floatMetaNew.ID, floatMetaNew);
            MetaManager.Instance.AddMetaOperator(metacompositionOp.ID, metacompositionOp);

            var replaceCommand = new ReplaceOperatorCommand(metacompositionOp, floatMetaOld, floatMetaNew, internalOldID);

            replaceCommand.Do();
            replaceCommand.Undo();

            var targetID = metacompositionOp.Connections.Single(connection => connection.SourceOpID == internalSourceID).TargetOpID;
            var sourceID = metacompositionOp.Connections.Single(connection => connection.TargetOpID == internalTargetID).SourceOpID;

            Assert.AreEqual(metacompositionOp.Connections.Count, 2);
            Assert.AreEqual(metacompositionOp.Operators[targetID].Item1, floatMetaOld);
            Assert.AreEqual(metacompositionOp.Operators[sourceID].Item1, floatMetaOld);

            MetaManager.Instance.RemoveMetaOperator(metacompositionOp.ID);
            MetaManager.Instance.RemoveMetaOperator(floatMetaNew.ID);
            MetaManager.Instance.RemoveMetaOperator(floatMetaOld.ID);
        }
 private bool IsNewValidInput(MetaInput matchingNameInput, MetaInput oldInput)
 {
     return(matchingNameInput != null &&
            matchingNameInput.OpPart.IsMultiInput == oldInput.OpPart.IsMultiInput &&
            matchingNameInput.OpPart.Type == oldInput.OpPart.Type);
 }
Example #17
0
        public void Replace_OperatorWithMultiInputAnd3InComingConnections_SameOrderAtMultiInput()
        {
            var multiInputID1      = Guid.NewGuid();
            var genericMultiInput1 = new MetaInput(multiInputID1, "multiInput", BasicMetaTypes.GenericMeta, new Generic(), true);
            var multiInputID2      = Guid.NewGuid();
            var genericMultiInput2 = new MetaInput(multiInputID2, "multiInput", BasicMetaTypes.GenericMeta, new Generic(), true);

            var genericMultiInputOperatorOld = new MetaOperator(Guid.NewGuid());

            genericMultiInputOperatorOld.AddInput(genericMultiInput1);

            var genericMultiInputOperatorNew = new MetaOperator(Guid.NewGuid());

            genericMultiInputOperatorNew.AddInput(genericMultiInput2);

            var sourceOutputID1 = Guid.NewGuid();
            var sourceOutput1   = new MetaOutput(sourceOutputID1, "sourceOutput1", BasicMetaTypes.GenericMeta);
            var sourceOutputID2 = Guid.NewGuid();
            var sourceOutput2   = new MetaOutput(sourceOutputID2, "sourceOutput2", BasicMetaTypes.GenericMeta);

            var genericOutputOp1 = new MetaOperator(Guid.NewGuid());

            genericOutputOp1.AddOutput(sourceOutput1);
            var genericOutputOp2 = new MetaOperator(Guid.NewGuid());

            genericOutputOp2.AddOutput(sourceOutput2);

            var internalOldOperatorID = Guid.NewGuid();
            var internalSourceID1     = Guid.NewGuid();
            var internalSourceID2     = Guid.NewGuid();

            var metacompositionOp = new MetaOperator(Guid.NewGuid());

            metacompositionOp.AddOperator(genericMultiInputOperatorOld, internalOldOperatorID);
            metacompositionOp.AddOperator(genericOutputOp1, internalSourceID1);
            metacompositionOp.AddOperator(genericOutputOp2, internalSourceID2);
            metacompositionOp.Connections = new List <MetaConnection>
            {
                new MetaConnection(internalSourceID1, sourceOutputID1, internalOldOperatorID, multiInputID1),
                new MetaConnection(internalSourceID2, sourceOutputID2, internalOldOperatorID, multiInputID1),
                new MetaConnection(internalSourceID1, sourceOutputID1, internalOldOperatorID, multiInputID1)
            };

            MetaManager.Instance.AddMetaOperator(genericMultiInputOperatorOld.ID, genericMultiInputOperatorOld);
            MetaManager.Instance.AddMetaOperator(genericMultiInputOperatorNew.ID, genericMultiInputOperatorNew);
            MetaManager.Instance.AddMetaOperator(metacompositionOp.ID, metacompositionOp);

            var replaceCommand = new ReplaceOperatorCommand(metacompositionOp, genericMultiInputOperatorOld, genericMultiInputOperatorNew, internalOldOperatorID);

            replaceCommand.Do();

            var connectionsIntoNewMultiInput = metacompositionOp.Connections.Where(connection => connection.TargetOpPartID == multiInputID2).ToList();

            Assert.IsTrue(connectionsIntoNewMultiInput.Count() == 3);
            Assert.IsTrue(connectionsIntoNewMultiInput[0].SourceOpID == internalSourceID1);
            Assert.IsTrue(connectionsIntoNewMultiInput[1].SourceOpID == internalSourceID2);
            Assert.IsTrue(connectionsIntoNewMultiInput[2].SourceOpID == internalSourceID1);

            MetaManager.Instance.RemoveMetaOperator(metacompositionOp.ID);
            MetaManager.Instance.RemoveMetaOperator(genericMultiInputOperatorOld.ID);
            MetaManager.Instance.RemoveMetaOperator(genericMultiInputOperatorNew.ID);
        }