Exemplo n.º 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);
    }
Exemplo n.º 2
0
    public INode CreateRandomSequencerTest()
    {
        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);
        RandomSequencerNode randomSequencerNode = factory.Create <RandomSequencerNode>(NodeType.RandomSequencer);
        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();

        randomSequencerNode.AddNode(actionNode1);
        randomSequencerNode.AddNode(actionNode2);
        decoratorNode.AddNode(actionNode3);
        randomSequencerNode.AddNode(decoratorNode);
        rootNode.AddNode(randomSequencerNode);
        return(rootNode);
    }