private Port InstantiateOutputPort() { var outputPort = InstantiatePort(Orientation.Horizontal, Direction.Output, Port.Capacity.Single, typeof(float)); outputPort.portName = string.Empty; var selectConditionButton = new Button(() => { var searchWindow = ScriptableObject.CreateInstance <ConditionSearchWindow>(); searchWindow.Init(this, FSMGraphView.AvailableConditions, outputPort, outputContainer.childCount - 1); SearchWindow.Open(new SearchWindowContext(), searchWindow); }) { text = "Select Condition", name = "Select Condition" }; selectConditionButton.style.backgroundColor = new StyleColor(Color.clear); outputPort.contentContainer.Add(selectConditionButton); // Delete button Button deleteButton = new Button(() => { outputPort.RemoveFromHierarchy(); outputPort.DisconnectAll(); foreach (var edge in outputPort.connections) { edge.input.Disconnect(edge); fsmGraphView.Remove(edge); } }) { text = "x", }; outputPort.contentContainer.Add(deleteButton); return(outputPort); }