//the stucture of the Behaviour Tree private void BehaviourTree() { //create behvaiour tree stdTank = new BehaviourTree.Tree(); //creates and add the root node to the Tree Root root = stdTank.AddRoot(); //make root section stdTank.MakeSectionFor(root); seqEngageInCombat = stdTank.MakeSequence(); seqGetAmmo = stdTank.MakeSequence(); stdTank.AddToSection(seqEngageInCombat, seqGetAmmo); stdTank.EndSection(); //engege in combat Sequence stdTank.MakeSectionFor(seqEngageInCombat); seqToRange = stdTank.MakeSequence(); seqFire = stdTank.MakeSequence(); stdTank.AddToSection(seqToRange, seqFire); stdTank.EndSection(); //move into range for comabat Sequence stdTank.MakeSectionFor(seqToRange); actFindEnemy = stdTank.MakeAction(); actToRange = stdTank.MakeAction(); stdTank.AddToSection(actFindEnemy, actToRange); stdTank.EndSection(); //fire the turret Sequence stdTank.MakeSectionFor(seqFire); actAim = stdTank.MakeAction(); actIsVisible = stdTank.MakeAction(); actFire = stdTank.MakeAction(); stdTank.AddToSection(actAim, actIsVisible, actFire); stdTank.EndSection(); //get ammo Sequence stdTank.MakeSectionFor(seqGetAmmo); sucGetAmmo = stdTank.MakeSucceeder(); actMoveToAmmo = stdTank.MakeAction(); stdTank.AddToSection(actMoveToAmmo, sucGetAmmo); stdTank.EndSection(); //get Ammo Succeeder stdTank.MakeSectionFor(sucGetAmmo); repGetAmmo = stdTank.MakeRepeater(); stdTank.AddToSection(repGetAmmo); stdTank.EndSection(); //get ammmo Repeater stdTank.MakeSectionFor(repGetAmmo); actGetAmmo = stdTank.MakeAction(); stdTank.AddToSection(actGetAmmo); stdTank.EndSection(); SetConditions(); SetActions(); BT_Debug(); }
public void Node_Throws_Exception() { Mock <INode> node = TestHelper.Mock <INode>(new Exception()); Succeeder cud = new Succeeder(node.Object); TestHelper.AssertResult(cud, NodeStatus.Success); }
public void WhenChildReturnRunning_ReturnRunning() { var sut = new Succeeder <MockContext>(new MockBehaviour { ReturnStatus = BehaviourStatus.Running }); var behaviourStatus = sut.Tick(new MockContext()); Assert.That(behaviourStatus, Is.EqualTo(BehaviourStatus.Running)); }
public void WhenChildReturnFailure_ReturnSuccess() { var sut = new Succeeder <MockContext>(new MockBehaviour { ReturnStatus = BehaviourStatus.Failed }); var behaviourStatus = sut.Tick(new MockContext()); Assert.That(behaviourStatus, Is.EqualTo(BehaviourStatus.Succeeded)); }
public void Succeeder_SucessWhenChildFailure() { INode node = Substitute.For <INode>(); node.Tick().Returns(NodeStatus.Failure); Succeeder succeeder = new Succeeder(node); Assert.AreEqual(NodeStatus.Sucess, succeeder.Tick()); }
public void Succeeder() { var state = new State(); var test = 0; var routine = new Succeeder(new Conditional((_) => test < 50)); for (; test < 50; ++test) { Assert.Equal(RoutineStatus.Success, routine.Act(state)); state.Reset(); } test++; Assert.Equal(RoutineStatus.Success, routine.Act(state)); state.Reset(); Assert.Equal(RoutineStatus.Success, routine.Act(state)); state.Reset(); test = 1; Assert.Equal(RoutineStatus.Success, routine.Act(state)); state.Reset(); }
private Node MakeDecoratorNode(DecoratorNodeType decorator, uint childNodeID, uint extra = 0) { Node newNode, result; if (!m_nodeDic.TryGetValue(childNodeID, out result)) { return(null); // failed to get childNodeID } switch (decorator) { case DecoratorNodeType.Inverter: newNode = new Inverter(result); break; case DecoratorNodeType.Repeater: newNode = new Repeater(result, extra); break; case DecoratorNodeType.RepeatTillFail: newNode = new RepeatTillFail(result); break; case DecoratorNodeType.Limiter: newNode = new Limiter(result); break; case DecoratorNodeType.Succeeder: newNode = new Succeeder(result); break; default: return(null); // tried to create unknown decorator node } return(newNode); }
public void DrawInspector(Succeeder node) { EditorGUILayout.LabelField(new GUIContent("Succeeder"), TitleStyle); EditorGUILayout.Space (); string message = "Succeeder always returns a SUCCESS, no matter what its child returns."; EditorGUILayout.HelpBox(message, MessageType.Info); EditorGUILayout.HelpBox("Not yet implemented!", MessageType.Error); }
public void Node_Fails() { Succeeder cud = CreateNode(NodeStatus.Failure); TestHelper.AssertResult(cud, NodeStatus.Success); }
public void Node_Keeps_Running() { Succeeder cud = CreateNode(NodeStatus.Running); TestHelper.AssertResult(cud, NodeStatus.Success); }
public void Visit(Succeeder <TContext> obj) { PrintNode(obj); VisitChild(obj); }