예제 #1
0
        private IEnumerator Start()
        {
            IFsmManager fsmManager = GameFrameworkEntry.GetModule <IFsmManager>();

            ProcedureBase[] procedures = new ProcedureBase[m_ProcedureClassNames.Count];
            for (int i = 0; i < m_ProcedureClassNames.Count; i++)
            {
                Type procedureType = Utility.Assembly.GetTypeWithinLoadedAssemblies(m_ProcedureClassNames[i]);
                if (procedureType == null)
                {
                    throw new GameFrameworkException(string.Format("Can not find procedure type '{0}'.", m_ProcedureClassNames[i]));
                }

                procedures[i] = Activator.CreateInstance(procedureType) as ProcedureBase;
                if (procedures[i] == null)
                {
                    throw new GameFrameworkException(string.Format("Can not create procedure instance '{0}'.", m_ProcedureClassNames[i]));
                }

                if (m_ProcedureClassNames[i] == m_FirstProcedureClassName)
                {
                    m_FirstProcedure = procedures[i];
                }
            }

            m_ProcedureManager.Initialize(fsmManager, procedures);

            yield return(new WaitForEndOfFrame());

            StartProcedure();
        }
예제 #2
0
 /// <summary>
 /// 初始化流程管理器。
 /// </summary>
 /// <param name="fsmManager">有限状态机管理器。</param>
 /// <param name="procedures">流程管理器包含的流程。</param>
 public void Register(params ProcedureBase[] procedures)
 {
     m_FsmManager = GameFrameEntry.GetModule <FsmManager>();
     if (m_FsmManager == null)
     {
         throw new GameFrameworkException("FSM manager is invalid.");
     }
     m_ProcedureFsm = m_FsmManager.CreateFsm(this, procedures);
 }
        /// <summary>
        /// 初始化流程管理器。
        /// </summary>
        /// <param name="fsmManager">有限状态机管理器。</param>
        /// <param name="procedures">流程管理器包含的流程。</param>
        public void Initialize(IFsmManager fsmManager, params ProcedureBase[] procedures)
        {
            if (fsmManager == null)
            {
                throw new GameFrameworkException("FSM manager is invalid.");
            }

            m_ProcedureFsm = fsmManager.CreateFsm(this, procedures);
        }
예제 #4
0
        public void Initialize(IFsmManager fsmManager, params ActionBase[] actions)
        {
            if (null == fsmManager)
            {
                throw new GameFrameworkException("FSM manager is invalid.");
            }

            m_fsmManager = fsmManager;
            m_ActionFsm  = m_fsmManager.CreateFsm(this, actions);
        }
예제 #5
0
        public void Initialize(IFsmManager fsmManager, params ProcessBase[] processs)
        {
            if (fsmManager == null)
            {
                throw new Exception("FSM manager无效");
            }

            m_FsmManager = fsmManager;
            m_ProcessFsm = m_FsmManager.CreateFsm(this, processs);
        }
예제 #6
0
 /// <summary>
 /// 游戏框架组件初始化
 /// </summary>
 protected override void Awake()
 {
     base.Awake();
     this.m_FsmManager = GameFrameworkEntry.GetModule <IFsmManager>();
     if (this.m_FsmManager == null)
     {
         Log.Fatal("FSM manager is invalid.");
         return;
     }
 }
예제 #7
0
        /// <summary>
        /// 初始化流程管理器。
        /// </summary>
        /// <param name="fsmManager">有限状态机管理器。</param>
        /// <param name="procedures">流程管理器包含的流程。</param>
        public void Initialize(IFsmManager fsmManager)
        {
            if (fsmManager == null)
            {
                Logger.LogError("FSM manager is invalid.");
            }

            m_FsmManager   = fsmManager;
            m_ProcedureFsm = m_FsmManager.CreateFsm <IProcedureManager>(this);
        }
예제 #8
0
파일: FsmComponent.cs 프로젝트: huangjk/Ash
        /// <summary>
        /// 游戏框架组件初始化。
        /// </summary>
        protected override void Awake()
        {
            base.Awake();

            m_FsmManager = AshEntry.GetModule <IFsmManager>();
            if (m_FsmManager == null)
            {
                Log.Fatal("FSM manager is invalid.");
                return;
            }
        }
        protected override void Awake()
        {
            base.Awake();

            m_FsmManager = GameFrameworkEntry.GetModule <IFsmManager>();
            if (m_FsmManager == null)
            {
                Log.Fatal("[FsmComponent.Awake] FSM manager is invalid.");
                return;
            }
        }
예제 #10
0
        /// <summary>
        /// 关闭并清理流程管理器。
        /// </summary>
        public void OnDestroy()
        {
            if (fsmManager != null)
            {
                if (fsm != null)
                {
                    fsmManager.DestroyFsm(fsm);
                    fsm = null;
                }

                fsmManager = null;
            }
        }
예제 #11
0
        /// <summary>
        /// 关闭并清理流程管理器。
        /// </summary>
        internal override void Shutdown()
        {
            if (m_FsmManager != null)
            {
                if (m_ProcedureFsm != null)
                {
                    m_FsmManager.DestroyFsm <IProcedureManager>();
                    m_ProcedureFsm = null;
                }

                m_FsmManager = null;
            }
        }
예제 #12
0
        /// <summary>
        /// 关闭并清理流程管理器。
        /// </summary>
        public override void OnDispose()
        {
            if (_fsmManager != null)
            {
                if (_stageFsm != null)
                {
                    _fsmManager.DestroyFsm(_stageFsm);
                    _stageFsm = null;
                }

                _fsmManager = null;
            }
        }
        /// <summary>
        /// 关闭并清理状态管理器
        /// </summary>
        public void ShutDown()
        {
            if (m_FsmManager != null)
            {
                if (m_StateFsm != null)
                {
                    m_FsmManager.DestroyFsm(m_StateFsm);
                    m_StateFsm = null;
                }

                m_FsmManager = null;
            }
        }
예제 #14
0
        public override bool Shutdown()
        {
            if (m_FsmManager != null)
            {
                if (m_ProcedureFsm != null)
                {
                    m_FsmManager.DestroyFsm(m_ProcedureFsm);
                    m_ProcedureFsm = null;
                }

                m_FsmManager = null;
            }
            return(base.Shutdown());
        }
예제 #15
0
        public void Init(Player player, IFsmManager FSM, params PlayerStateBase[] states)
        {
            if (FSM == null)

            {
                throw new GameFrameworkException("FSM manager is invalid.");
            }



            m_FsmManager = FSM;

            fsm = m_FsmManager.CreateFsm(player.name.Value, player, states);
        }
        /// <summary>
        /// 初始化状态管理器
        /// </summary>
        /// <param name="fsmManager">有限状态机管理器.</param>
        /// <param name="states">状态管理器所包含的状态.</param>
        public void Initialize(IFsmManager fsmManager, CharacterControllerBase owner, params CharacterStateBase[] states)
        {
            if (fsmManager == null)
            {
                throw new GameFrameworkException("FSM manager is invalid.");
            }

            if (owner == null)
            {
                throw new GameFrameworkException("FSM Owner is invalid.");
            }

            this.Owner = owner;

            m_FsmManager = fsmManager;
            m_StateFsm   = m_FsmManager.CreateFsm(this, states);
        }
예제 #17
0
        /// <summary>
        /// 初始化流程管理器。
        /// </summary>
        /// <param name="fsmManager">有限状态机管理器。</param>
        /// <param name="gameStages">流程管理器包含的流程。</param>
        public StageManager(GameContext context)
        {
            var fsmManager = context.GetModule <IFsmManager>();

            if (fsmManager == null)
            {
                throw new GameException("FSM manager is invalid.");
            }

            _fsmManager = fsmManager;

            var stages = AssemblyCollection
                         .GetTypes()
                         .Where(t => t.IsSubclassOf(typeof(StageBase)))
                         .Select(t => (StageBase)Activator.CreateInstance(t))
                         .ToArray();

            _stageFsm = _fsmManager.CreateFsm(this, stages);
        }
        private IEnumerator Start()
        {
            IFsmManager fsmManager = GameFrameworkEntry.GetModule <IFsmManager>();

            ProcedureBase[] procedures = new ProcedureBase[m_AvailableProcedureTypeNames.Length];
            for (int i = 0; i < m_AvailableProcedureTypeNames.Length; i++)
            {
                Type procedureType = Utility.Assembly.GetTypeWithinLoadedAssemblies(m_AvailableProcedureTypeNames[i]);
                if (procedureType == null)
                {
                    Log.Error("Can not find procedure type '{0}'.", m_AvailableProcedureTypeNames[i]);
                    yield break;
                }

                procedures[i] = Activator.CreateInstance(procedureType) as ProcedureBase;
                if (procedures[i] == null)
                {
                    Log.Error("Can not create procedure instance '{0}'.", m_AvailableProcedureTypeNames[i]);
                    yield break;
                }

                if (m_EntranceProcedureTypeName == m_AvailableProcedureTypeNames[i])
                {
                    m_EntranceProcedure = procedures[i];
                }
            }

            if (m_EntranceProcedure == null)
            {
                Log.Error("Entrance procedure is invalid.");
                yield break;
            }

            m_ProcedureManager.Initialize(fsmManager, procedures);

            yield return(new WaitForEndOfFrame());

            m_ProcedureManager.StartProcedure(m_EntranceProcedure.GetType());
        }
예제 #19
0
파일: FsmTest.cs 프로젝트: huangjk/Ash
        public IEnumerator FsmTestWithEnumeratorPasses()
        {
            // Use the Assert class to test conditions.
            // yield to skip a frame

            AshUnityEntry.New();
            IFsmManager fsmManager = AshEntry.GetModule <IFsmManager>();


            FsmOwer fsmOwer = new FsmOwer();
            Status1 status1 = new Status1();
            Status2 status2 = new Status2();

            //fsmManager.CreateFsm<FsmOwer>( fsmOwer, status1, status2);
            fsmManager.CreateFsm <FsmOwer>("Test", fsmOwer, status1, status2);

            Log.Debug("有限状态机的数量时{0}", fsmManager.Count);
            IFsm <FsmOwer> fsm = fsmManager.GetFsm <FsmOwer> ("Test");

            Assert.IsNotNull(fsm);

            VarString v = new VarString();

            v.SetValue("Variable data");             //			v.Value = "Variable data";
            fsm.SetData("data", v);

            fsm.Start <Status1> ();
            Assert.AreEqual(fsm.CurrentState, status1);

            yield return(new WaitForSeconds(1));

            fsm.FireEvent(this, 1, "userData");
//			Assert.AreEqual (fsm.CurrentState, status2);

            yield return(null);
        }
예제 #20
0
 /// <summary>
 /// 初始化流程管理器的新实例。
 /// </summary>
 public ProcedureManager()
 {
     m_FsmManager   = null;
     m_ProcedureFsm = null;
 }
예제 #21
0
 /// <summary>
 /// 初始化流程管理器的新实例。
 /// </summary>
 public ProcedureManager(IFsmManager fsmManager)
 {
     this.fsmManager = fsmManager;
 }
예제 #22
0
 public ActionManager()
 {
     m_fsmManager = null;
     m_ActionFsm  = null;
 }
 public CharacterMotion()
 {
     m_FsmManager = null;
     m_StateFsm   = null;
 }