Пример #1
0
 public void InvokeBeforeDecorators(BT bt)
 {
     foreach (var d in decorators)
     {
         d.OnBeforeNodeExecution(bt);
     }
 }
Пример #2
0
 public void InvokeAfterDecorators(BT bt, NodeState state)
 {
     foreach (var d in decorators)
     {
         d.OnAfterNodeExecution(bt, state);
     }
 }
Пример #3
0
        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));
        }
Пример #7
0
        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));
        }
Пример #9
0
 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);
 }
Пример #16
0
 public override NodeState Run(BT.BT bt)
 {
     executed = true;
     return(NodeState.Success);
 }
Пример #17
0
 public virtual void OnAfterNodeExecution(BT bt, NodeState state)
 {
 }
Пример #18
0
 public virtual void OnBeforeNodeExecution(BT bt)
 {
 }
Пример #19
0
 public virtual bool OnNodeCondition(BT bt)
 {
     return(true);
 }
Пример #20
0
 public override NodeState Run(BT.BT bt)
 {
     executed = true;
     return(NodeState.Failure);
 }
Пример #21
0
 public override NodeState Run(BT.BT bt)
 {
     return(default(NodeState));
 }
Пример #22
0
 public abstract NodeState Run(BT bt);