Exemple #1
0
    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);
    }
Exemple #2
0
        /// <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);
        }