示例#1
0
        public static void CreateNode(NodeGraph _currGraph, NodeType _nodeType, Vector2 _pos)
        {
            if (_currGraph != null)
            {
                BaseNode curNode = null;
                switch (_nodeType)
                {
                case NodeType.ROOT_NODE:
                    curNode = ScriptableObject.CreateInstance <RootNode>() as RootNode;
                    break;

                case NodeType.ADD_NODE:
                    curNode = ScriptableObject.CreateInstance <AddNode>() as AddNode;
                    break;

                case NodeType.SELECTOR_NODE:
                    curNode = ScriptableObject.CreateInstance <SelectorNode>() as SelectorNode;
                    break;

                case NodeType.SEQUENCE_NODE:
                    curNode = ScriptableObject.CreateInstance <SequenceNode>() as SequenceNode;
                    break;

                case NodeType.INVERTER_NODE:
                    curNode = ScriptableObject.CreateInstance <InverterNode>() as InverterNode;
                    break;

                case NodeType.ACTION_NODE:
                    curNode = ScriptableObject.CreateInstance <ActionNode>() as ActionNode;
                    break;

                default:
                    break;
                }

                if (curNode != null)
                {
                    curNode.InitNode();
                    curNode.SetNodeRect(
                        (int)_pos.x,
                        (int)_pos.y,
                        (int)curNode.GetNodeRect().width,
                        (int)curNode.GetNodeRect().height);
                    curNode.SetParentGraph(_currGraph);
                    _currGraph.m_nodes.Add(curNode);

                    AssetDatabase.AddObjectToAsset(curNode, _currGraph);
                    AssetDatabase.SaveAssets();
                    AssetDatabase.Refresh();
                }
            }
        }
示例#2
0
        public override void UpdateGUI(BaseNode _node, NodeEditorWindow _curWindow)
        {
            Rect nodeRect = _node.GetNodeRect();
            Rect tmp      = new Rect();

            tmp.width  = 10f;
            tmp.height = 10f;

            float offset              = 5f;
            float centerOfNode        = nodeRect.x + (nodeRect.width / 2);
            float centerOfOutput      = tmp.width / 2;
            float totalWidthOfOutputs = (_node.m_outputs.Count - 1) * (tmp.width + offset);
            int   indexOfThis         = _node.m_outputs.IndexOf(this);

            tmp.x = (centerOfNode - centerOfOutput) -
                    (totalWidthOfOutputs / 2) +
                    ((tmp.width + offset) * indexOfThis);

            tmp.y    = nodeRect.y + (nodeRect.height + offset);
            m_IORect = tmp;

            base.UpdateGUI(_node, _curWindow);

            if (m_connectedTo != null && m_isOccupied)
            {
                UnityEditor.Handles.DrawLine(m_IORect.center, m_connectedTo.m_IORect.center);
            }
        }
示例#3
0
        public override void UpdateGUI(BaseNode _node, NodeEditorWindow _curWindow)
        {
            if (_node.GetNodeType() != NodeType.ROOT_NODE)
            {
                Rect nodeRect = _node.GetNodeRect();
                Rect tmp      = new Rect();
                tmp.width  = 13f;
                tmp.height = 13f;

                float offset         = 5f;
                float centerOfNode   = nodeRect.x + (nodeRect.width / 2);
                float centerOfOutput = tmp.width / 2;

                tmp.x    = centerOfNode - centerOfOutput;
                tmp.y    = nodeRect.y - (tmp.height + offset);
                m_IORect = tmp;

                base.UpdateGUI(_node, _curWindow);
            }
        }