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