Example #1
0
        public SkillFSMMachine AddTransition(IComparable fromState, IComparable toStete, IComparable command, Func <bool> testConditionFunction = null)
        {
            _states.TryGetValue(fromState, out var fromFsmState);
            _states.TryGetValue(toStete, out var toFsmState);

            if (fromFsmState != null && toFsmState != null)
            {
                SkillFSMTransition fSMTransition = new SkillFSMTransition(fromFsmState, toFsmState, testConditionFunction);
                AddTransition(fSMTransition, command);
            }
            else
            {
                Debug.LogWarning("Do not have fromState or toStete");
            }

            return(this);
        }
Example #2
0
        private void HandleTransitionComplete(SkillFSMTransition transition)
        {
            CurrentTransition.OnComplete -= HandleTransitionComplete;

            PreviousState = CurrentState;
            CurrentState  = transition.ToState;

            CurrentTransition   = null;
            isInitialisingState = true;

            PreviousState.Exit();
            OnStateChange?.Invoke(PreviousState, CurrentState);

            CurrentState.Enter();
            OnStateEnter?.Invoke(CurrentState);

            isInitialisingState = false;
        }
Example #3
0
        public SkillFSMMachine AddTransition(SkillFSMTransition fSMTransition, IComparable command = null)
        {
            if (fSMTransition == null)
            {
                return(this);
            }
            if (!_states.ContainsValue(fSMTransition.FromState))
            {
                return(this);
            }
            if (!_states.ContainsValue(fSMTransition.ToState))
            {
                return(this);
            }

            command = (command == null) ? fSMTransition.ToState.Name : command;

            _transitions[fSMTransition.FromState]          = _transitions.ContainsKey(fSMTransition.FromState) ? _transitions[fSMTransition.FromState] : new Dictionary <IComparable, SkillFSMTransition>();
            _transitions[fSMTransition.FromState][command] = fSMTransition;

            return(this);
        }
Example #4
0
 public void OnStateTransition(SkillFSMTransition transition)
 {
 }