public void StartDefault() { if (IsRunning) { return; } if (defaultState == null) { return; } Type type = defaultState.GetType(); if (!typeof(FSMState <T>).IsAssignableFrom(type)) { throw new ArgumentException("State type is invalid" + type.FullName); } FSMState <T> state = GetState(type); if (state == null) { return; } currentState = state; currentState.OnEnter(this); }
public void Start <TState>() where TState : FSMState <T> { if (IsRunning) { return; } var state = GetState <TState>(); if (state == null) { return; } currentState = state; currentState.OnEnter(this); }
public void ChangeState(Type stateType) { if (currentState == null) { Utility.DebugError("Current state is invalid"); } FSMState <T> state = null; state = GetState(state.GetType()); if (state == null) { Utility.DebugError("FSM" + currentState.ToString() + " can not change state to " + state.ToString() + " which is not exist"); } currentState.OnExit(this); currentState = state; currentState.OnEnter(this); }
public void ChangeState(Type stateType) { if (currentState == null) { throw new ArgumentNullException("Current state is invalid"); } FSMState <T> state = null; //state = GetState(state.GetType()); state = GetState(stateType); if (state == null) { throw new ArgumentNullException("FSM" + currentState.ToString() + " can not change state to " + state.ToString() + " which is not exist"); } currentState.OnExit(this); currentState = state; currentState.OnEnter(this); }
/// <summary> /// 进入状态 /// </summary> public void Start(Type stateType) { if (IsRunning) { return; } if (stateType == null) { return; } if (!typeof(FSMState <T>).IsAssignableFrom(stateType)) { Utility.DebugError("State type is invalid" + stateType.FullName); return; } FSMState <T> state = GetState(stateType); if (state == null) { return; } currentState = state; currentState.OnEnter(this); }