public override void UpdateView(Rect _editorRect, Rect _percentageRect, Event _e, NodeGraph _nodeGraph)
        {
            base.UpdateView(_editorRect, _percentageRect, _e, _nodeGraph);

            GUILayout.BeginArea(m_viewRect);
            GUILayout.Space(40);
            if (_nodeGraph != null)
            {
                BaseNode node = _nodeGraph.GetSelectedNode();
                if (node != null)
                {
                    GUILayout.BeginHorizontal();
                    GUILayout.Space(10);

                    EditorGUILayout.LabelField("Name");
                    EditorGUILayout.LabelField(node.GetNodeName());

                    GUILayout.Space(10);
                    GUILayout.EndHorizontal();

                    GUILayout.BeginHorizontal();
                    GUILayout.Space(10);

                    EditorGUILayout.LabelField("Node Type");
                    EditorGUILayout.LabelField(node.GetNodeType().ToString());

                    GUILayout.Space(10);
                    GUILayout.EndHorizontal();

                    GUILayout.BeginHorizontal();
                    GUILayout.Space(10);

                    EditorGUILayout.LabelField("Current State");
                    EditorGUILayout.LabelField(node.GetNodeState().ToString());

                    GUILayout.Space(10);
                    GUILayout.EndHorizontal();


                    GUILayout.BeginHorizontal();
                    GUILayout.Space(10);

                    node.m_details = (string)EditorGUILayout.TextField(
                        new GUIContent("Details"), node.m_details);

                    GUILayout.Space(10);
                    GUILayout.EndHorizontal();

                    if (node.GetNodeType() == NodeType.ACTION_NODE)
                    {
                        ActionNode actionNode = ((ActionNode)node);

                        GUILayout.BeginHorizontal();
                        GUILayout.Space(10);

                        actionNode.m_actionType = (ActionType)EditorGUILayout.EnumPopup(
                            new GUIContent("Action Type"), actionNode.m_actionType);

                        GUILayout.Space(10);
                        GUILayout.EndHorizontal();

                        switch (actionNode.m_actionType)
                        {
                        case ActionType.WALK:
                            GUILayout.BeginHorizontal();
                            GUILayout.Space(10);

                            actionNode.m_moveToPos = (Vector3)EditorGUILayout.Vector3Field(
                                "", actionNode.m_moveToPos, GUILayout.MaxWidth(1000));

                            GUILayout.Space(10);
                            GUILayout.EndHorizontal();
                            break;

                        case ActionType.PICKUPKEY:
                            break;

                        case ActionType.OPENDOOR:
                            break;

                        case ActionType.RESETVARIABLES:
                            break;

                        case ActionType.COUNT:
                            break;

                        default:
                            break;
                        }
                    }
                }
            }
            GUILayout.EndArea();
            ProcessEvents(_e);
        }
示例#2
0
        private void ProcessContextMenu(Event _e)
        {
            if (_e.type == EventType.MouseDrag)
            {
                if (_e.button == 0)
                {
                    m_parentGraph.SetSelectedNode(this);
                    BaseNode        selectedNode = m_parentGraph.GetSelectedNode();
                    List <BaseNode> nodes        = new List <BaseNode>();
                    nodes.Add(selectedNode);
                    if (selectedNode.m_outputs.Count > 0)
                    {
                        foreach (NodeOutput output in m_outputs)
                        {
                            if (output == null)
                            {
                                continue;
                            }

                            if (output.m_isOccupied)
                            {
                                BaseNode node = output.m_connectedTo.m_holderNode;

                                if (node != null && node.m_outputs.Count > 0 && node.m_outputs[0] != null)
                                {
                                    foreach (NodeOutput childOutput in node.m_outputs)
                                    {
                                        if (output == null)
                                        {
                                            continue;
                                        }

                                        nodes.Add(childOutput.m_connectedTo.m_holderNode);
                                    }
                                }
                                nodes.Add(output.m_connectedTo.m_holderNode);
                            }
                        }
                    }

                    Vector2 delta = _e.delta;

                    foreach (BaseNode node in nodes)
                    {
                        Rect temp = node.GetNodeRect();
                        temp.x += delta.x;
                        temp.y += delta.y;
                        node.SetNodeRect(temp);
                    }

                    m_parentGraph.isDragging = true;
                }
            }

            if (_e.type == EventType.Layout && _e.button == 1)
            {
                NodeGraph graph = (EditorWindow.GetWindow <NodeEditorWindow>() as NodeEditorWindow).GetCurrentGraph();

                if (graph != null)
                {
                    graph.SetIsMakingConnection(false);
                }

                GenericMenu menu = new GenericMenu();

                menu.AddItem(new GUIContent("Delete Node"), false, CallbackOnContextMenu, "0");
                menu.AddItem(new GUIContent("Mark this as Root Node"), false, CallbackOnContextMenu, "1");

                menu.AddSeparator("");
                menu.AddItem(new GUIContent("Add Output"), false, CallbackOnContextMenu, "2");

                menu.ShowAsContext();
            }
        }