public static InstructionGraphNode CloneNode(InstructionGraphNode node) { var clone = Instantiate(node); clone.name = node.name; clone.hideFlags = HideFlags.HideInHierarchy; return(clone); }
public static void DestroyNode(InstructionGraph graph, InstructionGraphNode node, IList <InstructionGraphNode.ConnectionData> connections, InstructionGraphNode start) { foreach (var connection in connections) { ChangeConnectionTarget(graph, connection, null, connection.From == start); } using (new UndoScope(graph, true)) { graph.Nodes.Remove(node); Undo.DestroyObjectImmediate(node); AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(graph)); } }
public static void Draw(Rect rect, GUIContent label, InstructionGraphNode target) { var editRect = RectHelper.TakeTrailingIcon(ref rect); var targetLabel = target ? target.Name : "Unconnected"; EditorGUI.LabelField(rect, label, new GUIContent(targetLabel)); if (target) { if (GUI.Button(editRect, _editIcon.Content, GUIStyle.none)) { InstructionGraphEditor.SelectNode(target); } } }
public override void SetConnection(ConnectionData connection, InstructionGraphNode target) { if (connection.Field == nameof(Items)) { foreach (var item in Items) { if (item.Label == connection.FieldKey) { item.OnSelected = target; return; } } } else { base.SetConnection(connection, target); } }
public static void Draw(GUIContent label, InstructionGraphNode target) { var rect = EditorGUILayout.GetControlRect(false); Draw(rect, label, target); }
public static void SelectNode(InstructionGraphNode node) { Selection.activeObject = node; }