///Adds a new output port definition to the Macro public bool AddOutputDefinition(MacroPortDefinition def) { if (outputDefinitions.Find(d => d.ID == def.ID) == null) { outputDefinitions.Add(def); return(true); } return(false); }
protected override UnityEditor.GenericMenu OnDragAndDropPortContextMenu(UnityEditor.GenericMenu menu, Port port) { if (port is ValueInput || port is FlowInput) { menu.AddItem(new GUIContent(string.Format("Promote to new Input '{0}'", port.name)), false, () => { var def = new MacroPortDefinition(port.name, port.type); if (macro.AddInputDefinition(def)) { GatherPorts(); BinderConnection.Create(GetOutputPort(def.ID), port); } }); } return(menu); }
///validates the entry & exit references protected override void OnGraphValidate() { base.OnGraphValidate(); _entry = null; _exit = null; _entry = entry; _exit = exit; //create initial ports in case there are none in both entry and exit if (inputDefinitions.Count == 0 && outputDefinitions.Count == 0) { var defIn = new MacroPortDefinition("In", typeof(Flow)); var defOut = new MacroPortDefinition("Out", typeof(Flow)); inputDefinitions.Add(defIn); outputDefinitions.Add(defOut); entry.GatherPorts(); exit.GatherPorts(); var source = entry.GetOutputPort(defIn.ID); var target = exit.GetInputPort(defOut.ID); BinderConnection.Create(source, target); } }