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); } }
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); }
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); }
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); }
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; } }
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; }
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); }
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); }
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); }
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)); }
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)); }
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); }
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); }