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))); }
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); }
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(); }
public ActionEditorConnection(ActionEditorNode parent, ActionEditorNode child) { _nodeParent = parent; _nodeChild = child; }