コード例 #1
0
                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);
                    }
                }
コード例 #2
0
        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;
        }
コード例 #3
0
        /// <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);
            }
        }
コード例 #4
0
 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;
         }
     }
 }