private static void CreateWindow() { // Get existing open window or if none, make a new one: _instance = (NodeGraphEditorWindow)GetWindow(typeof(NodeGraphEditorWindow), false, kWindowWindowName); if (_instance._nodeGraphEditor == null || _instance._nodeGraphEditor.GetEditorWindow() == null) { _instance._nodeGraphEditor = NodeGraphEditor.CreateInstance <NodeGraphEditor>(); _instance._nodeGraphEditor.Init(kWindowTitle, _instance, kWindowTag); } }
public override void OnHeaderGUI() { // Initialization if (node == null) { node = target as LogicNode; graphEditor = NodeGraphEditor.GetEditor(target.graph, window) as LogicGraphEditor; } base.OnHeaderGUI(); Rect dotRect = GUILayoutUtility.GetLastRect(); dotRect.size = new Vector2(16, 16); dotRect.y += 6; GUI.color = graphEditor.GetLerpColor(Color.red, Color.green, node, node.led); GUI.DrawTexture(dotRect, NodeEditorResources.dot); GUI.color = Color.white; }
/// <summary> Add items for the context menu when right-clicking this node. Override to add custom menu items. </summary> public override void AddContextMenuItems(GenericMenu menu) { bool canRemove = true; // Actions if only one node is selected if (Selection.objects.Length == 1 && Selection.activeObject is XNode.Node) { XNode.Node node = Selection.activeObject as XNode.Node; menu.AddItem(new GUIContent("Edit Script"), false, () => { string assetPath = AssetDatabase.GetAssetPath(MonoScript.FromScriptableObject(target)); AssetDatabase.OpenAsset(AssetDatabase.LoadAssetAtPath <MonoScript>(assetPath)); }); menu.AddItem(new GUIContent("Move To Top"), false, () => NodeEditorWindow.current.MoveNodeToTop(node)); menu.AddItem(new GUIContent("Rename"), false, NodeEditorWindow.current.RenameSelectedNode); canRemove = NodeGraphEditor.GetEditor(node.graph, NodeEditorWindow.current).CanRemove(node); } // Add actions to any number of selected nodes menu.AddItem(new GUIContent("Copy"), false, NodeEditorWindow.current.CopySelectedNodes); menu.AddItem(new GUIContent("Duplicate"), false, NodeEditorWindow.current.DuplicateSelectedNodes); if (canRemove) { menu.AddItem(new GUIContent("Remove"), false, NodeEditorWindow.current.RemoveSelectedNodes); } else { menu.AddItem(new GUIContent("Remove"), false, null); } // Custom sctions if only one node is selected if (Selection.objects.Length == 1 && Selection.activeObject is XNode.Node) { XNode.Node node = Selection.activeObject as XNode.Node; menu.AddCustomContextMenuItems(node); } }
private void CheckMasterNode() { if (m_MasterNode == null) { foreach (Node n in nodes) { MasterNode mn = n as MasterNode; if (mn != null) { m_MasterNode = mn; return; } } if (m_MasterNode == null) { NodeGraphEditor nge = NodeGraphEditor.GetEditor(this, NodeEditorWindow.current); XNode.Node node = nge.CreateNode(typeof(MasterNode), Vector2.zero); NodeEditorWindow.current.AutoConnect(node); m_MasterNode = (MasterNode)node; } } }