Beispiel #1
0
            protected override EBTStatus update(Agent pAgent, EBTStatus childStatus)
            {
                EBTStatus s = childStatus;
                Debug.Check(this.m_activeChildIndex < this.m_children.Count);

                // Keep going until a child behavior says its running.
                for (; ;)
                {
                    if (s == EBTStatus.BT_RUNNING)
                    {
                        int childIndex = this.m_set[this.m_activeChildIndex];
                        BehaviorTask pBehavior = this.m_children[childIndex];
                        s = pBehavior.exec(pAgent);
                    }

                    // If the child succeeds, or keeps running, do the same.
                    if (s != EBTStatus.BT_FAILURE)
                    {
                        return s;
                    }

                    // Hit the end of the array, job done!
                    ++this.m_activeChildIndex;

                    if (this.m_activeChildIndex >= this.m_children.Count)
                    {
                        return EBTStatus.BT_FAILURE;
                    }

                    s = EBTStatus.BT_RUNNING;
                }
            }
            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;
            }
Beispiel #3
0
        public static bool UpdateTransitions(Agent pAgent, BehaviorNode node, List<Transition> transitions, ref int nextStateId, EBTStatus result)
        {
            bool bTransitioned = false;

            if (transitions != null)
            {
                for (int i = 0; i < transitions.Count; ++i)
                {
                    Transition transition = transitions[i];

                    if (transition.Evaluate(pAgent))
                    {
                        nextStateId = transition.TargetStateId;
                        Debug.Check(nextStateId != -1);

                        //transition actions
                        transition.ApplyEffects(pAgent, Effector.EPhase.E_BOTH);

            #if !BEHAVIAC_RELEASE
                        if (Config.IsLoggingOrSocketing)
                        {
                            BehaviorTask.CHECK_BREAKPOINT(pAgent, node, "transition", EActionResult.EAR_none);
                        }
            #endif
                        bTransitioned = true;

                        break;
                    }
                }
            }

            return bTransitioned;
        }
Beispiel #4
0
            protected override EBTStatus decorate(EBTStatus status)
            {
                Debug.Check(this.GetNode() is DecoratorLog);
                DecoratorLog pDecoratorLogNode = (DecoratorLog)(this.GetNode());
                behaviac.Debug.LogWarning(string.Format("DecoratorLogTask:{0}\n", pDecoratorLogNode.m_message));

                return status;
            }
Beispiel #5
0
        private string getResultOptionStr(EBTStatus status)
        {
            switch (status)
            {
                case EBTStatus.BT_SUCCESS: return "EBTStatus.BT_SUCCESS";
                case EBTStatus.BT_FAILURE: return "EBTStatus.BT_FAILURE";
                case EBTStatus.BT_RUNNING: return "EBTStatus.BT_RUNNING";
            }

            return "EBTStatus.BT_INVALID";
        }
            protected override EBTStatus decorate(EBTStatus status)
            {
                if (status == EBTStatus.BT_FAILURE)
                {
                    return EBTStatus.BT_SUCCESS;
                }

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

                return status;
            }
            protected override EBTStatus update(Agent pAgent, EBTStatus childStatus)
            {
                //Debug.Check(this.m_children.Count == 2);
                for(int i = 0; i < this.m_children.Count; ++i)
                {
                    BehaviorTask pBehavior = this.m_children[i];
                    EBTStatus s = pBehavior.exec(pAgent);

                    // If the child succeeds, succeeds
                    if (s == EBTStatus.BT_SUCCESS)
                    {
                        return s;
                    }

                    Debug.Check(s == EBTStatus.BT_FAILURE);
                }

                return EBTStatus.BT_FAILURE;
            }
Beispiel #8
0
        protected override void load(int version, string agentType, List<property_t> properties)
        {
            base.load(version, agentType, properties);

            for (int i = 0; i < properties.Count; ++i)
            {
                property_t p = properties[i];
                if (p.name == "Method")
                {
                    if (!string.IsNullOrEmpty(p.value))
                    {
                        this.m_method = AgentMeta.ParseMethod(p.value);
                    }
                }
                else if (p.name == "ResultOption")
                {
                    if (p.value == "BT_INVALID")
                    {
                        m_resultOption = EBTStatus.BT_INVALID;
                    }
                    else if (p.value == "BT_FAILURE")
                    {
                        m_resultOption = EBTStatus.BT_FAILURE;
                    }
                    else if (p.value == "BT_RUNNING")
                    {
                        m_resultOption = EBTStatus.BT_RUNNING;
                    }
                    else
                    {
                        m_resultOption = EBTStatus.BT_SUCCESS;
                    }
                }
                else if (p.name == "ResultFunctor")
                {
                    if (p.value[0] != '\0')
                    {
                        this.m_resultFunctor = AgentMeta.ParseMethod(p.value); ;
                    }
                }
            }
        }
            protected override EBTStatus update(Agent pAgent, EBTStatus childStatus)
            {
                bool bFirst = true;

                Debug.Check(this.m_activeChildIndex < this.m_children.Count);

                // Keep going until a child behavior says its running.
                for (; ; )
                {
                    EBTStatus s = childStatus;
                    if (!bFirst || s == EBTStatus.BT_RUNNING)
                    {
                        Debug.Check(this.m_status == EBTStatus.BT_INVALID ||
                            this.m_status == EBTStatus.BT_RUNNING);

                        BehaviorTask pBehavior = this.m_children[this.m_activeChildIndex];
                        s = pBehavior.exec(pAgent);
                    }

                    bFirst = false;

                    // If the child succeeds, or keeps running, do the same.
                    if (s != EBTStatus.BT_FAILURE)
                    {
                        return s;
                    }

                    // Hit the end of the array, job done!
                    ++this.m_activeChildIndex;
                    if (this.m_activeChildIndex >= this.m_children.Count)
                    {
                        return EBTStatus.BT_FAILURE;
                    }

                    if (!this.CheckPredicates(pAgent))
                    {
                        return EBTStatus.BT_FAILURE;
                    }
                }
            }
Beispiel #10
0
            protected override EBTStatus decorate(EBTStatus status)
            {
                if (this.m_n > 0)
                {
                    this.m_n--;

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

                    return EBTStatus.BT_FAILURE;
                }

                if (this.m_n == -1)
                {
                    return EBTStatus.BT_FAILURE;
                }

                Debug.Check(this.m_n == 0);

                return EBTStatus.BT_SUCCESS;
            }
Beispiel #11
0
        public EBTStatus Execute(Agent pAgent, EBTStatus childStatus)
        {
            EBTStatus result = EBTStatus.BT_SUCCESS;

            if (this.m_method != null)
            {
                if (this.m_resultOption != EBTStatus.BT_INVALID)
                {
                    this.m_method.Run(pAgent);

                    result = this.m_resultOption;
                }
                else
                {
                    if (this.m_resultFunctor != null)
                    {
                        IValue returnValue = this.m_resultFunctor.GetIValue(pAgent, this.m_method);

                        result = ((TValue<EBTStatus>)returnValue).value;
                    }
                    else
                    {
                        IValue returnValue = this.m_method.GetIValue(pAgent);

                        Debug.Check(returnValue is TValue<EBTStatus>, "method's return type is not EBTStatus");

                        result = ((TValue<EBTStatus>)returnValue).value;
                    }
                }
            }
            else
            {
                result = this.update_impl(pAgent, childStatus);
            }

            return result;
        }
Beispiel #12
0
        public EBTStatus SelectorUpdate(Agent pAgent, EBTStatus childStatus, ref int activeChildIndex, List<BehaviorTask> children)
        {
            EBTStatus s = childStatus;

            for (; ;)
            {
                Debug.Check(activeChildIndex < children.Count);

                if (s == EBTStatus.BT_RUNNING)
                {
                    BehaviorTask pBehavior = children[activeChildIndex];
                    if (this.CheckIfInterrupted(pAgent))
                    {
                        return EBTStatus.BT_FAILURE;
                    }

                    s = pBehavior.exec(pAgent);
                }

                // If the child fails, or keeps running, do the same.
                if (s != EBTStatus.BT_FAILURE)
                {
                    return s;
                }

                // Hit the end of the array, job done!
                ++activeChildIndex;

                if (activeChildIndex >= children.Count)
                {
                    return EBTStatus.BT_FAILURE;
                }

                s = EBTStatus.BT_RUNNING;
            }
        }
Beispiel #13
0
 protected virtual void onexit(Agent pAgent, EBTStatus status)
 {
 }
 protected override EBTStatus update_current(Agent pAgent, EBTStatus childStatus)
 {
     return(base.update_current(pAgent, childStatus));
 }
Beispiel #15
0
        public void onexit_action(Agent pAgent, EBTStatus status)
        {
            this.onexit(pAgent, status);

            if (this.m_node != null)
            {
                Effector.EPhase phase = Effector.EPhase.E_SUCCESS;

                if (status == EBTStatus.BT_FAILURE)
                {
                    phase = Effector.EPhase.E_FAILURE;
                }
                else
                {
                    Debug.Check(status == EBTStatus.BT_SUCCESS);
                }

                this.m_node.ApplyEffects(pAgent, phase);

                this.m_node.UnInstantiatePars(pAgent);
            }

            #if !BEHAVIAC_RELEASE

            if (Config.IsLoggingOrSocketing)
            {
                //BEHAVIAC_PROFILE_DEBUGBLOCK("Debug", true);
                if (status == EBTStatus.BT_SUCCESS)
                {
                    BehaviorTask.CHECK_BREAKPOINT(pAgent, this.m_node, "exit", EActionResult.EAR_success);
                }
                else
                {
                    BehaviorTask.CHECK_BREAKPOINT(pAgent, this.m_node, "exit", EActionResult.EAR_failure);
                }
            }

            #endif
        }
 protected override EBTStatus update_impl(Agent pAgent, EBTStatus childStatus)
 {
     ((ObjAgent)pAgent).SetCurBehavior(this.method_p0);
     return(EBTStatus.BT_SUCCESS);
 }
        public EBTStatus resume(Agent pAgent, EBTStatus status)
        {
            EBTStatus s = base.resume_branch(pAgent, status);

            return(s);
        }
Beispiel #18
0
        protected override EBTStatus update_current(Agent pAgent, EBTStatus childStatus)
        {
            Debug.Check(this.m_node != null);
            Debug.Check(this.m_node is BehaviorTree);
            BehaviorTree tree = (BehaviorTree)this.m_node;

            EBTStatus status = EBTStatus.BT_RUNNING;

            if (tree.IsFSM)
            {
                status = this.update(pAgent, childStatus);
            }
            else
            {
                status = base.update_current(pAgent, childStatus);
            }

            return status;
        }
 protected override EBTStatus update_impl(Agent pAgent, EBTStatus childStatus)
 {
     ((ObjAgent)pAgent).PlayAnimation(this.method_p0, this.method_p1, this.method_p2, this.method_p3);
     return(EBTStatus.BT_SUCCESS);
 }
Beispiel #20
0
 public virtual void Clear()
 {
     this.m_status = EBTStatus.BT_INVALID;
     this.node     = null;
     this.id       = -1;
 }
Beispiel #21
0
 protected override void onexit(Agent pAgent, EBTStatus s)
 {
 }
Beispiel #22
0
 protected override EBTStatus update_impl(Agent pAgent, EBTStatus childStatus)
 {
     return(((ObjAgent)pAgent).IsFollowOtherPlayer());
 }
 protected override EBTStatus update_impl(Agent pAgent, EBTStatus childStatus)
 {
     ((ObjAgent)pAgent).TerminateMove();
     return(EBTStatus.BT_SUCCESS);
 }
Beispiel #24
0
 protected override EBTStatus update_impl(Agent pAgent, EBTStatus childStatus)
 {
     return(((ObjAgent)pAgent).PlayDeadAgeAction());
 }
Beispiel #25
0
 protected override EBTStatus decorate(EBTStatus status)
 {
     return(status);
 }
 protected override EBTStatus update_impl(Agent pAgent, EBTStatus childStatus)
 {
     return(((ObjAgent)pAgent).CanMove());
 }
Beispiel #27
0
        //~BehaviorTask()
        //{
        //}
        protected virtual EBTStatus update_current(Agent pAgent, EBTStatus childStatus)
        {
            EBTStatus s = this.update(pAgent, childStatus);

            return s;
        }
Beispiel #28
0
 protected override EBTStatus update_impl(Agent pAgent, EBTStatus childStatus)
 {
     return(((ObjAgent)pAgent).IsCurWayPointStartPoint());
 }
Beispiel #29
0
        protected override void onexit(Agent pAgent, EBTStatus s)
        {
            //Debug.Check(this.m_node != null);
            //this.m_node.UnInstantiatePars(pAgent);

            pAgent.LogReturnTree(this.GetName());
            base.onexit(pAgent, s);
        }
        protected virtual EBTStatus update_current(Agent pAgent, EBTStatus childStatus)
        {
            EBTStatus s = this.update(pAgent, childStatus);

            return(s);
        }
 protected virtual void onexit(Agent pAgent, EBTStatus status)
 {
 }
        public EBTStatus exec(Agent pAgent, EBTStatus childStatus)
        {
#if !BEHAVIAC_RELEASE
            Debug.Check(this.m_node == null || this.m_node.IsValid(pAgent, this),
                        string.Format("Agent In BT:{0} while the Agent used for: {1}", this.m_node.GetAgentType(), pAgent.GetClassTypeName()));

            string classStr    = (this.m_node != null ? this.m_node.GetClassNameString() : "BT");
            int    nodeId      = (this.m_node != null ? this.m_node.GetId() : -1);
            string taskClassid = string.Format("{0}[{1}]", classStr, nodeId);

            AutoProfileBlockSend profiler_block = new AutoProfileBlockSend(taskClassid, pAgent);
#endif//#if !BEHAVIAC_RELEASE
            bool bEnterResult = false;

            if (this.m_status == EBTStatus.BT_RUNNING)
            {
                bEnterResult = true;
            }
            else
            {
                //reset it to invalid when it was success/failure
                this.m_status = EBTStatus.BT_INVALID;
                bEnterResult  = this.onenter_action(pAgent);
            }

            if (bEnterResult)
            {
#if !BEHAVIAC_RELEASE
                if (Config.IsLoggingOrSocketing)
                {
                    string btStr = BehaviorTask.GetTickInfo(pAgent, this, "update");

                    //empty btStr is for internal BehaviorTreeTask
                    if (!string.IsNullOrEmpty(btStr))
                    {
                        LogManager.Instance.Log(pAgent, btStr, EActionResult.EAR_none, LogMode.ELM_tick);
                    }
                }
#endif
                bool bValid = this.CheckParentUpdatePreconditions(pAgent);

                if (bValid)
                {
                    this.m_status = this.update_current(pAgent, childStatus);
                }
                else
                {
                    this.m_status = EBTStatus.BT_FAILURE;

                    if (this.GetCurrentTask() != null)
                    {
                        this.update_current(pAgent, EBTStatus.BT_FAILURE);
                    }
                }

                if (this.m_status != EBTStatus.BT_RUNNING)
                {
                    //clear it

                    this.onexit_action(pAgent, this.m_status);

                    //this node is possibly ticked by its parent or by the topBranch who records it as currrent node
                    //so, we can't here reset the topBranch's current node
                }
                else
                {
                    BranchTask tree = this.GetTopManageBranchTask();

                    if (tree != null)
                    {
                        tree.SetCurrentTask(this);
                    }
                }
            }
            else
            {
                this.m_status = EBTStatus.BT_FAILURE;
            }

#if !BEHAVIAC_RELEASE
            profiler_block.Close();
#endif

            return(this.m_status);
        }
Beispiel #33
0
 protected override EBTStatus update_impl(Agent pAgent, EBTStatus childStatus)
 {
     return(((ObjAgent)pAgent).MoveToSkillTarget());
 }
 protected override void onexit(Agent pAgent, EBTStatus status)
 {
     //this.m_currentTask = null;
 }
 public void SetStatus(EBTStatus s)
 {
     this.m_status = s;
 }
 protected override EBTStatus update_impl(Agent pAgent, EBTStatus childStatus)
 {
     ((ObjAgent)pAgent).PlayHeroActSound(this.method_p0);
     return(EBTStatus.BT_SUCCESS);
 }
        public EBTStatus exec(Agent pAgent)
        {
            EBTStatus childStatus = EBTStatus.BT_RUNNING;

            return(this.exec(pAgent, childStatus));
        }
Beispiel #38
0
 protected override EBTStatus update_impl(Agent pAgent, EBTStatus childStatus)
 {
     return(((ObjAgent)pAgent).HasEnemyBuildingAndEnemyBuildingWillAttackSelf(this.method_p0));
 }
        /*
         * called when the child's tick returns success or failure.
         * please note, it is not called if the child's tick returns running
         */

        protected abstract EBTStatus decorate(EBTStatus status);
 protected override EBTStatus update_impl(Agent pAgent, EBTStatus childStatus)
 {
     ((ObjAgent)pAgent).SetIsAttackByEnemyHero(this.method_p0);
     return(EBTStatus.BT_SUCCESS);
 }
Beispiel #41
0
        public EBTStatus exec(Agent pAgent, EBTStatus childStatus)
        {
            #if !BEHAVIAC_RELEASE
            Debug.Check(this.m_node == null || this.m_node.IsValid(pAgent, this),
                        string.Format("Agent In BT:{0} while the Agent used for: {1}", this.m_node.GetAgentType(), pAgent.GetClassTypeName()));
            #endif//#if !BEHAVIAC_RELEASE
            bool bEnterResult = false;

            if (this.m_status == EBTStatus.BT_RUNNING)
            {
                bEnterResult = true;
            }
            else
            {
                //reset it to invalid when it was success/failure
                this.m_status = EBTStatus.BT_INVALID;
                bEnterResult = this.onenter_action(pAgent);
            }

            if (bEnterResult)
            {
            #if !BEHAVIAC_RELEASE

                if (Config.IsLoggingOrSocketing)
                {
                    string btStr = BehaviorTask.GetTickInfo(pAgent, this, "update");

                    //empty btStr is for internal BehaviorTreeTask
                    if (!string.IsNullOrEmpty(btStr))
                    {
                        LogManager.Instance.Log(pAgent, btStr, EActionResult.EAR_none, LogMode.ELM_tick);
                    }
                }

            #endif
                bool bValid = this.CheckParentUpdatePreconditions(pAgent);

                if (bValid)
                {
                    this.m_status = this.update_current(pAgent, childStatus);
                }
                else
                {
                    this.m_status = EBTStatus.BT_FAILURE;

                    if (this.GetCurrentTask() != null)
                    {
                        this.update_current(pAgent, EBTStatus.BT_FAILURE);
                    }
                }

                if (this.m_status != EBTStatus.BT_RUNNING)
                {
                    //clear it

                    this.onexit_action(pAgent, this.m_status);

                    //this node is possibly ticked by its parent or by the topBranch who records it as currrent node
                    //so, we can't here reset the topBranch's current node
                }
                else
                {
                    BranchTask tree = this.GetTopManageBranchTask();

                    if (tree != null)
                    {
                        tree.SetCurrentTask(this);
                    }
                }
            }
            else
            {
                this.m_status = EBTStatus.BT_FAILURE;
            }

            return this.m_status;
        }
Beispiel #42
0
            protected override EBTStatus update(Agent pAgent, EBTStatus childStatus)
            {
                Debug.Check(childStatus == EBTStatus.BT_RUNNING);

                Debug.Check(this.GetNode() is Condition);
                Condition pConditionNode = (Condition)(this.GetNode());

                bool ret = pConditionNode.Evaluate(pAgent);

                return ret ? EBTStatus.BT_SUCCESS : EBTStatus.BT_FAILURE;
            }
Beispiel #43
0
 public void SetStatus(EBTStatus s)
 {
     this.m_status = s;
 }
Beispiel #44
0
            protected override EBTStatus update(Agent pAgent, EBTStatus childStatus)
            {
                Debug.Check(childStatus == EBTStatus.BT_RUNNING);
                Debug.Check(this.m_node is WaitFramesState, "node is not an WaitFramesState");
                WaitFramesState pStateNode = (WaitFramesState)this.m_node;

                if (Workspace.Instance.FrameSinceStartup - this.m_start + 1 >= this.m_frames)
                {
                    pStateNode.Update(pAgent, out this.m_nextStateId);
                    return EBTStatus.BT_SUCCESS;
                }

                return EBTStatus.BT_RUNNING;
            }
Beispiel #45
0
 protected virtual EBTStatus update(Agent pAgent, EBTStatus childStatus)
 {
     return EBTStatus.BT_SUCCESS;
 }
Beispiel #46
0
        protected override void load(int version, string agentType, List<property_t> properties)
        {
            base.load(version, agentType, properties);

            foreach (property_t p in properties)
            {
                if (p.name == "Method")
                {
                    if (!string.IsNullOrEmpty(p.value))
                    {
                        this.m_method = Action.LoadMethod(p.value);
                    }//if (p.value[0] != '\0')
                }
                else if (p.name == "ResultOption")
                {
                    if (p.value == "BT_INVALID")
                    {
                        m_resultOption = EBTStatus.BT_INVALID;
                    }
                    else if (p.value == "BT_FAILURE")
                    {
                        m_resultOption = EBTStatus.BT_FAILURE;
                    }
                    else if (p.value == "BT_RUNNING")
                    {
                        m_resultOption = EBTStatus.BT_RUNNING;
                    }
                    else
                    {
                        m_resultOption = EBTStatus.BT_SUCCESS;
                    }
                }
                else if (p.name == "ResultFunctor")
                {
                    if (p.value[0] != '\0')
                    {
                        this.m_resultFunctor = Action.LoadMethod(p.value);
                    }
                }
                else if (p.name == "PreconditionFailResult")
                {
                    if (p.value == "BT_FAILURE")
                    {
                        m_resultPreconditionFail = EBTStatus.BT_FAILURE;
                    }
                    else if (p.value == "BT_BT_SUCCESS")
                    {
                        m_resultPreconditionFail = EBTStatus.BT_SUCCESS;
                    }
                    else
                    {
                        Debug.Check(false);
                    }
                }
                else
                {
                    //Debug.Check(0, "unrecognised property %s", p.name);
                }
            }
        }
Beispiel #47
0
        public EBTStatus resume(Agent pAgent, EBTStatus status)
        {
            EBTStatus s = base.resume_branch(pAgent, status);

            return s;
        }
Beispiel #48
0
            protected override EBTStatus update(Agent pAgent, EBTStatus childStatus)
            {
                Debug.Check(this.GetNode() is Action, "node is not an Action");
                Action pActionNode = (Action)(this.GetNode());

                if (!this.CheckPredicates(pAgent))
                {
                    return pActionNode.m_resultPreconditionFail;
                }

                EBTStatus result = EBTStatus.BT_SUCCESS;

                if (pActionNode.m_method != null)
                {
                    ParentType pt = pActionNode.m_method.GetParentType();
                    Agent pParent = pAgent;
                    if (pt == ParentType.PT_INSTANCE)
                    {
                        pParent = Agent.GetInstance(pActionNode.m_method.GetInstanceNameString(), pParent.GetContextId());
                        Debug.Check(pParent != null || Utils.IsStaticClass(pActionNode.m_method.GetInstanceNameString()));
                    }

                    int nodeId = this.GetId();
                    SetNodeId(nodeId);

                    object returnValue = pActionNode.m_method.run(pParent, pAgent);

                    if (pActionNode.m_resultOption != EBTStatus.BT_INVALID)
                    {
                        result = pActionNode.m_resultOption;
                    }
                    else if (pActionNode.m_resultFunctor != null)
                    {
                        ParentType pt1 = pActionNode.m_resultFunctor.GetParentType();
                        Agent pParentCheckResult = pAgent;
                        if (pt1 == ParentType.PT_INSTANCE)
                        {
                            pParentCheckResult = Agent.GetInstance(pActionNode.m_resultFunctor.GetInstanceNameString(), pParent.GetContextId());
                            Debug.Check(pParentCheckResult != null || Utils.IsStaticClass(pActionNode.m_resultFunctor.GetInstanceNameString()));
                        }

                        result = (EBTStatus)pActionNode.m_resultFunctor.run(pParentCheckResult, pAgent, returnValue);
                    }
                    else
                    {
                        Debug.Check(returnValue is EBTStatus, "method's return type is not EBTStatus");
                        result = (EBTStatus)returnValue;
                    }

                    ClearNodeId();
                }
                else
                {
                    result = pActionNode.update_impl(pAgent, childStatus);
                }

                return result;
            }
Beispiel #49
0
        protected override EBTStatus update(Agent pAgent, EBTStatus childStatus)
        {
            Debug.Check(this.m_node != null);
            Debug.Check(this.m_root != null);

            if (childStatus != EBTStatus.BT_RUNNING)
            {
                return childStatus;
            }

            EBTStatus status = EBTStatus.BT_INVALID;

            status = base.update(pAgent, childStatus);

            Debug.Check(status != EBTStatus.BT_INVALID);

            return status;
        }
Beispiel #50
0
 protected override EBTStatus update_impl(Agent pAgent, EBTStatus childStatus)
 {
     return(((ObjAgent)pAgent).CanUseSkill(this.method_p0));
 }
Beispiel #51
0
        protected override EBTStatus update_impl(Agent pAgent, EBTStatus childStatus)
        {
            uint objID = (uint)pAgent.GetVariable(1128863647u);

            return(((ObjAgent)pAgent).IsVisible(objID));
        }
 protected virtual EBTStatus update(Agent pAgent, EBTStatus childStatus)
 {
     return(EBTStatus.BT_SUCCESS);
 }
        protected override EBTStatus update(Agent pAgent, EBTStatus childStatus)
        {
            if (childStatus != EBTStatus.BT_RUNNING)
            {
                return childStatus;
            }

            if (!this.m_bTriggered)
            {
                this.m_bTriggered = this.CheckPredicates(pAgent);
            }

            if (this.m_bTriggered)
            {
                if (this.m_root == null)
                {
                    return EBTStatus.BT_SUCCESS;
                }

                EBTStatus status = base.update(pAgent, childStatus);

                return status;
            }

            return EBTStatus.BT_RUNNING;
        }
 protected override EBTStatus update_impl(Agent pAgent, EBTStatus childStatus)
 {
     return(((ObjAgent)pAgent).IsOverTower());
 }
 protected override EBTStatus decorate(EBTStatus status)
 {
     return status;
 }
 protected override EBTStatus update_impl(Agent pAgent, EBTStatus childStatus)
 {
     ((ObjAgent)pAgent).UseGoHomeSkill();
     return(EBTStatus.BT_SUCCESS);
 }
Beispiel #57
0
 protected override void onexit(Agent pAgent, EBTStatus s)
 {
 }
Beispiel #58
0
 protected override EBTStatus update_impl(Agent pAgent, EBTStatus childStatus)
 {
     ((ObjAgent)pAgent).NotifySelfCampSelfBeAttacked(this.method_p0);
     return(EBTStatus.BT_SUCCESS);
 }
Beispiel #59
0
 public Action()
 {
     m_resultOption = EBTStatus.BT_INVALID;
     m_resultPreconditionFail = EBTStatus.BT_FAILURE;
 }
Beispiel #60
0
        protected override EBTStatus update_impl(Agent pAgent, EBTStatus childStatus)
        {
            SkillSlotType variable = (SkillSlotType)((int)pAgent.GetVariable((uint)0x6c745b));

            return(((ObjAgent)pAgent).RealUseSkill(variable));
        }