public void PerformTransition(fsmTransition transition)
    {
        if (transition == fsmTransition.DefaultTransition)
        {
            Debug.LogError("FSM ERROR: Cannot transition to the Default Transition!");
            return;
        }

        fsmStateID id = currentState.GetOutputState(transition);
        if (id == fsmStateID.DefaultStateID)
        {
            Debug.LogError("FSM ERROR: Current State cannot use provided transition!");
            return;
        }
	
        mCurrentStateID = id;
        foreach (FSMState state in mStates)
        {
            if (state.mStateID == currentStateID)
            {
                currentState.DoBeforeLeaving();

                mCurrentState = state;

                currentState.DoBeforeEntering();
                break;
            }
        }

    }
    public fsmStateID GetOutputState(fsmTransition transition)
    {
        if (mTransitionStateIDMap.ContainsKey(transition))
        {
            return mTransitionStateIDMap[transition];
        }

        return fsmStateID.DefaultStateID;
    }
    public void DeleteTransitionToState(fsmTransition transition)
    {
        if (transition == fsmTransition.DefaultTransition)
        {
            Debug.LogError("FSMState ERROR: Cannot Delete Transition on Default Transition!");
            return;
        }

        if (mTransitionStateIDMap.ContainsKey(transition))
        {
            mTransitionStateIDMap.Remove(transition);
            return;
        }

        Debug.LogError("FSMState ERROR: Transition to State not found! Please check your remove command is correct!");
    }
    public void AddTransitionToState(fsmTransition transition, fsmStateID stateID)
    {
        // Log error if the passed transition or state are incorrect
        if (transition == fsmTransition.DefaultTransition || stateID == fsmStateID.DefaultStateID)
        {
            Debug.LogError("FSMState ERROR: Transition or State are incorrect!");
            return;
        }

        if (mTransitionStateIDMap.ContainsKey(transition))
        {
            Debug.LogError("FSMState ERROR: That transition has already been used to direct to another state! Transition: " + transition.ToString());
            return;
        }

        mTransitionStateIDMap.Add(transition, stateID);
    }
Exemplo n.º 5
0
 public void FSMTransitionPassthrough(fsmTransition transition)
 {
     mBasicAgentFSM.PerformTransition(transition);
 }
Exemplo n.º 6
0
 public void FSMTransitionPassthrough(fsmTransition transition)
 {
     fsm.PerformTransition(transition);
 }