private NodeRoot GetNodeRoot(NodeValue nodeValue) { NodeRoot nodeRoot = null; switch (nodeValue.NodeType) { case NodeType.Select: // 选择节点 nodeRoot = new NodeSelect(); break; case NodeType.Sequence: // 顺序节点 nodeRoot = new NodeSequence(); break; case NodeType.Decorator: // 修饰节点 nodeRoot = new NodeDecorator(); break; case NodeType.Random: // 随机节点 nodeRoot = new NodeRandom(); break; case NodeType.Parallel: // 并行节点 nodeRoot = new NodeParallel(); break; case NodeType.Condition: // 条件节点 nodeRoot = GetLeafNode(nodeValue); break; case NodeType.Action: // 行为节点 nodeRoot = GetLeafNode(nodeValue); break; } return(nodeRoot); }
/// <summary> /// Initializes the graph instance, setting default styles /// and creating a small sample graph. /// </summary> protected virtual void InitializeGraph() { // create the manager for the folding operations FoldingManager foldingManager = new FoldingManager(); // create a view foldingView = foldingManager.CreateFoldingView(); // and set it to the GraphControl graphControl.Graph = foldingView.Graph; // decorate the behavior of nodes NodeDecorator nodeDecorator = graphControl.Graph.GetDecorator().NodeDecorator; // adjust the insets so that labels are considered nodeDecorator.InsetsProviderDecorator.SetImplementationWrapper( delegate(INode node, INodeInsetsProvider insetsProvider) { if (insetsProvider != null) { InsetsD insets = insetsProvider.GetInsets(node); return(new LabelInsetsProvider(insets)); } else { return(new LabelInsetsProvider()); } }); //Constrain group nodes to at least the size of their labels nodeDecorator.SizeConstraintProviderDecorator.SetImplementationWrapper( (node, oldImpl) => new LabelSizeConstraintProvider(oldImpl)); fixedGroupNodeLayout = graphControl.Graph.MapperRegistry.CreateMapper <INode, RectD?>("NodeLayouts"); ReadSampleGraph(); incrementalNodes.UnionWith(graphControl.Graph.Nodes); }