Exemplo n.º 1
0
 /// <summary>
 /// Adds the state machine transition.
 /// </summary>
 /// <param name="transition">Transition.</param>
 public void AddStateMachineTransition(IFSMTransition transition)
 {
     if (!mStateMachineTranstion.Contains(transition))
     {
         mStateMachineTranstion.Add(transition);
     }
 }
Exemplo n.º 2
0
 /// <summary>
 /// Removes the state machine transition.
 /// </summary>
 /// <param name="transition">Transition.</param>
 public void RemoveStateMachineTransition(IFSMTransition transition)
 {
     if (mStateMachineTranstion.Contains(transition))
     {
         mStateMachineTranstion.Remove(transition);
     }
 }
Exemplo n.º 3
0
        public IFSMTransition <TState, TTrigger>[] GetTransitionsWithTrigger(TTrigger trigger)
        {
            List <IFSMTransition <TState, TTrigger> > list = null;

            for (int i = 0; i < transitions.Count; i++)
            {
                IFSMTransition <TState, TTrigger> current = transitions[i];

                if (triggerComparator(current.trigger, trigger))
                {
                    if (list == null)
                    {
                        list = new List <IFSMTransition <TState, TTrigger> >();
                    }

                    list.Add(current);
                }
            }

            if (list == null)
            {
                return(null);
            }
            else
            {
                return(list.ToArray());
            }
        }
Exemplo n.º 4
0
 /// <summary>
 /// Update the fsm.
 /// </summary>
 public void Update()
 {
     if (mActiveState == null)
     {
         return;
     }
     for (int i = 0; i < mActiveState.stateTransitions.Count; ++i)
     {
         IFSMTransition transition = mActiveState.stateTransitions[i];
         if (transition == null)
         {
             continue;
         }
         if (transition.IsValid())
         {
             //1.exit current active state;
             mActiveState.OnExit();
             //2.get next state;
             mActiveState = transition.targetState;
             //3.handle tranition logic;
             transition.OnTransition();
             //4.execute new active state.
             if (mActiveState != null)
             {
                 mActiveState.OnEnter();
             }
             break;
         }
     }
     mActiveState.OnUpdate();
 }
Exemplo n.º 5
0
 public void MakeTransition(IFSMTransition <TState, TTrigger> transition)
 {
     if (ContainsTransition(transition.stateFrom, transition.trigger) == false)
     {
         transitions.Add(transition);
     }
 }
Exemplo n.º 6
0
 public virtual void RemoveStateTransition(IFSMTransition transition)
 {
     if (!mStateTransitions.Contains(transition))
     {
         return;
     }
     mStateTransitions.Remove(transition);
 }
Exemplo n.º 7
0
 public virtual void AddStateTransition(IFSMTransition transition)
 {
     if (mStateTransitions.Contains(transition))
     {
         return;
     }
     mStateTransitions.Add(transition);
 }
Exemplo n.º 8
0
        public void BreakAllTransitionRelatedTo(TState state)
        {
            for (int i = 0; i < transitions.Count; i++)
            {
                IFSMTransition <TState, TTrigger> current = transitions[i];

                if (stateComparator(current.stateFrom, state) && stateComparator(current.stateTo, state))
                {
                    transitions.RemoveAt(i);
                    i--;
                }
            }
        }
Exemplo n.º 9
0
        public IFSMTransition <TState, TTrigger> GetTransition(TState stateFrom, TTrigger trigger)
        {
            for (int i = 0; i < transitions.Count; i++)
            {
                IFSMTransition <TState, TTrigger> current = transitions[i];

                if (stateComparator(current.stateFrom, stateFrom) && triggerComparator(current.trigger, trigger))
                {
                    return(current);
                }
            }

            return(null);
        }
Exemplo n.º 10
0
        public void BreakTransition(TState stateFrom, TTrigger trigger)
        {
            IFSMTransition <TState, TTrigger> transition = GetTransition(stateFrom, trigger);

            transitions.Remove(transition);
        }
Exemplo n.º 11
0
 public void BreakTransition(IFSMTransition <TState, TTrigger> transition)
 {
     transitions.Remove(transition);
 }