// Functions //--------------------------------------------------- //Update에서 호출하는 함수와 //LateUpdate에서 호출하는 함수 2개로 나뉜다. /// <summary> /// 이 함수를 Update에서 호출하자 /// 토큰이 없다면 null로 하되, 리턴값을 멤버로 가지고 있자 /// </summary> /// <param name="token"></param> /// <param name="fps"></param> /// <returns></returns> public UpdateToken AddRequest(UpdateToken token, int fps, float deltaTime) { //상태가 바뀌면 초기화를 해야한다. if (_state != STATE.Update) { #if UNITY_EDITOR Profiler.BeginSample("AddRequest > Reset"); #endif //_fps2Tokens.Clear(); foreach (KeyValuePair <int, TokenList> keyValuePair in _fps2Tokens) { keyValuePair.Value.Reset(deltaTime); } _state = STATE.Update; #if UNITY_EDITOR Profiler.EndSample(); #endif } fps = Mathf.Clamp(fps, MIN_FPS, MAX_FPS); if (token == null) { token = new UpdateToken(fps); } else { token.SetFPS(fps); } token.UpdateTime(deltaTime); token.ReadyToCalculate(); if (token.IsUpdatable()) { //업데이트될 수 있다면 토큰을 리스트에 넣자 if (_fps2Tokens.ContainsKey(fps)) { _fps2Tokens[fps].AddRequest(token); } else { TokenList newTokenList = new TokenList(fps); newTokenList.Reset(deltaTime); _fps2Tokens.Add(fps, newTokenList); newTokenList.AddRequest(token); //Debug.Log("New Token List : " + fps); } } return(token); }