예제 #1
0
        public void AddNodes(NodeComponent nodeComponent, TreeViewItem parentItem, IList <TreeViewItem> rows, bool isChildren = true)
        {
            if (nodeTreesMap.TryGetValue(nodeComponent, out var childItem))
            {
                var tree = new HierarchyRefNodeTree(childItem, -1);
                if (isChildren)
                {
                    parentItem.AddChild(tree);
                }
                else
                {
                    parentItem.parent.AddChild(tree);
                }
                rows.Add(tree);
                return;
            }
            var drawer = HierarchyDrawer.FindDrawer(nodeComponent.GetType());

            drawer.manager = this;
            //Create Node Tree
            childItem = drawer.CreateNodeTree(nodeComponent);
            if (isChildren)
            {
                AddSummary(nodeComponent.comment, childItem, parentItem, rows);
                parentItem.AddChild(childItem);
            }
            else
            {
                AddSummary(nodeComponent.comment, childItem, parentItem.parent, rows);
                parentItem.parent.AddChild(childItem);
            }
            rows.Add(childItem);
            nodeTreesMap[nodeComponent] = childItem;
            drawer.AddChildNodes(nodeComponent, childItem, rows);
        }
예제 #2
0
 public bool AddNodeTree(MemberData member, TreeViewItem parentTree, IList <TreeViewItem> rows, bool isChildren = true)
 {
     if (member.isAssigned && member.IsTargetingPinOrNode)
     {
         if (member.targetType == MemberData.TargetType.FlowNode)
         {
             Node n = member.GetTargetNode();
             if (n != null)
             {
                 AddNodes(n, parentTree, rows, isChildren);
                 return(true);
             }
         }
         else if (member.targetType == MemberData.TargetType.FlowInput)
         {
             Node n    = member.GetTargetNode();
             var  flow = member.Invoke(null) as FlowInput;
             if (n != null && flow != null)
             {
                 bool flag = false;
                 if (!flowPortsMap.TryGetValue(flow, out var flowTree))
                 {
                     flag     = true;
                     flowTree = new HierarchyPortTree(
                         n,
                         flow,
                         uNodeEditorUtility.GetUIDFromString($"{n.GetHashCode()}:FI={member.startName}"),
                         -1,
                         $"{n.GetNodeName()} ( {ObjectNames.NicifyVariableName(flow.name)} )")
                     {
                         icon = uNodeEditorUtility.GetTypeIcon(n.GetNodeIcon()) as Texture2D
                     };
                     flowPortsMap[flow] = flowTree;
                 }
                 if (isChildren)
                 {
                     parentTree.AddChild(flowTree);
                 }
                 else
                 {
                     parentTree.parent.AddChild(flowTree);
                 }
                 rows.Add(flowTree);
                 if (flag)
                 {
                     var drawer = HierarchyDrawer.FindDrawer(n.GetType());
                     drawer.manager = this;
                     drawer.AddChildNodes(n, flowTree, rows);
                 }
                 return(true);
             }
         }
     }
     return(false);
 }