コード例 #1
0
        public bool WalkTo(Vector3 dst)
        {
            // 切换状态机后需要立即用到WalkMode
            // 所以不管状态机是否切换成功,都先设置WlakMode
            // 如果切换失败,再设置会原来的WalkMode
            EWalkMode oriWalkMode = mWalkMode;

            mWalkMode = EWalkMode.EWM_Dst;

            bool r;

            if (mIsWalking)
            {
                r = mMachine.CanReact((uint)EFSMEvent.DE_ResetWalk);
            }
            else
            {
                r = mMachine.CanReact((uint)EFSMEvent.DE_Walk);
            }

            if (r)
            {
                mDst   = dst;
                mDir   = (mDst - mOwnerTrans.position);
                mDir.y = 0;
                mDir.Normalize();
            }
            else
            {
                mWalkMode = oriWalkMode;
            }

            if (mIsWalking)
            {
                r = mMachine.React((uint)EFSMEvent.DE_ResetWalk);
            }
            else
            {
                r = mMachine.React((uint)EFSMEvent.DE_Walk);
            }
            //r = r || mbWalking;

            return(r);
        }
コード例 #2
0
        static int _m_CanReact(RealStatePtr L)
        {
            ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);


            xc.Machine __cl_gen_to_be_invoked = (xc.Machine)translator.FastGetCSObj(L, 1);


            try {
                {
                    uint fsmEvent = LuaAPI.xlua_touint(L, 2);

                    bool __cl_gen_ret = __cl_gen_to_be_invoked.CanReact(fsmEvent);
                    LuaAPI.lua_pushboolean(L, __cl_gen_ret);



                    return(1);
                }
            } catch (System.Exception __gen_e) {
                return(LuaAPI.luaL_error(L, "c# exception:" + __gen_e));
            }
        }