public Sequencer <BlackBoard> BuildTree(BlackBoard blackboard) { Sequencer <BlackBoard> rootNode = new Sequencer <BlackBoard>(blackboard); Iddle iddleNode = new Iddle(blackboard); rootNode.AddChild(iddleNode); Sequencer <BlackBoard> mining = new Sequencer <BlackBoard>(blackboard); rootNode.AddChild(mining); GoToMine goMineNode = new GoToMine(blackboard); Mine mineNode = new Mine(blackboard); mining.AddChild(goMineNode); mining.AddChild(mineNode); Sequencer <BlackBoard> depositing = new Sequencer <BlackBoard>(blackboard); rootNode.AddChild(depositing); GoHome goHomeNode = new GoHome(blackboard); Deposit depoNode = new Deposit(blackboard); depositing.AddChild(goHomeNode); depositing.AddChild(depoNode); return(rootNode); }
private void BuildTree() { root = new Selector(); Sequencer seq1 = new Sequencer(); Randomizer rand1 = new Randomizer(); root.AddChild(rand1); root.AddChild(seq1); Condition con1 = new Condition(nearDogs); BAction pact = new BAction(Play); BAction wact = new BAction(Wander); BAction ract = new BAction(Run); BAction sact = new BAction(Sleep); seq1.AddChild(con1); seq1.AddChild(pact); rand1.AddChild(wact); rand1.AddChild(ract); // rand1.AddChild(sact); root.AddChild(new BAction(Wander)); }
void BuildTree() { Sequencer idleSeq = new Sequencer(); Sequencer pathSeq = new Sequencer(); Sequencer shootSeq = new Sequencer(); InverterGadget invCon = new InverterGadget(); invCon.SetChild(new Condition(ShouldTgt)); idleSeq.AddChild(invCon); idleSeq.AddChild(new BAction(Idle)); invCon = new InverterGadget(); invCon.SetChild(new Condition(InTgtDist)); pathSeq.AddChild(invCon); pathSeq.AddChild(new BAction(Path)); shootSeq.AddChild(new Condition(InSights)); shootSeq.AddChild(new BAction(Shoot)); root.AddChild(idleSeq); root.AddChild(pathSeq); root.AddChild(shootSeq); root.AddChild(new BAction(Idle)); }
public void TestSequencerSucceedsIfNoneFail() { var sequencer = new Sequencer("", 1, 1); sequencer.AddChild(TestingResources.GetRunRunSuccess()); sequencer.AddChild(TestingResources.GetRunRunSuccess()); var actual = new List <BehaviorState>(); var expected = new List <BehaviorState>(); expected.Add(BehaviorState.Running); expected.Add(BehaviorState.Running); expected.Add(BehaviorState.Success); sequencer.Start().Subscribe((x) => actual.Add(x)); Assert.AreEqual(expected, actual); }
public void TestSequencerCompletesOnFirstFail() { var sequencer = new Sequencer("", 1, 1); sequencer.AddChild(TestingResources.GetRunRunSuccess()); sequencer.AddChild(TestingResources.GetRunRunFail()); //all of these should be ignored //TODO: Should probably check if these are run anyways // through the Concat operation sequencer.AddChild(TestingResources.GetRunRunFail()); sequencer.AddChild(TestingResources.GetRunRunFail()); var actual = new List <BehaviorState>(); var expected = new List <BehaviorState>(); expected.Add(BehaviorState.Running); expected.Add(BehaviorState.Fail); sequencer.Start().Subscribe((x) => actual.Add(x)); Assert.AreEqual(expected, actual); }