예제 #1
0
            protected override EBTStatus decorate(EBTStatus status)
            {
                if (this.m_n > 0)
                {
                    this.m_n--;
                }

                if (this.m_n == 0)
                {
                    return(EBTStatus.BT_SUCCESS);
                }

                Debug.Check(this.GetNode() is DecoratorLoopUntil);
                DecoratorLoopUntil pDecoratorLoopUntil = (DecoratorLoopUntil)(this.GetNode());

                if (pDecoratorLoopUntil.m_until)
                {
                    if (status == EBTStatus.BT_SUCCESS)
                    {
                        return(EBTStatus.BT_SUCCESS);
                    }
                }
                else
                {
                    if (status == EBTStatus.BT_FAILURE)
                    {
                        return(EBTStatus.BT_FAILURE);
                    }
                }

                return(EBTStatus.BT_RUNNING);
            }
예제 #2
0
            protected override EBTStatus decorate(EBTStatus status)
            {
                if (base.m_n > 0)
                {
                    base.m_n--;
                }
                if (base.m_n == 0)
                {
                    return(EBTStatus.BT_SUCCESS);
                }
                DecoratorLoopUntil node = (DecoratorLoopUntil)base.GetNode();

                if (node.m_until)
                {
                    if (status == EBTStatus.BT_SUCCESS)
                    {
                        return(EBTStatus.BT_SUCCESS);
                    }
                }
                else if (status == EBTStatus.BT_FAILURE)
                {
                    return(EBTStatus.BT_FAILURE);
                }
                return(EBTStatus.BT_RUNNING);
            }
예제 #3
0
			protected override EBTStatus decorate(EBTStatus status)
			{
				if (this.m_n > 0)
				{
					this.m_n--;
				}
				if (this.m_n == 0)
				{
					return EBTStatus.BT_SUCCESS;
				}
				DecoratorLoopUntil decoratorLoopUntil = (DecoratorLoopUntil)base.GetNode();
				if (decoratorLoopUntil.m_until)
				{
					if (status == EBTStatus.BT_SUCCESS)
					{
						return EBTStatus.BT_SUCCESS;
					}
				}
				else if (status == EBTStatus.BT_FAILURE)
				{
					return EBTStatus.BT_FAILURE;
				}
				return EBTStatus.BT_RUNNING;
			}