/// <summary> /// /// </summary> /// <param name="step"></param> /// <param name="newTrack"></param> /// <param name="transcen"></param> /// <param name="reverse"></param> /// <returns>cmd 를 소모해야하는지 여부. true일 경우 큐에서 날린다. false일 경우 날리지 않고 다음 프레임에 계속 체크해본다</returns> bool _StepMove(int step, Data.Track newTrack, Data.TransitionScenario transcen, int newstep = -1, bool reverse = false) { //Debug.Log(string.Format("m_curTrackStep : {0}, step : {1}", m_curTrackStep, step)); if (m_curTrackStep == step) // 동일한 step으로 진행하는 요청이 들어온 경우엔 무시한다. { Debug.Log("[LibSequentia] same step"); return(true); } // 현재 진행중인 요청이 stepmove고, 한번 더 진행이 가능한 경우에는 따로 요청을 늘리지 않는다. (자연 -> 강제 전환으로 바꾸는 것임) var stepMoveReq = m_reqQueue.Count > 0 ? m_reqQueue.Peek() as StepMoveRequest : null; if (stepMoveReq != null && stepMoveReq.MoveOnceMore(reverse)) { return(true); } if (stepMoveReq == null) // 현재 진행중인 요청이 stepmove가 아닌 경우에만 새 명령을 추가한다. { var newreq = new StepMoveRequest(this); //var newstep = m_newTrackIsOn? m_newTrackStep : m_curTrackStep; //newstep += reverse? -1 : 1; newreq.Setup(step, newstep, reverse, newTrack, transcen); m_reqQueue.Enqueue(newreq); return(true); } else { // stepmove가 맞긴 맞는데 위 moveoncemore 를 실패한 경우라면, 이 명령은 소모해서는 안됨 return(false); } }
/// <summary> /// /// </summary> /// <param name="step"></param> /// <param name="newTrack"></param> /// <param name="transcen"></param> /// <param name="reverse"></param> /// <returns>cmd 를 소모해야하는지 여부. true일 경우 큐에서 날린다. false일 경우 날리지 않고 다음 프레임에 계속 체크해본다</returns> bool _StepMove(int step, Data.Track newTrack, Data.TransitionScenario transcen, int newstep = -1, bool reverse = false) { //Debug.Log(string.Format("m_curTrackStep : {0}, step : {1}", m_curTrackStep, step)); if (m_curTrackStep == step) // 동일한 step으로 진행하는 요청이 들어온 경우엔 무시한다. { Debug.Log("[LibSequentia] same step"); return true; } // 현재 진행중인 요청이 stepmove고, 한번 더 진행이 가능한 경우에는 따로 요청을 늘리지 않는다. (자연 -> 강제 전환으로 바꾸는 것임) var stepMoveReq = m_reqQueue.Count > 0 ? m_reqQueue.Peek() as StepMoveRequest : null; if (stepMoveReq != null && stepMoveReq.MoveOnceMore(reverse)) { return true; } if (stepMoveReq == null) // 현재 진행중인 요청이 stepmove가 아닌 경우에만 새 명령을 추가한다. { var newreq = new StepMoveRequest(this); //var newstep = m_newTrackIsOn? m_newTrackStep : m_curTrackStep; //newstep += reverse? -1 : 1; newreq.Setup(step, newstep, reverse, newTrack, transcen); m_reqQueue.Enqueue(newreq); return true; } else { // stepmove가 맞긴 맞는데 위 moveoncemore 를 실패한 경우라면, 이 명령은 소모해서는 안됨 return false; } }