private void CheckSelectedNode()
        {
            if (!UnityEngine.Event.current.isMouse || UnityEngine.Event.current.type != EventType.MouseDown)
            {
                return;
            }

            ActionEditorNode newNode = null;

            if (IsMouseOverNode(m_handler.EventNode))
            {
                newNode = m_handler.EventNode;
            }

            foreach (GPAction action in m_actions)
            {
                if (IsMouseOverNode(action._leftNode))
                {
                    newNode = action._leftNode;
                }

                foreach (ActionEditorNode node in action._rightNodes)
                {
                    if (IsMouseOverNode(node))
                    {
                        newNode = node;
                    }
                }
            }

            ChangeSelectedNode(newNode);
        }
        protected void CreateAllRightNodes()
        {
            if (m_actions == null)
            {
                m_actions = new List <GPAction>();
            }

            if (_rightNodes != null)
            {
                _rightNodes.Clear();
            }
            else
            {
                _rightNodes = new List <ActionEditorNode>();
            }

            foreach (GPAction action in m_actions)
            {
                ActionEditorNode node = AddRightNode();

                node._owner                  = this;
                node._connection             = new ActionEditorConnection(node, action._leftNode);
                action._leftNode._connection = node._connection;
            }

            AddRightNode();
        }
        protected virtual void CreateHandlerActionConnection(ActionEditorNode node)
        {
            if (m_handler == null || node == null || !(node._owner is GPAction))
            {
                return;
            }

            m_handler.Action = (GPAction)node._owner;
        }
        private bool IsMouseOverNode(ActionEditorNode node)
        {
            if (node._owner == null)
            {
                return(false);
            }

            return(IsMouseIn(new Rect(node._owner.WindowRect.x + node._center.x - 5,
                                      node._owner.WindowRect.y + node._center.y - 5, 10, 10)));
        }
Beispiel #5
0
        protected virtual ActionEditorNode CreateLeftNode()
        {
            if (this.GetType().GetCustomAttributes(typeof(GPActionNoInputAttribute), false).Length > 0)
            {
                _leftNode = null;
                return(_leftNode);
            }

            _leftNode = new ActionEditorNode();

            _leftNode._owner      = this;
            _leftNode._connection = null;
            _leftNode._center     = new Vector2(8, 25);

            return(_leftNode);
        }
Beispiel #6
0
        public void CreateEventNode()
        {
            m_dueNodeInit = false;

            m_eventNode = new ActionEditorNode();

            m_eventNode._owner  = this;
            m_eventNode._center = new Vector2(92, 25);

            if (m_action != null)
            {
                Connect(m_action);
            }
            else
            {
                m_eventNode._connection = null;
            }
        }
        private void CreateConnection(ActionEditorNode node1, ActionEditorNode node2)
        {
            if (node1._owner == node2._owner || node1._owner == null || node2._owner == null)
            {
                return;
            }

            bool node1IsLeft = (node1._owner is GPAction && ((GPAction)node1._owner)._leftNode == node1);
            bool node2IsLeft = (node2._owner is GPAction && ((GPAction)node2._owner)._leftNode == node2);

            if ((node1IsLeft && node2IsLeft) || (!node1IsLeft && !node2IsLeft))
            {
                return;
            }

            GPAction parent;
            GPAction child;

            if (node2IsLeft)
            {
                child  = (GPAction)node2._owner;
                parent = (GPAction)node1._owner;
            }
            else
            {
                child  = (GPAction)node1._owner;
                parent = (GPAction)node2._owner;
            }

            if (!(parent is IActionOwner))
            {
                return;
            }

            if (child._leftNode._connection != null)
            {
                ((IActionOwner)child._leftNode._connection._nodeParent._owner).Disconnect(child);
            }

            ((IActionOwner)parent).Connect(child);
        }
        private void ChangeSelectedNode(ActionEditorNode node)
        {
            if (m_selectedNode != null)
            {
                if (node != null)
                {
                    if (node == m_handler.EventNode)
                    {
                        CreateHandlerActionConnection(m_selectedNode);
                    }
                    else if (m_selectedNode == m_handler.EventNode)
                    {
                        CreateHandlerActionConnection(node);
                    }
                    else
                    {
                        CreateConnection(node, m_selectedNode);
                    }
                }

                m_selectedNode._selected = false;
                m_selectedNode           = null;

                Repaint();

                return;
            }
            // else

            m_selectedNode = node;

            if (m_selectedNode != null)
            {
                m_selectedNode._selected = true;
            }

            Repaint();
        }
Beispiel #9
0
 public ActionEditorConnection(ActionEditorNode parent, ActionEditorNode child)
 {
     _nodeParent = parent;
     _nodeChild  = child;
 }