private void ReplaceOperator(MetaOperator operatorToAdd, Guid idToAdd, Guid idToRemove) { var position = ParentOperator.Operators[idToRemove].Item2.Position; ParentOperator.RemoveOperator(idToRemove); ParentOperator.AddOperator(operatorToAdd, idToAdd); ParentOperator.Operators[idToAdd].Item2.Position = position; }
private void InsertNewConnections(Guid internalOpID, IList <Guid> inputs, IList <Guid> outputs) { foreach (var connection in _outgoingConnections) { var outputIndex = OldOperator.Outputs.IndexOf(OldOperator.Outputs.Find(output => output.ID == connection.SourceOpPartID)); var sourceOpPartID = outputIndex >= 0 ? outputs[outputIndex] : Guid.Empty; if (sourceOpPartID != Guid.Empty) { ParentOperator.InsertConnectionAt(new MetaConnection(internalOpID, sourceOpPartID, connection.TargetOpID, connection.TargetOpPartID)); } } foreach (var connection in _ingoingConnections) { var inputIndex = OldOperator.Inputs.IndexOf(OldOperator.Inputs.Find(input => input.ID == connection.TargetOpPartID)); var targetOpPartID = inputIndex >= 0 ? inputs[inputIndex] : Guid.Empty; if (targetOpPartID != Guid.Empty) { ParentOperator.InsertConnectionAt(new MetaConnection(connection.SourceOpID, connection.SourceOpPartID, internalOpID, targetOpPartID)); } } }