public uint CreateActionNode(ActionNode.Do func) { ActionNode newNode = new ActionNode(func); newNode.SetID(++m_nodeID); uint a = newNode.GetID(); m_nodeDic.Add(a, newNode); return(a); }
STreeNode GetTreeNode(Node node) { STreeNode mine = new STreeNode(); var nodeName = node.ToString(); // leaf node if (nodeName == "ActionNode") { ActionNode a = (ActionNode)node; mine.id = a.GetID(); mine.name = a.GetFunction().GetMethodInfo().Name; mine.state = a.NodeState; mine.Type = "ActionNode"; } // decorator node else if (nodeName == "Inverter" || nodeName == "Repeater" || nodeName == "RepeatTillFail" || nodeName == "Limiter" || nodeName == "Succeeder") { DecoratorNode d = (DecoratorNode)node; mine.id = d.GetID(); mine.name = d.ToString(); mine.state = d.NodeState; mine.Type = "DecoratorNode"; mine.children = new List <STreeNode>() { GetTreeNode(d.ChildNode) }; } // composite node else if (nodeName == "Selector" || nodeName == "Sequence") { CompositeNode c = (CompositeNode)node; mine.id = c.GetID(); mine.name = c.ToString(); mine.state = c.NodeState; mine.Type = "CompositeNode"; mine.children = new List <STreeNode>(); foreach (Node childNode in c.ChildNodeList) { mine.children.Add(GetTreeNode(childNode)); } } return(mine); }