Example #1
0
    public override void OnMouseDown(Event e, Vector2 mouseWorldPos)
    {
        if (e.button == 2)
        {
            return;
        }

        if (!e.control)
        {
            selectNodes.Clear();
        }
        for (int i = Graph.Nodes.Count - 1; i >= 0; --i)
        {
            var node = Graph.Nodes[i];
            if (node.Bounds.Contains(mouseWorldPos))
            {
                GraphNodeRef nodeRef = node;
                if (!e.control)
                {
                    selectNodes.Add(nodeRef);
                    break;
                }
                if (selectNodes.Contains(nodeRef))
                {
                    selectNodes.Remove(nodeRef);
                }
                else
                {
                    selectNodes.Add(nodeRef);
                }
            }
        }
    }
Example #2
0
    protected bool BreakLinkToParent(GraphNodeRef node)
    {
        var link = Links.Find(obj => obj.To == node);

        if (link != null)
        {
            link.From.Node.ChildCount--;
            Links.Remove(link);
            return(true);
        }
        return(false);
    }
Example #3
0
 public virtual bool DeleteNode(GraphNodeRef node)
 {
     if (!node || node.Node.Graph != this || node.Node.IsRoot)
     {
         return(false);
     }
     Undo.RegisterCompleteObjectUndo(this, "delete node");
     Nodes.RemoveAll(obj => obj.GUID == node.GUID);
     BreakLinkToParent(node);
     Links.RemoveAll(obj => obj.From == node);
     return(true);
 }
Example #4
0
    protected bool CheckNodeParentInList(GraphNodeRef node, List <GraphNodeRef> nodes)
    {
        var parent = Graph.GetParent(node.Node);

        if (!parent)
        {
            return(false);
        }
        if (nodes.Contains(parent))
        {
            return(true);
        }

        return(CheckNodeParentInList(parent, nodes));
    }
Example #5
0
 public void Reset()
 {
     Nodes.Clear();
     Parent = GraphNodeRef.Empty;
     Index  = -1;
 }