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); }
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)); }