public void Tick(float InDeltaTime) { while (true) { if (NextStateName != null && NextStateName.Length > 0) { var NextState = GetState(NextStateName); var LocalNextStateName = NextStateName; var LocalCurStateName = string.Empty; NextStateName = string.Empty; if (CurState != null) { CurState.EndState(LocalNextStateName); LocalCurStateName = CurState.GetStateName(); } CurState = NextState; CurState.BeginState(LocalCurStateName); } CurState.Tick(InDeltaTime); if (NextStateName == null || 0 >= NextStateName.Length) { break; } } }
public void AddState(string InStateName, JMState InState) { if (States.ContainsKey(InStateName)) { Debug.LogError("Contain State" + InStateName); } InState.SetStateName(InStateName); States.Add(InStateName, InState); }