public void InvokeBeforeDecorators(BT bt) { foreach (var d in decorators) { d.OnBeforeNodeExecution(bt); } }
public void InvokeAfterDecorators(BT bt, NodeState state) { foreach (var d in decorators) { d.OnAfterNodeExecution(bt, state); } }
public override NodeState Run(BT bt) { var toExecute = (runningNode == null) ? this.children : //if there is not node in running state execute all children this.children.SkipWhile((n) => n != runningNode); //else skip nodes foreach (var child in toExecute) { if (!child.InvokeConditionDecorators(bt)) //conditions not satisfied, skip this node { continue; } child.InvokeBeforeDecorators(bt); //invoke pre operations var state = child.Run(bt); child.InvokeAfterDecorators(bt, state); //invoke after operations if (state != NodeState.Failure) { if (state == NodeState.Running) { runningNode = child; } else { runningNode = null; } return(state); } } runningNode = null; return(NodeState.Failure); }
public override NodeState Run(BT bt) { if ((endTime - DateTime.Now).Seconds <= 0) { endTime = DateTime.Now.AddSeconds(seconds); return(NodeState.Success); } return(NodeState.Running); }
public void ConditionBool_Red() { BT.BT bt = new BT.BT(null); bt.BlackBoard.SetValue("foo", false); var dec = new BlackBoardBoolCondition("foo"); Assert.That(dec.OnNodeCondition(bt), Is.Not.EqualTo(true)); }
public void CoditionLess_Red() { BT.BT bt = new BT.BT(null); bt.BlackBoard.SetValue("foo", 0); bt.BlackBoard.SetValue("bar", 200); var dec = new BlackBoardCondition <IntCondition, int>("bar", "foo", ConditionType.Less); Assert.That(dec.OnNodeCondition(bt), Is.EqualTo(false)); }
public override NodeState Run(BT.BT bt) { if (++counter < 5) { return(NodeState.Running); } counter = 0; return(NodeState.Success); //NB success means that the Selector will be interrupted }
public void ConditionFromBlackboard_Green() { BT.BT bt = new BT.BT(null); bt.BlackBoard.SetValue("foo", 10); bt.BlackBoard.SetValue("bar", 10); var dec = new BlackBoardCondition <IntCondition, int>("foo", "bar", ConditionType.Equal); Assert.That(dec.OnNodeCondition(bt), Is.EqualTo(true)); }
public bool InvokeConditionDecorators(BT bt) { foreach (var d in decorators) { if (!d.OnNodeCondition(bt)) { return(false); } } return(true); }
public void SetValueAfterExecution_Green() { var root = new SequenceNode(); var bt = new BT.BT(root); var suc = new TaskSuccessNode(); suc.AppendDecorator(new SetValueAfterExecution("foo", () => 10)); //for example set target position root.Append(suc); bt.Run(); Assert.That(bt.BlackBoard.ReadValue <int>("foo"), Is.EqualTo(10)); }
public void Tag_Green() { var root = new SequenceNode(); var suc = new TaskSuccessNode(); suc.AppendDecorator(new Tag("foo")); root.Append(suc); var bt = new BT.BT(root); bt.Run(); Assert.That(bt.GetActiveTag(), Is.EqualTo("foo")); }
public void WriteOnFailure_Red() { var root = new SequenceNode(); var suc = new TaskSuccessNode(); suc.AppendDecorator(new SetValueOnFail("foo", () => 1)); root.Append(suc); BT.BT bt = new BT.BT(root); bt.BlackBoard.SetValue("foo", 0); Assert.That(bt.BlackBoard.ReadValue <int>("foo"), Is.EqualTo(0)); bt.Run(); Assert.That(bt.BlackBoard.ReadValue <int>("foo"), Is.EqualTo(0)); }
public void WriteOnFailure_Green() { var root = new SequenceNode(); var fail = new TaskFailureNode(); fail.AppendDecorator(new SetValueOnFail("foo", () => 1)); root.Append(fail); BT.BT bt = new BT.BT(root); bt.BlackBoard.SetValue("foo", 0); Assert.That(bt.BlackBoard.ReadValue <int>("foo"), Is.EqualTo(0)); bt.Run(); Assert.That(bt.BlackBoard.ReadValue <int>("foo"), Is.EqualTo(1)); }
public void ConditionConstant_Red() { var root = new SequenceNode(); var bt = new BT.BT(root); bt.BlackBoard.SetValue("foo", 10); var suc = new TaskSuccessNode(); suc.AppendDecorator(new BlackBoardConstantCondition <IntCondition, int>("foo", 10, ConditionType.Equal)); //for example set target position root.Append(suc); bt.Run(); Assert.That(suc.executed, Is.Not.EqualTo(false)); }
public override bool OnNodeCondition(BT.BT bt) { return(false); }
public override NodeState Run(BT.BT bt) { executed = true; return(NodeState.Success); }
public virtual void OnAfterNodeExecution(BT bt, NodeState state) { }
public virtual void OnBeforeNodeExecution(BT bt) { }
public virtual bool OnNodeCondition(BT bt) { return(true); }
public override NodeState Run(BT.BT bt) { executed = true; return(NodeState.Failure); }
public override NodeState Run(BT.BT bt) { return(default(NodeState)); }
public abstract NodeState Run(BT bt);