예제 #1
0
        public List <INodeItem> PickUpInOutItem(INodeParent item)
        {
            this.pickedUpItem = item;
            List <INodeItem> olditems = new List <INodeItem>();

            if (connectedNodes.ContainsKey(item))
            {
                List <INodeItem> needClear = new List <INodeItem>();
                for (int i = 0; i < connectedNodes[item].Count; i++)
                {
                    INodeItem nodeItem = connectedNodes[item][i];
                    needClear.Add(nodeItem);

                    INodeItem target = nodeItem.ConnectedNode;
                    connectedNodes[target.Body].Remove(target);
                    Debug.Log(connectedNodes[item][i].Detach());

                    olditems.Add(nodeItem);
                    olditems.Add(target);
                }

                for (int i = 0; i < needClear.Count; i++)
                {
                    connectedNodes[item].Remove(needClear[i]);
                }
            }
            return(olditems);
        }
예제 #2
0
    // This is just breadth-wise since I'm more familiar with that.
    public string ListChildren(int level)
    {
        StringBuilder sb = new StringBuilder();

        foreach (INodeChild item in Children)
        {
            sb.AppendLine(Enumerable.Repeat(" ", level));
            INodeParent itemParent = item as INodeParent;
            if (itemParent != null)
            {
                itemParent.ListChildren(++level);
            }
        }
        return(sb.ToString());
    }
예제 #3
0
        public void PutDownInOutItem(bool connected)
        {
            if (connected)
            {
                if (!connectedNodes.ContainsKey(pickedUpItem))
                {
                    connectedNodes[pickedUpItem] = new List <INodeItem>();
                }

                connectedNodes[pickedUpItem].Add(activeNode);

                if (!connectedNodes.ContainsKey(TargetNode.Body))
                {
                    connectedNodes[TargetNode.Body] = new List <INodeItem>();
                }

                connectedNodes[TargetNode.Body].Add(targetNode);
            }

            pickedUpItem = null;
            targetNode   = null;
            activeNode   = null;
        }
예제 #4
0
 public void ResetBodyTransform(INodeParent otherParent, Vector3 rPos, Vector3 rDir)
 {
     transform.position = otherParent.Trans.TransformPoint(rPos);
     transform.forward  = otherParent.Trans.TransformDirection(rDir);
 }
예제 #5
0
 public ParameterList(INodeParent parent, ParameterList source)
 {
     this.parent = parent;
     items.AddRange(source.items);
 }
예제 #6
0
 public ParameterList(INodeParent parent)
 {
     this.parent = parent;
 }