public void SequenceNode() { TestAction action1 = new TestAction(Status.Failed); TestAction action2 = new TestAction(Status.Success); var subTree = new BehaviourTree.Builder() .Do(action1) .Do(action2) .Build(); new BehaviourTree.Builder() .Sequence(subTree) .Build() .Start(); Assert.AreEqual(true, action1.Started); Assert.AreEqual(false, action2.Started); }
public void NestedConditionNode() { TestAction action1 = new TestAction(Status.Failed); TestAction action2 = new TestAction(Status.Success); var positiveBranch1 = new BehaviourTree.Builder().Do(action1).Build(); var negativeBranch2 = new BehaviourTree.Builder().Do(action2).Build(); var nestedCondition = new BehaviourTree.Builder() .Condition(() => false, positiveBranch1, negativeBranch2) .Build(); new BehaviourTree.Builder() .Condition(() => true, nestedCondition, null) .Build() .Start(); Assert.AreEqual(false, action1.Started); Assert.AreEqual(true, action2.Started); }
private static void Main() { BehaviourTree positiveBranch = new BehaviourTree.Builder() .Do(new WriteLineAction(new WriteLineOptions { Message = "Успех!" })) .Do(new WriteLineAction(new WriteLineOptions { Message = "Повторюсь: Успех!" })) .Build(); BehaviourTree negativeBranch = new BehaviourTree.Builder() .Do(new WriteLineAction(new WriteLineOptions { Message = "Неуспех!" })) .Build(); BehaviourTree subTree = new BehaviourTree.Builder() .Do(new ConsoleCommandAction(new ConsoleOptions { Command = "ping ok.ru" })) .Do(new ConsoleCommandAction(new ConsoleOptions { Command = "ping vk.com" })) .Build(); new BehaviourTree.Builder() .Do(new ConsoleCommandAction(new ConsoleOptions { Command = "ping google.com" })) .Condition(IsVkComEqualsMailRu, positiveBranch, negativeBranch) .Do(new ConsoleCommandAction(new ConsoleOptions { Command = "ping yandex.ru" })) .Sequence(subTree) .Build() .Start(); Console.ReadKey(); }