コード例 #1
0
        public void PlanUpdateInThread()
        {
            if (mNavGroup.crowd.IsDisposed)
            {
                return;
            }

            //这里进入critter的dll,然后再调用recast的dll
            //目前有关crowd的方法还在研究中,没有使用
            mNavGroup.crowd.Update(threadUpdateTimer);

            for (int i = 0; i < mPlanners.Length; i++)
            {
                NavState aPlan = mPlanners[i];

                if (aPlan == null || aPlan.Update())
                {
                    continue;
                }

                aPlan.Exit();
                if (!aPlan.Enter())
                {
                    RemoveAgent(i);
                }
            }
        }
コード例 #2
0
        //单独刷新一个plan的外部方法(这是一种很危险的方法,尽可能不要用)
        public void UpdateSinglePlan(int index)
        {
            NavState aPlan = mPlanners[index];

            if (aPlan == null || aPlan.Update())
            {
                return;
            }

            aPlan.Exit();
            if (!aPlan.Enter())
            {
                RemoveAgent(index);
            }
        }
コード例 #3
0
        //更新:寻路的计算更新循环
        //这个更新是需要找一个unity上层的类来调用进行不断的更新的
        public void MakeUpdate()
        {
            for (int i = 0; i < mPlanners.Length; i++)
            {
                NavState aMove = mMovers[i];

                if (aMove == null || aMove.Update())
                {
                    continue;
                }

                aMove.Exit();
                if (!aMove.Enter())
                {
                    RemoveAgent(i);
                }
            }
        }
コード例 #4
0
ファイル: NavPlanner.cs プロジェクト: BXZR/FNavigation
        public override bool Update()
        {
            //根据不同的移动计划进行不同的移动
            HandleState();

            if ((theAgent.flags & NavFlag.PlannerFailed) != 0)
            {
                //Debug.LogError(theAgent.transform.name + ": Planner failed.");
                Suspend();
            }
            //在这里进行移动计划的移动,并根据返回值判断
            else if (!mPlanner.Update())
            {
                theAgent.flags |= NavFlag.PlannerFailed;
                //Debug.LogError(theAgent.transform.name + ": Planner update failed: " + mPlanner);
            }
            return(true);
        }