Example #1
0
    public Node Create(NodeType type)
    {
        Node node = null;

        switch (type)
        {
        case NodeType.Root:
            node = new RootNode();
            break;

        case NodeType.Action:
            node = new ActionNode();
            break;

        case NodeType.Sequencer:
            node = new SequencerNode();
            break;

        case NodeType.Selector:
            node = new SelectorNode();
            break;

        case NodeType.Random:
            node = new RandomNode();
            break;

        case NodeType.RandomSelector:
            node = new RandomSelectorNode();
            break;

        case NodeType.RandomSequencer:
            node = new RandomSequencerNode();
            break;

        case NodeType.Decorator:
            node = new DecoratorNode();
            break;

        case NodeType.Condition:
            node = new ConditionNode();
            break;

        case NodeType.ConditionWhile:
            node = new ConditionWhileNode();
            break;

        default:
            Debug.Assert(false, "未定義のノードタイプ");
            break;
        }

        if (node != null)
        {
            node.Init(idSeed);
            Register(idSeed, node);
            idSeed += 1;
        }

        return(node);
    }
Example #2
0
    public INode CreateRandomSelectorTest()
    {
        NodeFactory      factory          = FactoryManager.Instance.GetFactory <NodeFactory>(FactoryType.Node);
        ConditionFactory conditionFactory = FactoryManager.Instance.GetFactory <ConditionFactory>(FactoryType.Condition);
        DecoratorFactory decoratorFactory = FactoryManager.Instance.GetFactory <DecoratorFactory>(FactoryType.Decorator);

        var rootNode = factory.Create <RootNode>(NodeType.Root);
        RandomSelectorNode randomSelectorNode = factory.Create <RandomSelectorNode>(NodeType.RandomSelector);
        DecoratorNode      decoratorNode      = factory.Create <DecoratorNode>(NodeType.Decorator);
        FalseDecorator     not = decoratorFactory.Create <FalseDecorator>(DecoratorType.False);

        decoratorNode.SetDecoratable(not);
        var actionNode1 = CreateSampleActionNode1();
        var actionNode2 = CreateSampleActionNode1();
        var actionNode3 = CreateSampleActionNode2();

        randomSelectorNode.AddNode(actionNode1);
        randomSelectorNode.AddNode(actionNode2);
        decoratorNode.AddNode(actionNode3);
        randomSelectorNode.AddNode(decoratorNode);
        rootNode.AddNode(randomSelectorNode);
        return(rootNode);
    }
 private RandomSelector <TContext> MapRandomSelectorNode(RandomSelectorNode node)
 {
     return(new RandomSelector <TContext>(node.Name, node.Children.Select(Map).ToArray(), node.RandomProvider));
 }