Ejemplo n.º 1
0
		//新たに状態を追加
		public void AddFSMState(FSMState fsmState){
			//引数の確認
			if(fsmState == null){
				Debug.LogError("FSM ERROR: Null reference is not allowed");
			}

			//状態が存在しないときの条件式
			if(fsmStates.Count == 0)
			{
				fsmStates.Add(fsmState);
				currentState = fsmState;
				currentStateID = fsmState.ID;
				return;
			}
			
			//状態が存在する場合の条件式
			foreach(FSMState state in fsmStates)
			{
				if(state.ID == fsmState.ID)
				{
					Debug.LogError("FSM ERROR: 既に存在する状態をリストに追加しようとしています。");
					return;
				}
			}
			
			//状態をリストに追加する
			fsmStates.Add (fsmState);
		}
Ejemplo n.º 2
0
		//このメソッドで遷移させる
		public void RunTransition(Transition trans)
		{
			//引数の確認
			if(trans == Transition.None)
			{
				Debug.LogError("FSM ERROR: Null遷移は不正です。");
				return;
			}
			
			//currentStateが指定の遷移についての状態を持つか
			FSMStateID id = currentState.GetOutputState (trans);
			if(id == FSMStateID.None)
			{
				Debug.LogError("FSM ERROR: 現在の状態はこの遷移が指定する状態を持ちません。");
				return;
			}
			
			//currentStateIDとcurrentStateを更新
			currentStateID = id;
			foreach(FSMState state in fsmStates)
			{
				if(state.ID == currentStateID)
				{
					currentState = state;
					break;
				}
			}
		}
Ejemplo n.º 3
0
		[SetUp] public void Init()
		{
			fsmState = Substitute.For<FSMState> ();
			map = new Dictionary<Transition, FSMStateID> ();
		}